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
|