github.com/moarvm/moarvm | IRC logs at colabti.org/irclogger/irclogger_logs/moarvm
Set by AlexDaniel on 12 June 2018.
nwc10 good *, #moarvm 06:16
Geth MoarVM/prefer-lexical_names_list: c70587551a | (Nicholas Clark)++ | 3 files
Where possible, iterate over lexical_names_list instead of lexical_names.

The former is an array, the latter a hash. Given that they have the same contents, it's much simpler to iterate over the list.
06:24
MoarVM/prefer-lexical_names_list: 4d0da364d2 | (Nicholas Clark)++ | 7 files
Wrap all access to lexical_names with MVM_get_lexical_by_name.

This permits us to easily tweak the storage format.
The "Indexes were formerly stored off-by-one" comment related to code before 2013, back when hashes were implemented with the Apache Portable Runtime. I don't think that it's useful to retain it. :-)
MoarVM/prefer-lexical_names_list: 3658e4cd1f | (Nicholas Clark)++ | 2 files
Don't make a lookup hash for lexical names for frames with few lexicals.

If there are 5 or fewer lexicals in the static frame, don't create a lookup hash for them. Instead, find them by a linear scan of the list. For a short list, this won't be slower, and we save some memory.
The value 5 is an educated guess - there might be a better cut-over point. ... (5 more lines)
nwc10 a rebase
Kaiepi i'm adding ops for getsockname and getpeername, since happy eyeballs requires a way of getting a source address used for a connection and the way that source/peer addresses are handled with IO::Socket::INET and IO::Socket::Async is pretty adhoc atm 10:33
i know they need to go somewhere in struct MVMIOOps in order to work with both sync and async sockets, but i'm not sure whether they belong more in struct MVMIOSockety, struct MVMIOIntrospection, or something like struct MVMIOAddressable instead 10:34
since they're introspective socket ops, but async sockets don't use struct MVMIOSockety, and not everything that uses struct MVMIOIntrospection is a socket, i'm leaning more towards the latter 10:37
Kaiepi is tools/update_ops.p6 failing on master for anyone else? 11:36
MasterDuke `Cannot parse operand ':confprog'` ? 11:53
timotimo oh? that should have gotten in there many months ago 11:59
support for that
ah i see it's possibly a problem in rakudo itself 12:15
Geth MoarVM: eafa7b3918 | (Ben Davies)++ | 2 files
Ensure MoarVM includes the correct 3rdparty libuv objects on *BSD

3rdparty builds of libuv didn't include the same objects that libuv itself does. This shouldn't affect MoarVM as it currently stands, but may cause problems in the future should uv_random or uv_interface_addresses ever be used.
12:47
MoarVM: 43b9962773 | (Jonathan Worthington)++ (committed using GitHub Web editor) | 2 files
Merge pull request #1314 from Kaiepi/libuv-bsd

Ensure MoarVM includes the correct 3rdparty libuv objects on *BSD
Geth MoarVM/master: 4 commits pushed by (Nicholas Clark)++, (Jonathan Worthington)++ 12:56
Geth MoarVM: 0racle++ created pull request #1315:
Declare loop var before loop
13:10
MoarVM: c177e85cc1 | (Daniel Green)++ | 2 files
Remove two unused variables

These aren't used anymore after github.com/MoarVM/MoarVM/pull/1307
13:14
dogbert17 jnthn: not to destroy your afternoon but in case you missed it: Commit github.com/MoarVM/MoarVM/commit/32...2becb8e59, which fixed a perf regression, made the SEGV in Spreadsheet::XLSX return. 14:02
jnthn :-( 14:04
OK, well, screw it
Better just work on the dispatch stuff, which will lead to deleting that code anyway
dogbert17 agreed :-) 14:05
jnthn The whole invocation spec mechanism is getting thrown out
dogbert17 Very cool 14:06
jnthn In fact, the whole load of code in optimizing invokes gets simpler, because the dispatch program encodes how to find the VM-level bytecode reference anyway 14:07
So it won't have to do the whole lot of figuring that out
dogbert17 sounds like it could be faster than the current impl. 14:08
nwc10 jnthn: t/moar/53-dispatch.t fails test 20 for me currently. I assume that that's known. 14:09
jnthn Yes, but I don't know exactly why, or when that started to happen.
nwc10 OK. "Me neither". (currently)
jnthn Currently figuring out how to handle flattening and callsite interning and all that fun 14:10
Which blocks a few things
dogbert17 You need coffee
jnthn Already had enough today...onto tea already :) 14:11
If I drink too many coffees I don't tend to feel all that good
vrurg In some respect tea isn't better than coffee. I can't drink it a lot. 14:13
tellable6 2020-06-11T15:48:08Z #raku <melezhik> vrurg_ RakuDist fails for the latest release of Vikna, i don't know, may be just docker related - rakudist.raku.org/sparky/report/debian/298
jnthn vrurg: I'm drinking chamomile or mint tea, which is perhaps less bad :)
Hm, that spelling looks odd
vrurg jnthn: oh, sure it is! Except that I'm sleepy enough without their help. :) 14:14
nwc10 jnthn: and for new-disp, rakudo goes SEGV somewhere in the setting: 14:24
#0 0x7f7451a8b570 in build_cfg src/spesh/graph.c:660
#1 0x7f7451a8d818 in MVM_spesh_graph_create src/spesh/graph.c:1342
...
probably also not news.
jnthn No, if you want to try anything there at the moment, MVM_SPESH_DISABLE=1 is needed
nwc10 OK
jnthn I've decided to get things working before digging into making the optimizer understand them.
Hoping that this order will lead to the least re-work of things 14:25
nwc10 that's far too sensible. :-)
nwc10 jnthn: OK, without spesh new-disp has compiled the setting under ASAN and reached the tests 15:05
lizmat and yet another Rakudo Weekly News hits the Net: rakudoweekly.blog/2020/06/15/2020-...proaching/ 15:14
Geth MoarVM/new-disp: 4 commits pushed by (Jonathan Worthington)++ 15:20
nwc10 jnthn: ASAN makes no comment on your new changes. 15:34
Geth MoarVM/new-disp: cbbf5a4990 | (Jonathan Worthington)++ | 5 files
Extend the callsite interning API

  * Indicate how much we want the callsite to be interned
  * Make whether we take over the memory of the passed callsite an
   option
