github.com/moarvm/moarvm | IRC logs at colabti.org/irclogger/irclogger_logs/moarvm
Set by AlexDaniel on 12 June 2018.
Geth MoarVM: 1eeae85fa0 | (Timo Paulssen)++ | docs/heapsnapshot.markdown
Document heapsnapshot format version 3.1
00:01
timotimo jnthn: would be glad to hear what you think, it's possible i've missed something obvious. it's likely i've explained one or two things just imprecisely enough to make implementators confused or frustrated ;)
01:37 anatofuz left 02:01 anatofuz joined, anatofuz left 02:02 anatofuz joined 02:40 anatofuz left 02:44 anatofuz joined 03:16 AlexDaniel left, AlexDaniel joined 03:17 AlexDaniel left, AlexDaniel joined 05:26 Kaypie joined, Kaiepi left 05:35 robertle_ joined 05:37 domidumont joined 05:42 domidumont left 06:22 domidumont joined 06:30 domidumont left 06:42 anatofuz left 06:43 anatofuz joined 06:46 anatofuz left, anatofuz joined 07:00 domidumont joined 07:02 sena_kun joined 07:30 anatofuz left 07:50 anatofuz joined 08:01 zakharyas joined
nine Aaaah...I finally understand why even running the GC on every allocation does not catch all cases of missing MVMROOT. We can literally collect too often that way. This will cause objects to get promoted to the old generation (thus fixed in memory) before they get passed to the buggy code. 08:13
So I guess to get the most out of it, we'd have to prohibit promotion to gen 2 and run with a huge nursery instead. 08:15
Unfortunately with that even a perl6 -e '' takes > 4 minutes to run. That reduces its usefulness somewhat 08:32
nwc10 pubs are open! 08:33
08:44 anatofuz left, anatofuz joined
nine But it indeed catches more cases 08:57
08:58 anatofuz left, anatofuz joined
jnthn nine: Another approach is to reallocate fromspace each time and mprotect the old one so any access to it blows up 09:03
09:03 anatofuz left
jnthn Which has a memory cost but probably less of a performance one :) 09:03
nwc10 I should did up my old branches from 4 or 5 years ago which tried various things like this, and see if they can be ressurected
but there are many things that I also should do 09:04
and things like "Tax Return" have actual deadlines
jnthn Ah, right, it was *you* who came up with this. :)
nine jnthn: way ahead of you :) That's exactly what I've already implemented
But I still need it to collect often 09:05
nwc10 I think one had something like 256 nurseries, cycled round them, and all were marked unreadable except for the current one (and the "two" during GC)
jnthn Cool. Though nwc10 was ahead of us both by years :D
nwc10 yes and no
I just *found* problems. You fixed them
nine is
nine++ # finds *and* fixes problems.
nine There's e.g. an MVMROOT(tc, handler) missing here: github.com/MoarVM/MoarVM/blob/mast...lize.c#L37 09:06
If only test runs didn't take ages :) 09:07
Anyway, have to go to the office, so I'll just keep it running while I'm away
nwc10 I think that he must be in a different time zone from me. I'm thinking about going *from* the office. 09:08
:-)
nine Nah, there's just this one meeting where I have to be there in person
09:35 anatofuz joined 09:36 anatofuz_ joined 09:39 anatofuz left 09:40 anatofuz_ left 10:07 anatofuz joined 11:07 anatofuz_ joined 11:08 zakharyas left 11:10 anatofuz left 11:11 anatofuz_ left
Guest15407 nine: I have a juicy SEGV for you should you be interested 11:14
11:38 anatofuz joined 11:48 anatofuz left 11:49 anatofuz joined 11:54 anatofuz left 11:56 anatofuz joined 12:00 anatofuz left 12:08 anatofuz joined
Geth MoarVM: 539f1d0314 | (Stefan Seifert)++ | src/gc/finalize.c
Fix possible access to fromspace in finalize_handler_caller

