github.com/moarvm/moarvm | IRC logs at colabti.org/irclogger/irclogger_logs/moarvm
Set by AlexDaniel on 12 June 2018.
00:00 konvertex left
jnthn .tell jnthn When you re-work deopt tomorrow, rather than having to rewrite the whole stack and worry about frame expansions all the way down, you can instead fiddle the frame kind to be a "please deopt me" one, and then the only place deopt has to mess with is the frame on the stack top, which makes your job seriously less awful 00:02
tellable6 jnthn, I'll pass that message to your doctor
jnthn Better cache locality and avoids having to force all the frame to the heap too. 00:04
'night
00:08 harrow joined 01:22 dogbert17 left 02:10 squashable6 left 02:11 squashable6 joined, squashable6 left 02:13 squashable6 joined 06:17 squashable6 left 06:19 squashable6 joined 06:39 patrickb joined 06:55 patrickb left 07:45 Geth left 07:49 Geth joined 07:50 zakharyas joined 08:43 Altai-man_ joined 09:26 konvertex joined
jnthn morning o/ 10:00
lizmat 7 seconds late! :-) 10:03
jnthn :P 10:04
lizmat but yeah, one of those days where you realize you have to replace a bottom piece of your carefully constructed tower
nwc10 \o 10:09
jnthn Looks like last night me read an OSR paper and got an idea (oddly, not one that appears in the paper) about how to make the deopt changes far less painful 10:10
nwc10 "Doctor, doctor, it hurts when I do this" "well, don't do that then" ?
but yes, your summary last night seems very elegant 10:11
10:13 MasterDuke left 10:26 sena_kun joined 10:27 Altai-man_ left 10:29 MasterDuke joined 10:41 MasterDuke left
jnthn lunch, bbiab 11:03
11:08 japhb left 11:55 AlexDaniel joined 11:56 AlexDaniel left, AlexDaniel joined 11:59 AlexDaniel left 12:05 MasterDuke joined
jnthn Mmm, gulaÅ” 12:19
12:24 zakharyas left 12:25 Altai-man_ joined 12:27 sena_kun left
nine Sounds nice. I think I'm gonna grab some lunch as well :) 12:34
jnthn Why does it segv? Ohh...this looks bad... :) 12:41
(gdb) p tc->stack_current_region->alloc
$7 = 0x7ffff5797080 ""
(gdb) p tc->stack_current_region->alloc_limit
$8 = 0x7ffff5796010 "
MasterDuke i'm still not sure why gist.github.com/MasterDuke17/c505c...53c47f048c segvs in MVM_jit_emit_primitive 12:50
timotimo have we double-checked what each register is mapped to? 12:52
at the point of segv, what does "x/i $rip" say? 12:54
or is it %rip?
jnthn
.oO( rest in peace? )
13:00
Geth MoarVM/new-disp: b0ce9e9446 | (Jonathan Worthington)++ | 6 files
Make all frames have a call stack record

Even those that get heap promoted now leave one behind. For now, this doesn't achieve anything particularly new, aside from cleaning up some aspects of call stack region management. However, it also paves the way for putting disptchers and flattening data on the call stack (and having them automatically get dropped when we return from the things that they ... (6 more lines)
13:20
13:24 zakharyas joined
MasterDuke timotimo: => 0x7ffff79c2c29 <MVM_jit_emit_primitive+22008>: mov (%rax),%rdx 13:26
jnthn heh, with spesh disabled it manages to even build Rakudo 13:27
I'm a bit spooked 'cus I'm sure continuations should be really broken, but it's probably just about robust enough to survive
nine MasterDuke: I'm still confused. Is it actually the MVM_jit_emit_primitive function that's segfaulting, or code generated by the JIT? 13:28
MasterDuke gist updated with a gdb backtrace 13:29
nine So it's the compiler that's failing 13:30
MasterDuke: just try removing lines from the assembly until it doesn't break anymore 13:31
Then you know what it's tripping over
MasterDuke heh
dies at `| lea ARG2, MVMDISPINLINECACHE:TMP2->entries[slot];` 13:33
i.e., up until that line is fine
jnthn Amazingly, Rakudo does - spesh disabled - build and pass much of spectest, even before I fix up continuations... 13:34
nine jnthn: how much are continuations actually used? 13:35
jnthn gather/take, await
And the failures I see are largely in list-y and thread-y things
For such a deep change I feared more fallout at this point. 13:36
Granted it probably can get out of sync and get away with it at present.
Yeah, almost all explosions are in concurrency tests 13:37
OK, now for the continuations...
nine MasterDuke: come to think of it, that line doesn't make that much sense anyway 13:39
timotimo MasterDuke: try "info registers" 13:40
nine MasterDuke: what you're doing there is effectively mov ARG2, TMP2 + offsetof(entries) + slot * 8, i.e. TMP2 + a constant
timotimo nine: it's AT&T syntax i think
MasterDuke: `set disassembly-flavor intel`
nine Yeah, set disassembly-flavor intel
MasterDuke i got farther with `| mov TMP3, MVMDISPINLINECACHE:TMP2->entries; | lea ARG2, [TMP3 + slot];`, but still a segv later
but the segv is in nowhereland 13:41
gist updated 13:42
nine Oh, btw. this thing will blow up on Windows, because there ARG1 == TMP1, so you're overwriting ARG1 after setting it
MasterDuke "arg", that problem again. well, easy fix 13:43
nine I'd probably just use ARG* even for temporaries, to make it clear 13:44
jnthn heh, pro tip: GC mark the call stack... :) 14:04
Geth MoarVM/new-disp: 5819f5a00f | (Jonathan Worthington)++ | 4 files
GC mark the callstack, plus assert it's in sync

