Welcome to the main channel on the development of MoarVM, a virtual machine for NQP and Rakudo (moarvm.org). This channel is being logged for historical purposes.
Set by lizmat on 24 May 2021.
00:02 reportable6 left 00:03 reportable6 joined 01:21 nativecallable6 left, coverable6 left, committable6 left, bloatable6 left, notable6 left, shareable6 left, quotable6 left, linkable6 left, unicodable6 left, bisectable6 left, tellable6 left, reportable6 left, evalable6 left, squashable6 left, statisfiable6 left, greppable6 left, benchable6 left, releasable6 left, sourceable6 left 01:22 unicodable6 joined, statisfiable6 joined, greppable6 joined, releasable6 joined, bisectable6 joined, tellable6 joined, shareable6 joined, coverable6 joined 01:23 quotable6 joined, evalable6 joined, benchable6 joined, sourceable6 joined 01:24 notable6 joined, nativecallable6 joined 02:22 bloatable6 joined, committable6 joined 02:23 linkable6 joined, reportable6 joined 04:04 linkable6 left, nativecallable6 left, evalable6 left, reportable6 left, committable6 left, bloatable6 left, notable6 left, releasable6 left, quotable6 left, coverable6 left, sourceable6 left, unicodable6 left, statisfiable6 left, benchable6 left, bisectable6 left, greppable6 left, tellable6 left, shareable6 left 04:05 greppable6 joined, linkable6 joined, bisectable6 joined, notable6 joined 04:06 committable6 joined 04:07 coverable6 joined, releasable6 joined, shareable6 joined, quotable6 joined 05:05 tellable6 joined, benchable6 joined, statisfiable6 joined, evalable6 joined 05:06 unicodable6 joined 05:23 squashable6 joined 05:37 frost joined 05:45 samcv left, frost left, samcv joined 05:46 vrurg left 05:47 vrurg joined 06:03 reportable6 joined 06:31 frost joined 07:05 bloatable6 joined 08:27 bloatable6 left, tellable6 left, squashable6 left, benchable6 left, statisfiable6 left, evalable6 left, unicodable6 left, greppable6 left, shareable6 left, committable6 left, notable6 left, quotable6 left, bisectable6 left, reportable6 left, linkable6 left, releasable6 left, coverable6 left 08:28 notable6 joined, linkable6 joined 08:29 greppable6 joined, coverable6 joined 08:30 reportable6 joined, bloatable6 joined, evalable6 joined 09:05 nativecallable6 joined 09:28 unicodable6 joined, bisectable6 joined, squashable6 joined 09:29 tellable6 joined, quotable6 joined, benchable6 joined, shareable6 joined 09:30 committable6 joined 09:40 linkable6 left
Nicholas good *able6, #moarvm 10:36
10:51 evalable6 left 10:54 evalable6 joined 10:55 Nicholas is now known as moaringable6
moaringable6 good *, #moarvm 10:55
10:55 moaringable6 is now known as Nicholas
Nicholas oh, I typoed that. 10:55
nine Hey ho sailor! 10:56
10:57 squashable6 left, squashable6 joined 11:07 sourceable6 joined 11:13 frost left 11:20 samcv left 11:21 samcv joined 11:30 statisfiable6 joined 11:40 linkable6 joined 11:42 lizmat left, TempIRCLogger left 11:47 lizmat joined 11:50 TempIRCLogger joined, patrickb joined 12:02 reportable6 left 12:05 reportable6 joined 12:16 RakuIRCLogger left, Geth joined 12:19 linkable6 left 12:21 linkable6 joined
jnthnwrthngtn Thank goodness my RakuConf talks are tomorrow; it's not easy to talk with an anaesthetised mouth... 12:37
12:42 frost joined 12:46 sena_kun joined
dogbert17 oops, a meeting with the dentist? 12:47
jnthnwrthngtn Indeed. 13:04
On the upside, it's not every day you have a medical reason to have ice cream for lunch. 13:05
sena_kun .oO ( what ) 13:06
jnthnwrthngtn sena_kun: Can't feel what I'm doing with much of my mouth, so the safest thing to eat is something that I can't possibly do any damage with. Ice cream is also cold so good for taking off any swelling :) 13:08
sena_kun jnthnwrthngtn, surprising but ok. I have like 5 appointments ahead, so sounds reassuring. 13:09
jnthnwrthngtn 5? Uff. I had 5. I might be down to 4 now. 13:10
sena_kun heh, and I hoped you have it better. :/
still kinda discouraging, I expected just 3, too optimistic. 13:11
next time better to expect 10 to make sure it can't reasonably be worse than that.
[Coke] Ugh, good luck, folks. (I have a visit coming up where I hope I get good news and not many impending visits) 13:18
jnthnwrthngtn [Coke]: Good luck also. 13:21
When I went for the first time in a while I expected kinda worse, but apparently while there's a bunch of historical things to fix, I've done well recently at looking after them. 13:22
[Coke] these luxury bones are a PITA!
jnthnwrthngtn (The dentist I was seeing moved across town, and given my anxiety about going it was way too much stress. I waited a bit as we were moving, there's a dentist really close by now, but then COVID hit and doing anything non-urgent needing close contact with other people seemed unwise.) 13:25
13:37 frost left 14:29 releasable6 joined
nine Getting back to our little spesh/deopt riddle, I went back further in history to the original speshing of add_object_if_no_sc (which later gets inlined but misses a critical Deopt Inline annotation). 15:03
Turns out in the original spesh of this function, the instruction does have an annotation: [Annotation: INS Deopt One Before Instruction (idx 7 -> pc 60; line 5701)] 15:04
15:18 dogbert17 left, dogbert17 joined
nine Oh darn, I lost the rr session :/ Can't re-run it anymore since apparently I've recompiled moar in the meantime 15:21
Luckily it only took some 400 runs this time to catch it again :) 15:47
15:49 dogbert17 left, dogbert17 joined 16:01 dogbert17 left, dogbert17 joined 16:03 dogbert17 left, dogbert17 joined
nine Huh...we put the annotation onto the preceeding sp_guardsf instruction instead of the sp_guardconc 16:07
Geth MoarVM/new-disp: 2e9ef4d5da | (Jonathan Worthington)++ | src/disp/program.c
Fix dispatch program dumping
16:23
16:35 dogbert2 joined 16:38 dogbert17 left
timo maybe we are missing handling for deopt before annotations for example when deleting instructions or so? 17:06
i forgot the raku conf already happens rigtht now
17:32 sena_kun left 18:02 reportable6 left 19:03 reportable6 joined
nine I can't shake the feeling that we simply do not differentiate between MVM_SPESH_ANN_DEOPT_PRE_INS and MVM_SPESH_ANN_DEOPT_ONE_INS annotations when turning them into MVM_SPESH_ANN_DEOPT_INLINE when we should. 20:28
But how on earth would we have gotten so far if that's the case? And why does it appear only on new-disp? And in such a hard to reproduce case? 20:29
I'd think that sp_guardconc is a rather common op and it must deopt from time to time
MasterDuke did jnthnwrthngtn say something recently about how new-disp has way more MVM_SPESH_ANN_DEOPT_PRE_INS? there was some other bug around them that was surprising it hadn't hit on master? 20:30
timo deopt pre ins is completely new in new-disp and has not been necessary beforen 20:34
nine Oh, that explains it! So I didn't read far enough back in the git log 20:35
MasterDuke heh. i was somewhat right. new-disp definitely has way more of them than master
nine Way more than 0 :D 20:36
MasterDuke infinitely more
nine So, we need to find a clever way to communicate the information whether the annotation was a PRE_INS or an ordinary one, so build_cfg can DTRT 20:37
Bytecode positions are always even numbers, aren't they? 20:38
timo pretty sure yes 20:39
you want to make odd numbers stand for pre? 20:40
jnthnwrthngtn There *were* pre-deopt points before new-disp, but they didn't need to be distinguished in any way for correct behavior.
nine timo: well, that's why I like coding in C :D
timo oops
jnthnwrthngtn Then when we started needing to do so I introduced the annotation
Because there's a *lot* more of them now
In fact, they're basically the delta variant of deopts 20:41
timo in a language with a more expressive type system like cpp for example we could at the type level make sure that we never accidentally get an odd number where we arent prepared for it
did you know that delta plus is coming
jnthnwrthngtn And it started to matter
timo: My assumption is that whoever named that didn't know what the next letter in the greek alphabet was, but was too ashamed to admit it :P 20:42
timo or because its epsilon and epsilon expresses an infinitesimally small number in maths lol 20:43
nine There aren't that many places that read from the deopts array
jnthnwrthngtn About inline deopt points though: the way I *think* they work is 1) spot the deopt address in the bytecode, 2) put an annotation there, 3) spit it out
timo well thats good then
helps that they are purely a runtime thing and not serialized or so
jnthnwrthngtn And so that means they should round-trip 20:44
But...it also means pre-deopt ones would end up with the annotation on the wrong instruction
If this ends up mattering, then this could be awkward.
nine jnthnwrthngtn: yes, annotation on the wrong ins is exactly what I've found
And it does matter, because it means the deopt_idx of that instruction won't get updated after inlining 20:45
jnthnwrthngtn However I'm not quite sure if it matters, in that I think we've been very very reluctant to go removing guards inside of the inline
nine: huh, that's...interesting
nine: I hope that's not because the code-gen is like "ooh, a deopt annotation, now I can stop looking for other deopt annotations"... 20:46
('cus we can now end up with two on the same instruction, because one was originally a pre of the previous instruction)
uh, of the next instruction 20:47
I guess inlining could do that mistake too. But that'd imply the fix is just to keep iterating; is there a more subtle problem that I'm not thinking of?
nine No, it's just because the inliner is looking for DEOPT annotations and only if an instruction has one we call tweak_guard_deopt_idx
timo ill go make some late dinner. you kids have fun ;
jnthnwrthngtn nine: Ohhh 20:48
Sigh
timo :)
nine And tweak_guard_deopt_idx takes the deopt_idx from the annotation and writes it into the operand
jnthnwrthngtn Right, right. I see.
Yeah, that's trickier. That's the bit I missed.
20:49 patrickb left
nine But if I get it to put the annotation on the correct instruction, all should be well again 20:50
jnthnwrthngtn Yeah
I'd prefer a bitshift and flag approach rather than relying on evenness
nine But, but, but....that will cost us the upper 2 GiB of possible bytecode! 20:51
jnthnwrthngtn Because even is always true *now*, but I'm sorta hopeful that at some point we'll shift enough of our ops over to boot-syscall that we'll have few enough of them to consider really having bytecode, not wordcode
nine Only 2 gigs left then...
jnthnwrthngtn Doesn't matter; spesh refuses to do anything if the bytecode is over a certain length anyway :P 20:52
nine Makes me wonder if there are places that actually treat the bytecode pos as a singed number. The code has traditionally been a bit sloppy in that way
MasterDuke confidently states that 2g of bytecode ought to be enough for anybody
jnthnwrthngtn Well, I know we treat deopt indexes signed in quite a few places because we want -1 to mean unresolved at code-gen time... :)
nine Well, bitshift it will be then. So, good plan for tomorrow :) 20:54
jnthnwrthngtn Let me guess, you didn't submit a talk and so aren't doomed to spend the day finishing up slides? :)
nine Exactly! 20:55
Someone has to keep things moving here after all :P
jnthnwrthngtn :D
At least only *one* talk has remaining work to do. (The new-disp one is finished.) 20:56
MasterDuke jnthnwrthngtn: does new-disp reduce the number of extra calls to FETCH that happen with Proxies right now? 21:00
vrurg is talking about Proxy right now and got me wondering 21:01
jnthnwrthngtn MasterDuke: Somewhat, yes 21:35
MasterDuke nice 21:36
jnthnwrthngtn It also means that you don't totally lose multi dispatch caching if you make a call with one as an argument
So the performance penalty for them is a bit less in that sense too 21:37
MasterDuke is there anything new-disp doesn't do? does it julienne fries?
jnthnwrthngtn We can probably do better still. It won't happen this side of The Merge, but I do wonder if decont will actually become an entrypoint to new-disp also
And then we can wire it up directly to a FETCH invocation and then it's trivially possible to inline 21:38
MasterDuke oh, cool
jnthnwrthngtn I'm...pretty sure it doesn't do the fries yet :)
I did once stumble upon a fries vending machine. (In Japan. Where else?) Alas, that only microwaved pre-prepared fries. 21:40
MasterDuke ugh
jnthnwrthngtn The fries weren't special, but it was an amusing way to pass the time while waiting for a connecting train. :) 21:41
MasterDuke i want to try the pizza vending machines i've heard about that make and cook it right there/then
i think they were introduced in italy, don't know if they still exist (or are anywhere else) 21:42
jnthnwrthngtn I think I read about them quite recently, but from what I remember they were only in Italy. 21:43
MasterDuke i didn't see any when i was there in 2006, but i believe they are newer than then 21:44
jnthnwrthngtn I've been there more recently but didn't spot them. OTOH, last time I was in a small town in the north. 21:46
There was a small place with a rather grumpy guy making pizza and it was delicious. :) 21:47
timo "lots of planets have a north"
MasterDuke i had a pizza at the place place in naples i was told invented the pizza. it was pretty good, but honestly the italian restaurant in the main square in tallinn had probably the best neapolitan pizza i've ever had 21:49
but i put neapolitan pizza in the same category as asparagus. it's only good when it's *really* good. otherwise i prefer chicago style 21:50
ugexe detroit style pizza supremecy 21:51
timo i dont even know what all these styles mean :/
ugexe you have so much to learn 21:52
MasterDuke i'm not sure that i've had one that was described as detroit style. isn't that somewhat similar to lasagna? 21:53
timo deep dish pizza?
ugexe the most mainstream representation might be a little ceaser pan / deep dish pizza
timo what are the ones called that are tall and crunchy and kind of fluffy? 21:54
MasterDuke that's probably a deep dish 21:55
ugexe to be purist detroit style has cheese to the edge so it melts and carmelizes on the edge of the pan / crust, and the sauce usually added on top (although more like dabs / rows unlike a chicago style that is all sauce on top) 21:57
fluffy is probably sicilian stlye 21:58
which is pretty close to detroit style
timo media.smp-it-media.de/products/ima...g4My5wbmc=
ugexe not to be confused with granny style
thats not even a pizza 21:59
thats like a savory fruit pie or something
timo it says pizza on the package haha
i did not intend to find a pizza hawaii 22:00
but it was surprisingly rare to find photos of this kind
MasterDuke i really like good hawaiian pizza, the sweet+salty combination, but it depends on the pineapple. it has to be fresh and nicely roasted/grilled, not canned 22:05
ugexe ah. well anyway i dunno how id classify that... greek / new-england style i guess 22:06
timo in my experience the ham can be a dealbreaker easily
22:06 linkable6 left, evalable6 left
MasterDuke yeah, i'd say that's kind of "regular" pizza 22:07
22:08 linkable6 joined
timo what would a new-disp pizza be like 22:10
MasterDuke well, at least we know it won't have julienned fries on it 22:11
timo entering dispatch from deopt sounds hella dope, kind of like deopt bridges perhaps? 23:04
23:44 linkable6 left