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.
Nicholas good *, new-disp :-) 06:21
nine Yes, new-disp is good indeed! 06:32
nine People who claim that computers are fast enough already clearly have never run CORE.c compilation in callgrind... 08:31
Nicholas oh my, oh yes.
and I thought ASAN was tedious
nine Stage parse : 1228.403 08:53
More time for the piano during the comparison run :) 08:54
Geth MoarVM/new-disp: 0fed320794 | (Stefan Seifert)++ | 3 files
Replace costly $*MAST_FRAME lookup by $frame arg in bytecode generators
10:41
nine According to callgrind, this gets us from 311,532,366,964 (100.0%) PROGRAM TOTALS to 308,948,475,562 (100.0%) PROGRAM TOTALS 10:42
Less of a speedup than hoped, but it's at least better
It's clearly showing a million fewer lookups of dynamics. The part I don't understand is the ~3 million more lexical lookups using the frame walker we now do. 10:46
lizmat after doing a git pull in rakudo, I get: Too many positionals passed; expected 3 arguments but got 4
at /Users/liz/Github/rakudo.moar/install/share/nqp/lib/MAST/Ops.nqp:10964
nine lizmat: did you pull nqp and MoarVM as well?
lizmat guess nqp and MoarVM need to be bumped on new-disp as well?
ah... I need to rebuild :-)
I'm using the --gen-moar=new-disp trick :-) 10:47
nine With the situation as fluid as it is, we don't usually bump the revisions. You want to stay on top of the branches at all times anyway and bumps make rebasing a bit more tedious 10:48
lizmat yeah, just rebuilding it makes it work, sorry for the noise :-) 10:51
nine Huh...according to my fprintf in MVM_frame_find_lexical_by_name, it's actually doing fewer lookups now. 13861659 lookups of $?CLASS instead of 14337557. Others are exactly the same (and so few that they don't even matter) 11:05
timo huh, "find_lexical_by_name" for $?CLASS? isn't it supposed to go via getlexperinvtype? 11:07
nine getlexperinvtype does use MVM_frame_find_lexical_by_name
timo oh, haha 11:08
but we do try to optimize that real good in spesh 11:09
could be a result of not inlining at the moment
do we have the callgrind numbers for master handy¿ 11:28
timo don't want to force 20 minutes of callgrind onto you if not 11:42
Nicholas good *, brrt 12:33
brrt good * Nicholas
nine master "only" looks up $?CLASS 10921854 times. But there are various other symbols that it looks up quite often that all but disappear from the list in new-disp. Like &needs_cond_passed 75961 vs 5 times or &type_to_local_type 61366 vs 4 or &push_op 33605 vs 9 13:50
Nicholas you know when you've been using rr "too much" when the first command you type in gdb is 'c' and it answers back with "The program is not being run." 18:58
timo when you press "c" on your keyboard to turn your computer on 19:12
lizmat ok, getting slightly annoyed now 19:52
Missing or wrong version of dependency 'gen/moar/stage2/NQPHLL.nqp' (from 'site#sources/45334C557865A97D1ECA0D3F3A3FAF2017FCE553 (OO::Monitors)')
I've nuked my install dir and built from scratch (on master) 19:53
decided to uninstall OO::Monitors yet again, and install again, and it works :-( 19:55
sorry for the noise
and back to failing again :-( 19:59
lizmat in the end I did a new rakudo checkout, which appears to have fixed it 20:24
dogbert11 lizmat: have you abandoned new-disp :) 20:27
lizmat I'm not sure what caused this, but yeah: in the middle of migrating modules to the zef ecosystem 20:29
and that still has a few rough edges
it was just one too many variables
it also was noticeably slower on my local logs server work 20:31
dogbert11 yeah, it's still a bit slower than master 20:32
timo one important piece of optimization is missing that currently prevents a lot of inlining, i think? 20:50