The assertion revealed the forgotten marking. Now, the assertion only fails in the continuations tests in NQP, which is what it was expected to detect.
14:08
14:26 sena_kun joined 14:28 Altai-man_ left 14:29 Kaiepi joined
Geth MoarVM/new-disp: 5235e4d503 | (Jonathan Worthington)++ | 2 files
Fix a naming inconsistency
15:00
MoarVM/new-disp: b54a047112 | (Jonathan Worthington)++ | 3 files
Refactor marking of frames living on call stack

They're now handled as part of the call stack walking, so we don't have to traverse it in two places. This will also ease continuation handling.
15:43 patrickb joined 16:25 Altai-man_ joined 16:27 sena_kun left 16:52 Altai-man_ left 16:56 MasterDuke left 17:08 MasterDuke joined
MasterDuke nice, nqp and rakudo now both build, with lego jit bails from sp_getlexstatic_o gone. not sure what the testing situation is though, were they clean at any point? 17:12
looks like the same tests fail with that non-jitted 17:15
17:16 sena_kun joined
Geth MoarVM: MasterDuke17++ created pull request #1286:
Lego JIT implementation of sp_getlexstatic_o
17:22
MasterDuke not quite sure what a template for ^^^ would look like 17:26
17:27 japhb joined
Geth MoarVM/new-disp: baa27a97c1 | (Jonathan Worthington)++ | 12 files
Mostly move continuations to new callstack model

This is required for dispatchers because we shall also needs to save their state when taking a continuation. The new approach is to always have continuations allocate stack frames within a fresh region (so a reset is a region base). This means that we can avoid looking through every frame, and just look through the (much smaller number of) regions ... (23 more lines)
17:50
jnthn Rakudo manages to get through its build with this. Tests are explosive, though with one of the known todo panics. :) 17:54
Home time.
o/ 17:55
(Oh, and also: only with spesh disabled, 'cus I didn't update deopt yet.)
18:25 Altai-man_ joined, zakharyas left 18:27 sena_kun left 18:40 Kaiepi left, Kaiepi joined 18:41 Kaiepi left 18:59 Kaiepi joined
nwc10 \o 19:05
beer!
MasterDuke this morning i just bottled the stout i'm brewing 19:08
nwc10 ooooh 19:18
19:49 zakharyas joined 20:25 sena_kun joined 20:27 Altai-man_ left 20:36 zakharyas left 21:31 hoelzro left 21:42 hoelzro joined 21:44 Kaiepi left 21:47 Kaiepi joined 21:48 Kaiepi left, Kaiepi joined 22:01 dogbert17 joined
dogbert17 I get test failures in t/spec/S32-io/io-cathandle.t 22:01
get native descriptor requires an object with REPR MVMOSHandle (got Scalar with REPR P6opaque) 22:02
lizmat github.com/rakudo/rakudo/commit/f33ce01c11 22:04
dogbert17 ^^
github.com/rakudo/rakudo/commit/61046d7695 probably caused it 22:05
22:25 Altai-man_ joined 22:27 sena_kun left 22:44 Altai-man_ left 23:12 squashable6 left 23:14 squashable6 joined 23:48 patrickz joined 23:52 patrickb left