github.com/moarvm/moarvm | IRC logs at colabti.org/irclogger/irclogger_logs/moarvm
Set by AlexDaniel on 12 June 2018.
AlexDaniel night o/ 00:01
00:10 Kaiepi left 06:28 Kaiepi joined 06:48 robertle joined 07:09 domidumont joined 07:16 domidumont left, domidumont joined
nwc10 for me, t/spec/S09-typed-arrays/native-int.rakudo.moar 07:21
fails currently
ok 871 - uint array .eager returns identity 07:22
Bytecode validation error at offset 52, instruction 9:
operand type 160 does not match register type 32
in block <unit> at t/spec/S09-typed-arrays/native-int.rakudo.moar line 96
08:02 zakharyas joined 08:13 zakharyas left 08:16 zakharyas joined 08:34 zakharyas left, zakharyas joined 08:45 domidumont left 08:46 domidumont joined
jnthn morning o/ 09:06
nwc10 correct! 09:22
10:25 lizmat joined 10:51 zakharyas left
lizmat only 50 commits until the 10K mark for MoarVM 11:50
jnthn Wow :)
Alrighty, time to try and work on that inlining thingy 11:51
lizmat hehe 11:52
jnthn Which I hope will take me a lot less than 50 commits to get right :P 11:54
12:37 brrt joined
brrt \o 12:41
jnthn o/ brrt
brrt ohai jnthn
i'm in the process of creating a blog post detailing the history of spesh/jit
based on both our blog posts, and maybe timotimo's and nine's if I can find them 12:42
ehm... maybe you can help me find some :-)
timotimo oh, did i make a blog post about spesh?
lizmat looks forward to result :-) 12:44
brrt you might have timotimo
this in response to the comment 'perl6 on moarvm is starting to grow a JIT' :-) 12:45
timotimo i don't seem to recall... wakelift.de has only been a bloggy-blog for a few months now and there's only my reports on profiling grant work on there so far
jnthn brrt: Nice. Mine are all on my 6guts blog. Also there's at least one talk slides that might be worth linking to.
brrt oh, yes 12:47
Geth MoarVM/inline-unspecialized: b44135a1d4 | (Jonathan Worthington)++ | src/spesh/inline.c
Factor out static frame inlinability checks
MoarVM/inline-unspecialized: d3b888b27b | (Jonathan Worthington)++ | src/spesh/inline.c
Factor out spesh graph inlinability checks
jnthn Hmm, it seems that when the call to MVM_spesh_facts_discover was added, then since we already had code that dealt with usage count setting for inlines, we are probably double-counting usages 12:57
Of inlines
timotimo mhm, so we keep more than we need to 13:04
jnthn Yeah, it'd frustrate dead code elim 13:05
timotimo should the code from just inlining that builds counts be thrown out since facts_discover is precise? 13:07
Geth MoarVM/inline-unspecialized: fa471f1d8c | (Jonathan Worthington)++ | 3 files
Fact discovery determines usage counts

Some time ago, a call was added to do fact discovery on inlinees. This process sets usage counts along the way. However, the code to set the usage counts in inlining was also in place, so we doubled all of the counts, which would frustrate dead code elimination possibilities that arise post-inline. ... (6 more lines)
13:11
timotimo that looks good
just from the amount of insertions vs deletions :) 13:12
jnthn ;)
timotimo ugh, we had a little rainstorm an hour ago, but instead of making it cooler it only made it more humid :| 13:17
brrt shall I tell you something funny 13:23
the Netherlands is actually drying out
timotimo the joke was always that the netherlands is going to flood, but instead it'll first turn into a desert? 13:24
brrt alternatingly, yes
Geth MoarVM/inline-unspecialized: 4ecbafa721 | (Jonathan Worthington)++ | src/spesh/optimize.c
Do spesh log of inlines in log_inline
13:26
jnthn hmm, just spotted that optimize_string_equality seems to have debugging fprintf calls left behind 13:28
timotimo aw, crap 13:29
gist.github.com/gerad/247799/e5a81...ab45f2d908 i might want to put this into my git repo 13:30
(and change it so it matches printf.*stderr
oh, but optimize_string_equality starts with "return;" 13:31
so it's not completely bad 13:32
jnthn So two wrongs do make a right? :P
timotimo if C had nestable comments... ;)
13:38 brrt left 13:41 brrt joined
jnthn BOOM segfault! 13:51
13:54 brrt left
jnthn In deopt. In uninlining. Of course it'd be in uninlining. 13:57
lizmat it just got cooler outside! 29.9 -> 29.8 whee! *sigh* 14:00
tadzik laughs in polish 14:01
jnthn 30 here too
tadzik 28!
jnthn Tssk, so what on earth is happening with the code_ref_reg that we need for deopt... 14:02
timotimo it's not marked as used? :o 14:08
jnthn Explicitly, including on the new code path
nwc10 step away from the keyboard for a while?
(and test whether the beer is cold) 14:09
jnthn ooh, could be an existing bug that I've just tickeld 14:10
*tickled
Yeah, I think I see what's happening. We inline more now. 14:15
So probably just hit an existing issue where when we take the bytecode for a candidate and turn it back into a graph, we don't see that the code ref reg is used from that graph 14:17
Alas, that's not a trivial one to fix precisely because we don't know which SSA version to bump the usage count on even if we do know the register. 14:19
ugh, no, that fix didn't help anything :S 14:25
Hmm, well apparently it is triggered and so can help but... 14:34
14:43 brrt joined 14:49 zakharyas joined
dogbert17 brrt, do you have any theories with regards to the problem reported yesterday? colabti.org/irclogger/irclogger_log...07-03#l132 14:50
brrt i have not enough information to answer :-) 14:55
i haven't seen it, at any rate
when does this happen? 14:56
jnthn ooh, I should tried this earlier
The deopt crash only happens under JIT 14:57
Not sensitive to EXPR JIT either
dogbert17 brrt: the valgrind complaints comes early, before any tests have been run, then it fails with bytecode error on test #76. MVM_SPESH_NODELAY=1 MVM_SPESH_BLOCKING=1 ./perl6-valgrind-m t/spec/S02-types/native.rakudo.moar 15:01
jnthn Under the interpreter I get: 15:04
Deopt one requested by interpreter in frame '' (cuid '118')
Will deopt 456 -> 404
But then under JIT it's 15:05
Deopt one requested by JIT in frame '' (cuid '118') (4208 -> 404)
And in the interpreter case we don't have anything to uninline 15:08
Which lends further suggestion to that first number - the current offset - being bogus
dogbert17 brrt, here's the complete valgrind output: gist.github.com/dogbert17/d64f0a8e...f33cfb9b19 15:10
jnthn ahh, think I found it 15:13
dogbert17 spesh related? 15:15
Geth MoarVM/inline-unspecialized: 155f1dfb26 | (Jonathan Worthington)++ | src/spesh/deopt.c
Update deopt logging, which bitrotted
15:18
jnthn Yeah, was not updating the deopt annotations properly, so they scribbled bogus offsets into the table
MasterDuke jnthn: btw, i updated github.com/japhb/perl6-bench recently so it runs on current rakudo. what's needed to get that daily run that was posted somewhere to moarvm.org back up and running? 15:21
dogbert17 and when will MoarVM/inline-unspecialized be merged? 15:22
hmm, perhaps we're discussing two different problems :) 15:23
brrt jnthn: what did I break
dogbert17: it would help so much if I actually knew what code was breaking
oh, I see 15:24
jnthn brrt: You didn't in my case. :) 15:25
brrt: It was a problem that showed up in JIT but could hardly be blamed on JIT after all :)
Geth MoarVM/inline-unspecialized: ca51c5e27d | (Jonathan Worthington)++ | src/spesh/inline.c
Make sure deopt code ref reg is never eliminated

