github.com/moarvm/moarvm | IRC logs at colabti.org/irclogger/irclogger_logs/moarvm
Set by AlexDaniel on 12 June 2018.
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: github.com/rakudo/rakudo/compare/c....8ec2c43f1 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 github.com/MoarVM/MoarVM/issues/1023 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 ... ?!?!
timotimo no way past rr record and going backwards and forwards through this, it seems like :| 18:27
timotimo oh, i should perhaps give gdbgui another try 20:18
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
MasterDuke hm, i keep forgetting i installed gdbgui 22:58
MasterDuke has anyone used kdgb? 23:35