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.
00:02 reportable6 left 00:05 reportable6 joined 01:44 evalable6 left, linkable6 left 01:57 tealecloud joined 02:01 tealecloud left 02:23 frost joined 02:29 tealecloud joined 02:34 tealecloud left 02:45 evalable6 joined 03:13 rakuUser left 04:36 committable6 left, nativecallable6 left, coverable6 left, squashable6 left, benchable6 left, bisectable6 left, shareable6 left, unicodable6 left, notable6 left, releasable6 left, evalable6 left, sourceable6 left, quotable6 left, bloatable6 left, statisfiable6 left, greppable6 left, reportable6 left, tellable6 left, bloatable6 joined, nativecallable6 joined 04:37 reportable6 joined, quotable6 joined, greppable6 joined 04:38 evalable6 joined, squashable6 joined, unicodable6 joined, notable6 joined, statisfiable6 joined 04:39 tellable6 joined 04:47 linkable6 joined 04:53 kjp left 04:55 kjp joined 05:36 committable6 joined 05:37 bisectable6 joined 06:02 reportable6 left 06:03 reportable6 joined 06:31 tealecloud joined 06:35 Altai-man joined, tealecloud left 06:36 Altai-man left 06:37 sourceable6 joined 06:38 shareable6 joined 06:39 Altai-man joined
nine jnthnwrthngtn: that NULLing of source and map in uninline github.com/MoarVM/MoarVM/blob/new-...eopt.c#L77 doesn't play well with OSR. Leads to a segfault in t/spec/S32-str/sprintf-e.t when run with MVM_SPESH_BLOCKING=1 MVM_SPESH_NODELAY=1 06:59
jnthnwrthngtn: segfault happens in github.com/MoarVM/MoarVM/blob/new-...ard.c#L484 due to NULL in args.map 07:00
07:38 benchable6 joined
nine I think it shouldn't be too hard to find the actual pointers for source and map. After all we know the callsite and the caller's pc which probably points after the dispatch op. That ought to be enough information to calculate the position of the map. And source is just the caller's work array anyway. 07:39
07:39 releasable6 joined 08:00 tealecloud joined
jnthnwrthngtn nine: That's curious; the code I ported it from didn't seem to be setting up those things. 09:04
nine: But yeah, if they're needed, we can find 'em
09:22 lizmat left 09:23 lizmat joined, TempIRCLogger__ joined
jnthnwrthngtn nine: Are you already poking at it, or should I put it on my todo list? 09:23
09:25 TempIRCLogger left 09:38 coverable6 joined
dogbert11 jnthnwrthngtn: so what is on your todo list apart point 0, i.e. coffee? 09:54
*apart from 09:55
jnthnwrthngtn dogbert11: Start of month accounting and looking at some other $dayjob projects for a bit right now 10:04
But I really want to work on the missing inlining etc.
dogbert11 perhaps you'll get your chance after lunch 10:12
nine jnthnwrthngtn: I have a vague idea on how to implement it and may have time in the evening to give it a try
jnthnwrthngtn nine: OK, will leave it for you :) 10:24
nine \o/
jnthnwrthngtn Doing the resumption init stuff is already quite enough of a headache :)
11:18 linkable6 left, evalable6 left 11:19 evalable6 joined
timo i don't even know how resumption stuff is going to work; will we just be keeping a few registers around in the frame that did the dispatch call so that whatever we called to can store something in a place that will later be found somehow? 11:24
or is there a record on the stack for this purpose instead? that seems more likely 11:28
and then we'd have ops that we generate that can interact with that
12:02 reportable6 left 12:05 reportable6 joined
jnthnwrthngtn timo: github.com/MoarVM/MoarVM/commit/07...086710baf8 outlines the strategy somewhat 12:14
12:15 rakuUser joined
timo that sounds deceptively simple 12:16
12:20 linkable6 joined 12:42 frost left
jnthnwrthngtn Yes, but it punts the complexity to the time we do a resumption, and need to find all the pieces 13:09
timo true enough
Geth MoarVM/new-disp: ee69c512ba | (Stefan Seifert)++ | src/spesh/deopt.c
Fix possible segfault in arg guard run after uninlining

It's possible that after deoptimization uninlines, we run arg guards which need to access map and source in arg_info. Obviously setting those to NULL will not cut it in this case.
Fix by setting up source and map for real. Luckily the arg map is always just the last arguments of the dispatch op. Since the return_address points at the next op after the dispatch, we just have to count back by the number of arguments to get the start of the map. And source will be simply the caller's work registers.
13:22
nine jnthnwrthngtn: it really was easy enough to do between meetings :)
13:23 tbrowder left, tbrowder joined
jnthnwrthngtn nine++ 13:25
Looks right to me at first glance 13:27
dogbert11 nine++, interested in fixing the SEGV in t/spec/S32-io/io-cathandle.t ? 13:29
Geth MoarVM/new-disp: cf26eb505b | (Jonathan Worthington)++ | 12 files
Build table of resume inits for spesh candidate

The table contains the static information we'll need in order to be able to handle a dispatch resumption taking place when the dispatch had its origin in specialized code. Some information that was previously in the
  `sp_resumption` op moves to that table entry. We write the registers
into the entry at code-gen time, so that other optimizations are free to reorganize them up to that point.
Since the resumption implementation is not yet updated to account for specialized resumable dispatches, none of this is yet enabled.
15:16
nine Andrei, you've found another segfault? 15:47
dogbert11 who's Andrei? 16:22
lizmat
.oO( the other I )
nine Ah, I feared it would be too obscure, but it was worth a try :) www.quotes.net/mquote/116839 16:31
Geth MoarVM/new-disp: f962d9e5e1 | (Jonathan Worthington)++ | 2 files
Restructure resumption search for specializations

Rather than simply looking for dispatch run/record on the stack, we'll also need to look for spesh candidates that contain dispatches with resume initialization data too, where there are no such records. This restructures the resumption code so we can do that, and manages to successfully find a deopt index match too, when translating dispatch programs with resume initialization state is enabled (however, it continues to be disabled for the moment, so the oops is never hit).
16:52
jnthnwrthngtn I'm gonna need to be smarter than today to handle the inline case of this... 16:54
In theory now I "just" need to implement getting it to pull the resume init args out. 16:55
And we'll be able to have spesh linking back at least
dogbert11 nine: aha, I didn't know that one :) 16:57
to repro the SEGV run MVM_SPESH_NODELAY=1 ./rakudo-m -Ilib t/spec/S32-io/io-cathandle.t a couple of times with a nursery size of say 16k 16:58
jnthnwrthngtn Time for a break. 17:03
dogbert11 jnthnwrthngtn: perhaps some nice Indian food
lizmat nine: yeah, too submerged :-) 17:48
18:02 reportable6 left 18:08 patrickb joined 18:17 tealecloud left
MasterDuke i love that book and movie, and that's a fantastic scene, but i missed the reference 18:45
19:16 patrickb left
nine dogbert11: sorry, cannot reproduc 19:37
dogbert11 nine: odd, perhaps it has something to do with setting MVM_GC_DEBUG=1 which I forgot to mention :( 20:05
jnthnwrthngtn dogbert11: Not today; went to a nearby Vietnamese restaurant :) 20:11
dogbert11 was the food good? 20:15
jnthnwrthngtn Yes. :) 20:17
dogbert11 :) 20:23
20:23 squashable6 left 20:24 squashable6 joined 22:25 evalable6 left, linkable6 left 22:26 evalable6 joined 22:47 tealecloud joined 22:52 tealecloud left 23:03 reportable6 joined 23:27 linkable6 joined