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
|