github.com/moarvm/moarvm | IRC logs at colabti.org/irclogger/irclogger_logs/moarvm
Set by AlexDaniel on 12 June 2018.
00:25 leont left 00:54 Altai-man_ joined 00:56 sena_kun left 02:13 AlexDani` joined 02:15 AlexDaniel left 02:28 vrurg left 02:29 vrurg joined 02:32 vrurg_ joined 02:33 vrurg left 02:55 sena_kun joined 02:56 Altai-man_ left 03:37 vrurg_ is now known as vrurg 04:54 Altai-man_ joined 04:56 sena_kun left
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
06:55 sena_kun joined 06:57 Altai-man_ left 07:32 zakharyas joined 07:50 leont joined 08:54 Altai-man_ joined 08:57 sena_kun left 09:56 AlexDani` is now known as AlexDaniel, AlexDaniel left, AlexDaniel joined
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
10:55 sena_kun joined 10:56 patrickb joined 10:57 Altai-man_ left 11:24 zakharyas left
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
12:54 Altai-man_ joined
Geth MoarVM/master: 4 commits pushed by (Nicholas Clark)++, (Jonathan Worthington)++ 12:56
12:56 sena_kun left 12:57 Altai-man_ is now known as sena_kun
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
13:21 zakharyas joined 13:26 mst left, mst joined, ChanServ sets mode: +o mst 13:30 mst left, mst joined, mst left, mst joined, ChanServ sets mode: +o mst 13:31 greppable6 left 13:32 greppable6 joined, greppable6 left 13:34 greppable6 joined 13:35 greppable6 left, greppable6 joined 13:36 greppable6 left 13:38 greppable6 joined
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. :-)
14:31 MasterDuke left 14:36 mst left, mst joined, ChanServ sets mode: +o mst 14:51 MasterDuke joined 14:54 Altai-man_ joined 14:56 patrickb left 14:57 sena_kun left 15:04 patrickb joined
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
15:59 mst left, mst joined, ChanServ sets mode: +o mst
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
16:38 patrickb left 16:53 MasterDuke left 16:55 sena_kun joined 16:57 Altai-man_ left
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
17:49 zakharyas left 18:14 mst left, mst joined, ChanServ sets mode: +o mst 18:52 MasterDuke joined 18:54 Altai-man_ joined 18:57 sena_kun left 19:11 zakharyas joined
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
20:35 zakharyas left 20:40 mst left, mst joined, ChanServ sets mode: +o mst 20:55 sena_kun joined 20:57 Altai-man_ left 22:22 murman joined 22:36 murman left 22:54 Altai-man_ joined 22:57 sena_kun left 23:19 murman joined 23:27 murman left 23:33 murman joined, murman left 23:57 murman joined