Welcome to the main channel on the development of MoarVM, a virtual machine for NQP and Rakudo (moarvm.org). This channel is being logged for historical purposes.
Set by lizmat on 24 May 2021.
Geth MoarVM/main: ab61b04468 | (Timo Paulssen)++ | src/spesh/optimize.c
log reason when not inlining into inlined bb
02:52
timo the inline log said things like this before: Can NOT inline set (21) with bytecode size 32746 into (16): (null) 02:54
this (null) is now replaced by a reason
timo a fun random distraction: i saw a getattr_o being called on a p6int repr'd object and was wondering how that could be, and it was just some code that depended on the type of the argument and spesh couldn't prove the branch in question was impossible 18:59
timo saw a load of unbox_u ops in the spesh log that were not being turned into something simpler, in this case it was unboxing a MAST::Local which happens in the op writer functions in lib/MAST/Ops.nqp 23:30
so now they turn into sp_p6oget_i or sp_p6oget_i32 (the 16 and 8 variants don't exist yet and i didn't feel like creating them yet) 23:31
and i think there's a possibility yet to devirtualize atkey_* and atpos_* better when it's on a p6opaque with a positional or associative delegation slot 23:42
we do do atkey_o on Perl6::Grammar objects (i.e. to get submatches) and atpos_o on QAST::Op (i.e. to get at the child nodes) 23:44
in that case we devirtualize directly into the reprop of P6opaque that looks up the position of the slot and the embedded STable and then gets the function pointer from there 23:46