00:18 MasterDuke joined 00:27 AlexDaniel joined 00:28 buggable joined 01:56 ilbot3 joined 06:30 evalable6 joined 06:36 FROGGS joined
FROGGS .tell AlexDaniel sure, I'll commit that today 07:13
yoleaux FROGGS: I'll pass your message to AlexDaniel.
08:53 AlexDaniel joined 10:41 domidumont joined 10:49 domidumont joined
Geth MoarVM/lazier_inline_fixups: c2d20bab9b | (Timo Paulssen)++ | 2 files
more WIP on lazier inline fixups
11:28
dogbert17 oh, it's timotimo 11:34
timotimo oh no! 11:44
dogbert17 you're in some trouble :) 11:45
look here: github.com/rakudo/rakudo/issues/1733
timotimo guess what lazier_inline_fixups is for 11:53
the bigpackids sub is not being speshed because it has a wval in it that's from a foreign cu after inlining
dogbert17 aha 11:54
AlexDaniel 12:14
timotimo wow, fascinating 12:20
memory corruption or something related to spesh slots?
huh, how is this happening :D 12:56
dogbert17 perhaps it's a bug :)
timotimo well, somehow we end up with num_spesh_slots being 11, but alloc_spesh_slots being 0 12:57
dogbert17 does valgrind have anything to say?
timotimo yeah 12:59
i have a theory, but i'll verify before i explain 13:00
ah, yes 13:02
when inlining, we create a spesh graph directly from a SpeshCand
that code only sets the number of spesh slots and the spesh slot array
not how many were allocated
the new code i have was adding extra spesh slots to the inlinee, which is something that never happened before, and wasn't supposed to happen 13:03
i'll also need to copy the spesh slots array over, rather than keeping the original, otherwise things will go rather wrong
dogbert17 is this an old problem? 13:07
timotimo no
dogbert17 damn :)
was hoping you'd found some old crusty bug relating to inlining 13:09
brrt is looking for one I believe 13:10
timotimo 00013 sp_findmeth loc_10_obj, loc_11_obj, '$!known', sslot(5) 13:14
this looks kind of wrong :D
but yeah, i have a clue what's wrong here
fixing up strings with "the new way" is NYI, that's what's wrong 13:17
dogbert17 "the new way" ? 13:20
timotimo ah, allow me to explain 13:23
so, there's this op called "wval" that takes two integers and it looks up a serialization context based on the first integer and then an object based on the second, which is an index into that serialization context 13:24
now, these serialization contexts hang off of the CompUnit, because every comp unit has a list of SCs that it depends on
when we inline code, we may be taking code from one compunit and transplanting it into another, so the wval instruction will either not find an SC at the given index at all, or no object at the specified index (index too high), or simply the wrong index (whatever has the same index in that other SC) 13:25
so we have to fix this up
until now, we would grab the object from the SC and stash it away in a spesh slot, i.e. make it a constant with a different mechanism 13:26
but grabbing the object from the SC can cause deserialization, because we do that lazily, which allocates objects that are GC-managed
that also means if we happen to fill up the nursery at that point, or if another thread was waiting for us to join in on GC, we'd be running GC inside spesh 13:27
which spesh does not support, and making it support GC in the middle would be a major hassle
that's what caused the MVM panic in the past
so that's what we used to have 13:28
but at the GPW, jnthn came up with a simple solution to this problem
dogbert17 that sounds interesting 13:29
timotimo we can just stash away the SC we need to look stuff up in into a spesh slot, and store the index for the object inside it
hence the sp_getwvalfrom op is born
dogbert17 and you're implementing it now? 13:30
timotimo that one seems to already work
there's more, though
any op that has a constant string argument also needs fixing up
i've added a sp_getstrfrom op that can replace const_s, but there's a bunch of ops that have constant strings in their operands 13:31
some getattr ops, and some findmeth ops
i don't want to duplicate all of those
dogbert17 so how will you fix them then? 13:32
timotimo the old string fixing way isn't problematic in the same way the wval one is 13:33
because we put strings we take from a compunit into the old generation, it won't cause GC 13:36
i also have a fixup for callsites, but that one was giving me trouble 13:38
i can also revert that back to the way it was and that seems to make things better 13:39
i'll do a full nqp/rakudo build/test with that
dogbert17 so if your fix works the blocker will be resolved while at the same time getting a wval fix? 13:42
timotimo yes
dogbert17 cool 13:43
timotimo looks like i'll only be adding a lazy wval fixup and a lazy const_s fixup, not callsites and also not coderefs
but fixing up coderefs causes a panic at the moment anyway 13:44
so i suppose that never happens
huh, wow, a rakudo build succeeds, but the test program fails 13:47
P6opaque: get_boxed_ref could not unbox for the representation 'P6bigint' of type Signature
^- that's rather wrong
dogbert17 uh oh 13:49
timotimo i've fixed the problem, but really only by masking the bug 14:01
time for a rest break for my RSI, though 14:02
spec tests are clean with this version :\ 14:12
oh, haha, i think i have the problem 14:26
no, i don't 14:27
dogbert17 rest well 14:29
timotimo too late! 14:32
it's a good idea to read 64bit integers into 64bit variables rather than into 16bit ones 14:37
jnthn You don't say! :) 14:38
jnthn waves from a train taking home sorta towards home :)
timotimo it's taking home towards home? 14:39
:D
jnthn hah, s:1st/home/him/ :)
timotimo: You still working on the inline fixups stuff we talked about during GPW, or onto the next problem by now? 14:41
timotimo it's still that
though i haven't invested a whole lot of time since i came back
jnthn eek, "fun"
Ah, well, that's something at least :)
timotimo well, i'm staring at a looooong column of "ok"s now
jnthn That's nice :) 14:42
timotimo t/spec/S07-hyperrace/stress.t ..................................... 14:43
does this usually take ages?
it seems to be only really using one single core 14:44
perhaps something's not quite right in that test
run in isolation it finishes quickly 14:46
jnthn Can't say I've noticed it doing so, but I've hardly run spectest at all in the last couple of weeks.
timotimo Test run interrupted! 14:47
All tests successful.
so i'd call this success
i'm not sure why prepargsfrom doesn't work, but it's not as important so i can postpone it, possibly forever :P 14:53
15:05 Kaiepi joined
Geth MoarVM/lazier_inline_fixups: 5cceda1caa | (Timo Paulssen)++ | 9 files
Fix fixing of wvals during inline
15:22
MoarVM/lazier_inline_fixups: 16c43c1751 | (Timo Paulssen)++ | 5 files
get rid of spesh retry mechanism
timotimo ah, i meant to write a long commit message before pushing
RSI rest break time again, though
Geth MoarVM/lazier_inline_fixups: 587e08d48d | (Timo Paulssen)++ | 9 files
Fix fixing of wvals during inline