We need this for deopt. In a multi-level inline situation, however, we were at risk of deleting the instruction that set it.
15:26
dogbert17 brrt: what is it that I have failed to provide? (confused) 15:27
brrt up until i saw the valgrind output, I had no idea which script was failing in the first place 15:28
15:28 robertle left
dogbert17 I see, my comments from yesterday were perhaps a bit vague :) 15:29
jnthn dogbert17: As to how long until inline-unspecialized can be merged: not sure. Having fixed the crash I mentioned a moment ago, it now happily builds/tests NQP (not stresssed, mind) but I get a SEGV during the Rakudo build 15:34
Waiting for valgrind to hopefully tell me more :)
brrt how the hell are we breaking 'new' 15:37
jnthn Ah, thankfully that was a silly thinko :) 15:38
Hmmm... 15:48
Wow, I seem to have managed to have a bug that results in a miscompile of NQP such that it miscompiles Rakudo such that it crashes when compiling a Perl 6 program 15:53
Is it just my head that hurts thinking about this? :) 15:55
Geth MoarVM/inline-unspecialized: f59335eaa6 | (Jonathan Worthington)++ | 5 files
Attempt inlining so-far unspecialized callees

Sometimes we know the callee, but there wasn't yet a specialization
  (or an applicable specialization) performed. If the bytecode is small
enough, then we can produce a specialization on demand and try to do an inlining of that.
This doesn't yet convey the types of the incoming arguments to the specialization of the callee, so various possible optimizations are still not performed yet.
15:59
lizmat jnthn: broken turtles all the way down :-) 16:01
jnthn Ah, it gets more and less fun simultaneously. Actually it's a mis-compile of Rakudo that takes place, the NQP itself is OK. I was thrown off by the fact that reverting my new opt didn't help things. 16:04
But master does work out with just a Rakudo rebuild
That means it's one of the commits I did in my branch that led up to the optimization itself.
lizmat :-( 16:07
jnthn Will soon know if fa471f1d8c is to blame; seems somewhat likely 16:09
huh, it isn't 16:10
16:14 AlexDaniel left 16:16 domidumont left
jnthn Ahh...I musta done something wrong in my analysis 16:25
It *is* the new opt
16:28 robertle joined 16:31 scovit left 16:59 domidumont joined
Geth MoarVM/inline-unspecialized: 64dd94d34e | (Jonathan Worthington)++ | src/spesh/inline.c
Cope with inlinees with empty first basic block

We could also implement removing those, but it's probably good for the inliner to be robust in the face of them anyway.
17:03
17:06 scovit joined
japhb
.oO( robust in the face of the enemy^Winlinee )
17:26
jnthn :D 17:27
Geth MoarVM/inline-unspecialized: 8c3859ebd8 | (Jonathan Worthington)++ | src/spesh/inline.c
Don't try to inline with a flattening callsite

The args processing code never had to handle that case before (it is blocked much earlier, by simply never producing a candidate in that case), and so did completely bogus things.
17:29
17:32 Kaiepi left 17:33 Kaiepi joined
jnthn Seems far, far better with that patch :-) 17:36
Enough for today o/ 17:40
17:55 Kaiepi left 17:56 Kaiepi joined 18:08 lizmat left 18:10 zakharyas left 18:17 lizmat joined 18:50 brrt left 19:09 domidumont left 19:25 brrt joined 19:47 Kaiepi left, Kaiepi joined 20:16 AlexDaniel joined 20:35 dogbert17 left 21:04 brrt left 21:10 robertle left 23:05 stmuk joined
Geth MoarVM: jstuder-gh++ created pull request #893:
Display build/commit info on config/make
23:05