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
|