MasterDuke jnthn: what is the "offset approach" mentioned in this TODO? github.com/MoarVM/MoarVM/blob/main...ard.c#L505 18:45
tellable6 2025-02-15T22:28:37Z #moarvm <jnthn> MasterDuke to be clear, MoarVM is already using the faster dominance algorithm
hey MasterDuke, you have a message: gist.github.com/2fa0d6f36dd2616090...09f79a0966
MasterDuke jnthn: thanks, good to know we don't need to spend time there
timo: btw, where did we leave off with investigating how to reduce the number of get_attribute calls? 18:48
timo i seem to recall we weren't getting facts about the actual type of objects, so couldn't optimize? 18:56
MasterDuke hm. any thoughts on how to get better facts? 19:00
bears eat beets. that's a nice fact, can we use that one? 19:05
timo interesting. i'll forward that to our research department 19:08
well, i've only looked at a few instances in the spesh log which unfortunately doesn't cross-reference trivially to counts of how often it's actually run 19:09
MasterDuke i'm getting some logs now
timo i mean we can see in the spesh log for how many frames we optimize the optimization doesn't trigger, but we can't see how often the resulting versions of the frames are called, nor how often the op in question is hit, for example if it's in a branch 19:11
but i think you said you had a count of how often the MVM_repr_get_attribute or similar function was being called in total?
MasterDuke yeah, trying to gist it now 19:13
i put an `MVM_dump_backtrace(tc)` in all the getattr_* ops in interp.c 19:14
timo ah, hehe.
do you have something to count them up? 19:15
i had a cool shell snippet for that but it fell off ot my history i think
MasterDuke a bash function call `sus` (for sort | uniq | sort)
timo sort allows you to use null instead of newline as line delimiter with -z
MasterDuke i modified dump_backtrace to only print the first line 19:16
timo you would probably want something that takes only the first line of the stack trace
MasterDuke gist.github.com/MasterDuke17/6b46b...61dbbb0011 19:18
timo anyone have the link to the userscript i made once that makes links to rakudo and nqp source files? 19:31
ah! it's in my "starred" gists
MasterDuke oh! i don't have that yet on this laptop, can you link it? 19:35
timo that needs updates to work with links like NQP:: and such 19:38
gist.github.com/timo/7cfe71a667bbd...0431da45a4 19:39
it also still links to "master" instead of "main" 19:40
fascinating, see how there's 142712 hits for the `nqp::getattr($how, Perl6::Metamodel::ClassHOW, '$!archetypes')` in ClassHOW.nqp 19:41
MasterDuke yep 19:45
timo 55403 at NQP::/home/dan/r/install/share/nqp/lib/MAST/Nodes.nqp:711 - this is a little bit odd though 19:50
MasterDuke that's `$!bytecode := $current.bytecode;` in `end_subbuffer()` 19:52
timo is that in a role? 19:56
MasterDuke `class MAST::Frame is MAST::Node {` 20:01
timo ok, it could be being called with a self that has something mixed in, which could cause this to not be optimized perhaps? 20:04
ok please find the new revision of the linkify script at the same address 20:12
MasterDuke hm, seems broken? 20:16
i get no links now 20:17
timo anything in the browser dev tools' log? 20:21
MasterDuke Uncaught SyntaxError: missing name after . operator 20:24
    Pt gist.github.com/timo/7cfe71a667bbd...1da45a4:10
    m gist.github.com/timo/7cfe71a667bbd...1da45a4:21
    c gist.github.com/timo/7cfe71a667bbd...1da45a4:24
    send gist.github.com/timo/7cfe71a667bbd...1da45a4:24
    oo gist.github.com/timo/7cfe71a667bbd...1da45a4:18
    send gist.github.com/timo/7cfe71a667bbd...1da45a4:24
    <anonymous> gist.github.com/timo/7cfe71a667bbd...1da45a4:87
    _ gist.github.com/timo/7cfe71a667bbd...1da45a4:22
timo must have done something wrong, maybe a copy-pasto? or something? so that it worked for me 20:30
oh
did you put the url as the URL to install from?
MasterDuke no, i just copied the text 20:31
recopied, still same 20:33
timo gist.githubusercontent.com/timo/7c...Linkify.js please try installing using this URL? 20:34
meanwhile let me try to toss it out locally and re-install as well
MasterDuke nope, still same 20:36
timo ok now i no errors but also no links. i'll look into what's wrong 20:37
violentmonkey doesn't show me the errors, but in the popup it does show that there is syntax errors apparently 20:41
MasterDuke Error: Line 376: Unexpected token ILLEGAL maybe 20:44
missing a backslash after 'vm'? 20:45
timo yes that sounds like a possible reason 20:48
i literally can't get a line number for the syntax error what a piece of trash %)
ok let's try again 20:50
MasterDuke hooray, tons of links 20:51
github.com/raku/nqp/blob/main/NQP:...T.nqp#L170 isn't right 20:56
timo ah dang i fixed that directly in the editor in my browser but not in the file? 20:57
ah
try now 20:59
MasterDuke looks good 21:01
guess i really should try to log the actual object and attribute name, that would help 21:08
timo ... i should get back to runcy_funcy_opts ... 21:11
timo hrm. there is no way to signal from a reprop's spesh function that the optimizer should re-run for the instruction again when it was changed 22:01
unless a change of the opcode is a good indicator maybe
huh, i wonder if our current design can sometimes run off of a BB and into nothingness if an instruction is removed from the graph 22:03
MasterDuke gist.github.com/MasterDuke17/96035...188af3b573 has some more info 22:59
timo oh, there's of course also the possibility that we have optimized the *attr op in the frame, but we deoptimized somewhere in the frame before reaching that point 23:25
MasterDuke might have a trivial pr for nqp to remove a small amount of getattr_*s 23:36