| IRC logs at
Set by AlexDaniel on 12 June 2018.
07:46 zakharyas joined 07:51 squashable6 left 07:55 squashable6 joined 08:51 Geth left 08:52 Geth joined 08:58 domidumont joined 09:15 zakharyas left 10:08 squashable6 left 10:11 squashable6 joined 10:12 zakharyas joined 10:31 brrt joined 10:45 sena_kun joined 11:04 brrt left 11:48 domidumont left 12:10 brrt joined 12:32 brrt left 12:37 Util joined 12:41 brrt joined 12:51 brrt left, brrt joined 12:59 brrt left 13:32 lucasb joined 14:02 brrt joined 14:07 brrt left 14:17 zakharyas left 15:05 domidumont joined
timotimo profiler stuff was still wrong, so i just pushed a last fix 15:30
i wonder if that last change fixes any of the remaining issues 16:13
nine I finally pushed 17 commits to make the rakudo build and module precompilation reproducible 16:54
It's cafe628a4..8ec2c43f1
That's the diff: 16:55
timotimo you can probably get a tiny improvement in performance in the optimizer if you have a constant for "empty array", for use inside the remove_decl method, though tbh i don't know how often that gets called at all 16:57
nine Probably not that often. And there are other places with constant empty arrays
timotimo mhm 16:59
nine I'm already glad that I had to use sorted_keys in only 7 places 17:00
timotimo ah, very good
maybe we should give sorted_keys an output for how many keys in the hash in question so we can maybe put a fast path in for 2 or 3 elements if it's worth it
dogbert17 timotimo: your last profiler fix didn't fix 17:01
jnthn Started work on making our escape analysis really be a partial escape analysis today. Quite a lot of work. :) 17:08
If I disable the thing where it realizes it doesn't yet know what it's doing, though, I can get it to move an allocation into the only branch that needs it :) 17:09
(In an example where it's safe to do that. In general, it's not yet.)
The test was an NQP program: `class C { }; sub foo($i) { my $x := C.CREATE; if $i % 2 { return $x } else { return 99; } }; my $j := 0; my @objs; while $j < 1_000_000 { nqp::push(@objs, foo($j)); $j := $j + 1 }`. 17:10
And it delays the allocation of C into the branch that does `return $x`
Anyways, enough brain ache for today :) 17:11
timotimo whee 17:13
i'm not sure what exactly is supposed to live at 8 bytes into a BOOTCode; if i read the output of pahole right, the only thing that lives 8 bytes into the object is MVMuint32 owner + MVMuint16 flags + MVMuint16 size ?!? 17:45
it would make sense if it were the forwarder, but that lives right at the beginning, and so does the st pointer 17:46
(gdb) print (void *)&((MVMCode *)new_addr_obj)->common.header.owner - (void *)((MVMCode *)new_addr_obj) 17:54
$12 = 8
so ... ?!?!
18:04 sena_kun left 18:24 sena_kun joined
timotimo no way past rr record and going backwards and forwards through this, it seems like :| 18:27
18:36 zakharyas joined 19:00 domidumont left 19:39 brrt joined
timotimo oh, i should perhaps give gdbgui another try 20:18
20:23 Geth left, Geth joined
timotimo being able to just doubleclick something in the source, like a variable, and get a popup with a tree of expandable items in it is super nice already 20:43
21:12 brrt left 22:34 zakharyas left
MasterDuke hm, i keep forgetting i installed gdbgui 22:58
22:59 sena_kun left
MasterDuke has anyone used kdgb? 23:35