15:45
jnthn The callsite intern cache is a potentail source of read after free... 15:46
*potential
Will fix that along with the work I'm currently donig
nwc10 jnthn: I cannot find a revision where t/moar/53-dispatch.t test 20 passes 15:49
"not ok 20" at commit 653702ecd6ec628aad79ddbfbb41095476e9d157 in MoarVM
does not even get that far with commit 653702ecd6ec628aad79ddbfbb41095476e9d157^
jnthn Huh, interesting 15:50
nwc10 yes that's what I thought too. 15:51
I can't confidently prove that no commit exists. But it sure looks like it
maybe you've done what I did at work recently - I know that I had my test passing at some point, but the revision that I checked in didn't pass any more. 15:52
jnthn It's possible, yes
nwc10 also, had a near miss - beer fridge operative failed to restock after yesterday's lunch. 15:53
jnthn oops
There's now a Belgian beer bar in Prague with Kwak (and much more) on tap. 15:54
And it's not that far away from where I live.
nwc10 borders are open! Only 5 hours on the train, isn't it? :-) 15:59
Geth MoarVM/new-disp: 1f70bc28b6 | (Jonathan Worthington)++ | src/disp/program.c
Force interning of callsites used in dispatch prog
16:00
nwc10 I hadn't even finished running NQP's tests with the previous commit! :-)
Geth MoarVM/new-disp: 062447a96b | (Jonathan Worthington)++ | 3 files
Make MVMCapture handle non-interned callsites

It should quite rarely see these, but when it does, then it makes the assumption that it owns and should thus manage the memory associated with them, freeing it when the capture object is GC'd.
16:12
nwc10 I hadn't even finished running NQP's tests with the previous commit! :-)
t/moar/53-dispatch.t still fails 20. The rest pass. Implies ASAN considers your work unworthy of comment. :-) 16:13
jnthn At some point I'll go home and this problem will end...for now :P 16:25
nwc10 again: t/moar/53-dispatch.t still fails 20. The rest pass 16:36
Geth MoarVM/new-disp: ff272f3094 | (Jonathan Worthington)++ | 3 files
Use FSA for callsite intern store

And also make it resizeable. This also fixes a longstanding unlikely but possible use after free bug: if one thread was looking through the interns while another thread decided to expand it and did a realloc, the other thread would end up still reading from the freed memory.
17:21
nwc10 I fear that this is going to sound like a stupid question... 20:11
I'd like to hit code in src/profiler/heapsnapshot.c 20:12
I thought that it generated binary output
I thought that if I followed the instructions in github.com/jnthn/p6-app-moarvm-heapanalyzer I'd get this
instead, when I run rakudo-m --profile=heap -e 'say "Hello world"'
I get a file called `heap` which is XML 20:13
timotimo yes, needs to be --profile=blah.mvmprofile
no
yes, needs to be --profile=blah.mvmheap
the "what kind of profile to do" is either a second flag, or it's based on the filename's ending
nwc10 ah OK cool. thanks. 20:14
I owe you a beer. Or $other drink. Or petrol :-)
timotimo it used to be yo uhave to --profile-filename separately from --profile=heap vs --profile=instrumented or whatever
mhhh, i think if we use nqp::objectid and pass an integer array to the heap snapshot capture thing somehow, they could be listed up on the front page of the heap analyzer 20:28
without necessarily creating a new reference that'd make the graph less true to the real situation 20:29