Whenever we inline a frame from one MVMCompUnit into a frame from another MVMCompUnit we have to fix up several ops and operands that are references based on "the current CU". One of those cases was the wval operations.
... (21 more lines)
16:09
MoarVM/lazier_inline_fixups: 8a5615ead7 | (Timo Paulssen)++ | 5 files
get rid of spesh retry mechanism
MoarVM/lazier_inline_fixups: 9655e15488 | (Timo Paulssen)++ | src/spesh/inline.c
we can re-use these spesh slots.
16:18
MoarVM/master: 4 commits pushed by (Timo Paulssen)++ 16:23
16:42 Kaypie joined 18:50 zakharyas joined 19:02 Merfont joined 19:08 Merfont joined 19:44 Kaiepi joined 20:53 releasable6 joined 20:56 Kaiepi joined 21:10 Zoffix joined
Zoffix Reminder, release will be in 7 days and there are still 7 release blockers on the list. Please help fix: github.com/rakudo/rakudo/issues?q=...2%9A%A0%22 21:11
R#1709 is already partially golfed to some GC issue with `moar: src/gc/collect.c:218: process_worklist: Assertion `*item_ptr != item->sc_forward_u.forwarder' failed.` 21:12
synopsebot R#1709 [open]: github.com/rakudo/rakudo/issues/1709 [ASYNC][⚠ blocker ⚠] A race in HyperRace causing rare crash/hang
22:03 p6lert joined 22:05 Kaypie joined 23:31 bloatable6 joined, quotable6 joined, evalable6 joined, notable6 joined, undersightable6 joined, committable6 joined, coverable6 joined, nativecallable6 joined, benchable6 joined, releasable6 joined, unicodable6 joined, squashable6 joined, bisectable6 joined, shareable6 joined, statisfiable6 joined 23:32 greppable6 joined