github.com/moarvm/moarvm | IRC logs at colabti.org/irclogger/irclogger_logs/moarvm
Set by AlexDaniel on 12 June 2018.
01:06 sena_kun left, Altai-man_ joined
jnthn nine: Hm, I'm a little confused. Deserialization always creates objects in gen2, both for the reason that we expect them to live a long time, but also to avoid triggering GC. 01:20
So I'm surprised that "doing so can trigger a garbage collection run" - the design was predicated on that *not* happening.
Due to gen2 allocation
02:06 evalable6 left, linkable6 left 02:07 evalable6 joined 02:08 linkable6 joined 03:16 leont left
nine jnthn: Oh, it actually isn't the allocation that triggers the collection run. The thread gets marked blocked when ackquiring a lock and another thread triggers the GC. 08:29
jnthn: or rather, another thread already requested a GC run and when marking the thread blocked, the deserializing thread enters the GC as well: gist.github.com/dogbert17/5c6a632a...e2bfed97fa 08:32
09:04 sxmx joined
nine I was curious how a NULL could end up in a decont op. Looks like it's a mis-spesh of Perl6::World's is_type method: gist.github.com/niner/bcd0ee3d59d2...327c78be6f 09:48
MasterDuke nine: looking at my PR? 09:49
nine The sp_fastinvoke_o invokes find_symbol which calls find_single_symbol which throws a "Could not locate compile-time value for symbol DUMP" exception. So we end up in the takehandlerresult op and then immediately return loc_2_obj. But we never set it to anything! 09:50
MasterDuke: yep
MasterDuke cool 09:51
nine Makes me wonder: what makes us flip the order of the my $is_name := 0; and the find_symbol call?
MasterDuke so it's not really a problem with nqp::(getobjsc|scgetdesc)?
nine no
MasterDuke hm. wonder if the try around this block github.com/Raku/nqp/blob/master/sr...#L251-L257 could go away once the NULL/mis-spesh is fixed 09:53
benchable6: compare HEAD my $a; for ^1_000_000 { try { $a = $_; } }; ||| my $b; for ^1_000_000 { $b = $_; }; 09:57
benchable6 MasterDuke, starting to benchmark the 1 given commit
MasterDuke, ¦HEAD: «Benchmark: ␤«timed out after 10 seconds»» 09:58
MasterDuke benchable6: compare HEAD my $a; for ^100_000 { try { $a = $_; } }; ||| my $b; for ^100_000 { $b = $_; };
benchable6 MasterDuke, starting to benchmark the 1 given commit
MasterDuke, gist.github.com/523befc2ca3cc54cf4...44b5c2f8f7
10:20 Kaiepi joined
nine Actually, even the before of method is_type looks wrong: gist.github.com/niner/0fa1f36ea49a...8b9e5f722c 11:12
Most notably the PHI for the return value register: PHI r2(4), r2(3), r2(0)
11:12 Geth left
nine Note how it takes r2(0), when the latest version of the register before the branch is r2(2) written in this line: gist.github.com/niner/0fa1f36ea49a...e1-txt-L33 11:13
Both r2(1) and r2(2) show 0 usages and DeadWriter, but that's only correct for r2(1). 11:15
lizmat is that something a sanity check on the spesh log would have spotted ? 11:27
nine ^^ ? 11:34
nine don't think so 11:46
lizmat too bad , please let me know if you think there *is* something that could be checked programmatically 11:49
nine I just can't find the place where the usage should be added. Haven't had much contact with the code that sets up the CFG yet. I'm tempted to wait for input by jnthn++ 12:22
MasterDuke speaking of CFGs, i've been reading cfallin.org/blog/2021/01/22/cranelift-isel-2/ 13:06
13:09 leont joined 14:26 nwc10 left 18:01 Altai-man_ left 18:03 sena_kun joined 18:21 Geth joined 19:00 zakharyas joined 19:25 nwc10 joined 21:39 Kaiepi left 21:55 zakharyas left 22:32 Kaiepi joined