An untimely GC run may move *handler before we access it to find the invokee. Fix by MVMROOTing handler.
12:17
MoarVM: 241be06be0 | (Stefan Seifert)++ | src/io/dirops.c
Fix possible access to fromspace in MVM_dir_open

Allocating the result may trigger a GC run which could move dirname which we access later on. Fix by MVMROOTing dirname.
12:19 lucasb joined
Guest15407 nine: I believe there's a bug lurking here: github.com/MoarVM/MoarVM/blob/mast...ops.c#L496 12:32
12:55 anatofuz_ joined 12:58 anatofuz left 12:59 anatofuz_ left 13:04 zakharyas joined
timotimo i just glanced over the v8 compressed pointers doc 13:10
and one thing that caught my eye is the small integer stuff
i wonder how big the impact would be to teach REPR and STABLE about the lowest bit of a pointer to return P6int and BOOTInt respectively, and making the P6int REPR understand pointers that, rather than point at something, have a value inside themselves 13:11
hmm. 13:12
more likely that we'd want to implement this for p6bigint rather than p6int 13:13
since p6int is mostly embedded in other objects anyway and as such doesn't have the overhead of object headers and such in the first place 13:14
hum. our NFAs and such have arrays that are object-typed but often contain integers. small ones at that. 13:15
maybe there's an opportunity there
actually the heap snapshot of core setting compilation that i took has boatloads of BOOTInt collectables in it 13:20
lizmat www.reddit.com/r/perl6/comments/d3...ated_with/ 13:26
13:29 MasterDuke left
discord6 <RaycatWhoDat> The more I work with grammars, the more I realize Perl 6 is akin to Racket in regards to building DSLs. 13:58
15:19 Kaypie is now known as Kaiepi
Geth MoarVM/expr-jit-devirtualize: 4e982f0932 | (Bart Wiegmans)++ | 2 files
[JIT] Deoptimization in the expression JIT

Now that sp_guard* ops are non-special (because they use the deopt index directly) it's relatively straightforward to implement them as expression template. So we did.
It turns out that the deoptimization code doesn't unwind the JIT stack, so we need an explicit jump-to-exit, which is fine. We can optimize this stuff by further by taking it out of the mainline code, but that's interesting for another day.
15:21
MoarVM/expr-jit-deopt: 5 commits pushed by (Bart Wiegmans)++ 15:26
jnthn brrt++ 15:28
15:30 MasterDuke joined 15:31 domidumont left 15:47 zakharyas left
Geth MoarVM: bdw++ created pull request #1176:
Deoptimization in the expression JIT compiler
16:19
16:19 brrt joined
brrt \o 16:20
nine After 4 hours my make test is starting to progress into t/02-rakudo
japhb nine: Is this the run with no gen 2 and huge nursery? 16:24
nine hes
yes
16:26 dogbert17 joined
dogbert17 clickbaits nine with gist.github.com/dogbert17/bd5a41e0...d8a1536915 16:27
17:11 brrt left 17:33 Altai-man_ joined
MasterDuke nine: that's a very dramatic slowdown. is it really to be expected? would optimization of those conditions help regular runtime? 17:35
17:35 sena_kun left
nine MasterDuke: this is turning every allocation into a garbage collection. And every GC into a full GC with practically every object getting copied and all pointers updated. 18:28
dogbert17: I'm too tired to figure this out but may have a look tomorrow 18:29
MasterDuke ah, didn't realize it was quite that extensive of a change
18:58 zakharyas joined 19:15 sena_kun joined, sena_kun left 19:17 Altai-man_ left 19:49 zakharyas left 20:42 AlexDaniel` left 20:52 AlexDaniel` joined 21:28 anatofuz joined 22:05 anatofuz left 22:06 anatofuz joined 22:07 anatofuz left 22:08 anatofuz joined 23:07 anatofuz left 23:18 dogbert17 left 23:35 anatofuz joined