01:51 ilbot3 joined 03:33 pharv_ joined 03:47 pharv_ joined 04:02 SUPERNETS joined
SUPERNETS THIS NETWORK IS BLOWJOBS! GET ON SUPERNETS FOR COLD HARD CHATS NOW 04:02
05:50 lizmat joined
nine jnthn: the test runs just fine here on This is Rakudo version 2017.07-138-ga91ad2da8 built on MoarVM version 2017.07-347-g127fa2ce7 06:11
06:36 lizmat joined 07:30 dalek joined, synopsebot6 joined 08:14 lizmat joined 08:45 lizmat joined
jnthn morning, #moarvm 08:47
This network is...what? :P 08:48
I didn't know that was an adjective.
nine: Fails for me in that version, curiously enough. Though it's not an entirely reliable failure 09:06
Darn, the bisect points to e354d1f901468984b95c3ade53ae23f218760e37 09:13
But that was just a change to make more information available to allow more things to be optimized
So it doesn't actually provide much useful information on what's wrong
09:15 edehont joined, zakharyas joined
Geth MoarVM: 9dbaf5c494 | (Jonathan Worthington)++ | src/spesh/codegen.c
Ensure unreachable handlers fully -1'd.
09:16
jnthn That doesn't fix it, just seemed a wise idea
Geth MoarVM: b70995783a | (Jonathan Worthington)++ | src/spesh/codegen.c
Ensure unreachable inline endpoints both -1'd.
09:18
09:24 lizmat joined 09:29 lizmat joined 09:31 brimonk joined, harrisi joined, jpf4 joined 09:55 lizmat joined
Geth MoarVM: 91590c4171 | (Jonathan Worthington)++ | 3 files
Move sp_resolvecode op body into a function.
10:00
MoarVM: 3c36ef2667 | (Jonathan Worthington)++ | 2 files
JIT sp_guardsf and sp_resolvecode.
10:02 lizmat joined
jnthn So of course with it JITted the test I was worrying about passes again :P 10:03
Provided I don't disable JIT
Since I know the current thing I've been working on didn't introduce this problem, though, I see no reason not to get it in.
nine samcv++'s talk is now starting :) 10:08
lizmat well, if we get the video running :-( 10:12
dogbert17_ is there a stream somewhere?
lizmat we have ignition
and liftoff 10:13
dogbert17_ never used it, is there a link one can go to and watch everything from afar :) 10:14
lizmat facebook.com/theperlconference
is the url
timotimo huh i can watch the stream but i can't scroll back to the beginning? 10:15
but i'm out the door in 5
lizmat timotimo: no idea
it is being recorded as well
dogbert17_ yay, it seems to work. Is that samcv? 10:16
lizmat yes
stmuk timotimo: I'd guess you can only rewind once the talk is complete 10:21
timotimo how come the camera's wiggling?
ok, i'm afk 10:24
stmuk no tripod? the audio is nice and clear which is the main thing
Geth MoarVM: 58d3874ed5 | (Jonathan Worthington)++ | 3 files
Implement speculative call optimization.

This is optimization of calls where we can't 100% determine the code object that will be invoked, but we know from our logging that it is likely to be consistent. Thus, we guard the static frame that's being invoked and then can either fast-invoke (pre-selection of the spesh candidate) or inline.
10:26
lizmat shitov uses a handheld 10:27
11:03 lizmat joined 11:09 brrt joined
brrt ohai #moarvm 11:10
samcv++ talk went well i think 11:11
jnthn samcv++ 11:18
lunch & 11:20
11:34 AlexDani` joined 11:43 markmont joined
samcv thanks :) 11:55
11:59 Ven joined, lizmat joined
jnthn back 12:05
12:08 brrt joined
brrt idea. what if we don't have the variadic operators require the number of operand expressions 12:09
we can just list all variadic ones, count the number we have, and splice that into the list 12:10
reduce error surface, as it were
jnthn brrt: Context?
brrt an operator like (DO ….) or (ARGLIST ..) can take any number of expressions
provided we first prefix them with that number 12:11
but the expr-tree-compiler knows that number
currently checks it, too
so if you'd do (DO 3 (foo) (bar) (baz) (quix)) - it will tell you you made a mistake
but that's not ergonomic
so i propose translating (DO (foo) (bar) (baz) (quix)) to (DO 4 (foo) (bar) (baz) (quix)) simply by splicing the number of operands after the DO 12:12
jnthn ah, I see 12:13
Seems less error prone, yes
Urgh, some bug has shown up in the speculative call opt thing I pushed above 12:14
And of course the frame I've got it isolated to is pretty huge 12:15
dogbert17_ jnthn: I'm probably disturbing your debugging but does t/spec/S32-num/fatrat.t work for you? 12:36
dogbert17_ tries with the latest nqp 12:40
jnthn dogbert17_: That's exactly the one I'm debugging
I can get it down to one very specific application of the optimization 12:43
12:43 lizmat joined
jnthn Thing is, it looks entirely normal 12:44
It's actually this call that goes wrong: 12:45
nqp::findmethod(HLL::Grammar, 'EXPR')(self, $preclim, :noinfix($preclim eq 'y='));
But the consequence of it shows up, like, waaay later 12:46
dogbert17_ aha, I just noticed that I haven't been running HEAD nqp 12:50
I thought that was the reason the test failed and that I had disturbed you unnecessarily 12:52
jnthn No, the NQP patch is just addressing a code-gen bug that I spotted while investigating that regression 12:53
dogbert17_ ok, good to know
jnthn Worth having but doesn't address the regression itself 12:54
12:58 buggable joined
dogbert17_ it's a bit funny though, if I run './perl6 t/spec/S32-num/fatrat.t' then it fails immediately 12:59
with Confused 13:00
at /home/dogbert/repos/rakudo/t/spec/S32-num/fatrat.t:175
on the other hand, if I run './perl6-valgrind-m t/spec/S32-num/fatrat.t' it almost works, i.e. it starts running the tests and later fails at: 13:02
ok 245 - === with false outcome
Type check failed in assignment to $a; expected FatRat but got Rat (0.1)
in block at t/spec/S32-num/fatrat.t line 184
in block <unit> at t/spec/S32-num/fatrat.t line 182
jnthn Odd 13:05
It's not the guard insertion and so forth that's busted
It's only when we rewrite it into a fastinvoke that things go bad
13:06 lizmat joined
dogbert17_ so why does it work under valgrind but not without, odd 13:12
another useless observation, if I run './perl6 t/spec/S32-num/fatrat.t' several times it fails at different lines, e.g. 152, 154 and 175 13:14
13:17 lizmat joined 13:18 lizmat joined 13:20 lizmat joined
jnthn It seems that we might be preselecting candidates incorrectly 13:25
I just put in a debugging flag and stuff for it and there's a few
And they're all ones determined by MVM_spesh_arg_guard_run_callinfo 13:27
13:28 brrt joined
dogbert17_ you're closing in on the problem 13:28
13:29 lizmat joined
brrt .oO ( that also saves me a few minutes from my presentation ) 13:29
13:35 lizmat joined
jnthn And it's seemingly wrong for the very place I isolated the optimization to 13:41
Geth MoarVM/even-moar-jit: ebc681b3a3 | (Bart Wiegmans)++ | 3 files
Automatically insert variadic list length

This reduces the potential for errors - the template precompiler already knows the length, so why not have it add it.
13:42
dogbert17_ btw, changing MVM_GC_DEBUG is no longer possible due to a new compiler directive being added '-Werror=pointer-arith' 14:07
jnthn Ah, one cause of mis-matches is that when we optimized there was only a certain specialization, and later a typed one showed up
dogbert17_: :( 14:08
dogbert17_ do you think that fixes the problem
jnthn I think it means my checker might be identifying problems where there are none 14:09
Yeah, it mis-identified some cases as wrong 14:13
14:13 AlexDani` joined
jnthn Now there's a lot less hits 14:14
Which means the hits we get are perhaps more genuinely problems
dogbert17_ so, a nice improvement at the very least then 14:16
jnthn "JIT: can't find deopt all idx" Hmmmmmmmm. 14:23
Yeah, it's looking increasingly like a deopt bug 14:28
Geth MoarVM: 5ba22cb5ea | (Jonathan Worthington)++ | src/spesh/dump.c
Dump certain result nodes in arg guards.
14:29
14:35 lizmat joined
jnthn There's two things it could be. Either it's 'cus we don't deopt the top frame (likely, hopefully easier to fix) or because we somehow miss when resolving some deopt indexes (harder) 14:42
Geth MoarVM: 49ad5752cb | (Jonathan Worthington)++ | src/spesh/deopt.c
Better logging of full deopts.
14:44
dogbert17_ hopes it's the easier to fix problem 14:47
nwc10 "seen" brrt? 14:48
(maybe I should ask on #yapc)
jnthn Pushed a commit an hour and 6 mins ago...
nwc10 ah OK. 14:49
my "problem" is that nqp won't build with his branch now, and MoarVM won't merge (cnflicts)
which actually was the thing that prompted me to be looking for him
clearly I'm not awake enough to remmeber the "what" and tie it back to the "why"
14:50 lizmat joined 14:58 lizmat joined
Geth MoarVM: 7f0f753e55 | (Jonathan Worthington)++ | 4 files
Add debugging aid for spesh preselection.
15:14
MoarVM: ec6781acfd | (Jonathan Worthington)++ | 7 files
Make rebless deopt stack top frame also.

Previously it would only deoptimize the frames below this point. That was not sufficient in a frame like `statement` in the Perl 6 grammar, which does a rebless and then more calls that may, thanks to the recent speculative calls specialization work, have been specialized.
15:20
jnthn That's the fatrat fix 15:21
Another case of a long-standing bug that was only just exposed by more aggressive optimizations being available 15:22
15:26 lizmat joined
jnthn But darn, various failures under spesh stress testing still 15:31
Ah, seems there's something that goes awry with enum value creation 15:33
hm, with rebless
15:41 Ven joined
jnthn Ah, seems this is a simpler one at least. 15:47
15:51 lizmat joined
Geth MoarVM: 37deb55eea | (Jonathan Worthington)++ | src/spesh/facts.c
Bump usage of writers in deopt instructions.

Otherwise, we might tweak the register that the operation writes into, causing the value to not be in the right place after deopt.
15:52
jnthn Yeah, that clears up the trouble. :) 15:55
16:04 dogbert17 joined
dogbert17 jnthn++ 16:04
jnthn With the new speculative code opt, we can now - in theory - inline the block in for ^10000000 { } 16:07
In practice, it seems to miss out on inlining it about half of the time, which is bizzare.
dogbert17 do you think it will have an effect on test-t?
jnthn But when it does nail the inline it runs in about 0.68s instead of 1.75s
dogbert17: Hopefully :) 16:08
Though it sure will need some tuning
I think it probably makes some bad decisions at the moment
Also it inserts some guards that it then doesn't use, so I need to re-order things to try and not do that.
I think there's budget for one more attempted opt, which will be to see if I can get inlining of closures to work. 16:09
I'm curious why it manages to miss the opt some of the itme
*time
ohh 16:10
It misses the OSR
dogbert17 do you know why?
jnthn No 16:11
nwc10 so time to cook food?
dogbert17 Vindaloo?
jnthn It's probably a race 16:12
But...how is it happening...
nwc10 it consistently misses the OSR?
jnthn No
It hits it sometimes, misses it sometimes
There's potential for a race in that it's produce by one thread, and watched for by the other 16:13
It isn't a problem producing the specialization 16:14
I can see from the inline log that it consistently manages to inline
Geth MoarVM: c0f7a3b14f | (Jonathan Worthington)++ | src/spesh/candidate.c
Fix data race that could lead to missed OSR.
16:20
jnthn Makes a factor of 3 difference if it manages or not :P
dogbert17 impressive
so, what's for dinner? 16:21
jnthn I got curious and disabled the opt I spent the last couple of days putting in 16:22
0m1.412s before
0m0.667s after
m: say 0.667 / 1.412
camelia 0.472380?
jnthn for ^10000000 { } in half the time :)
Dinner is shepherd's pie :) 16:23
dogbert17 very nice
what, that doesn't sound like an Indian dish :)
jnthn There actually are various Indian-style variants of it by making a different kind of sauce 16:27
Though mine is the traditional worcestershire sauce version 16:28
dogbert17 so nothing extremely spicy today 16:29
jnthn No, not really
Oh, for more fun
Didn't find worcestershire sauce for sale here 16:30
So have to concoct it myself :)
dogbert17 :)
jnthn Indian is the most common thing I cook, but it's nice to have some variety :) 16:31
Anyways, I'm off home to warm/eat that :)
(Cooked a big one yesterday, so it'll feed us for at least 2 dinners :)) 16:32
dogbert17 is getting hungry 16:33
16:42 zakharyas joined 16:52 lizmat joined 16:57 Ven joined 17:04 colomon joined 17:17 colomon joined 17:21 lizmat joined 17:59 colomon joined 18:23 SourceBaby joined 18:29 Ven joined 19:08 brrt joined
brrt ohai 19:12
19:15 stmuk_ joined
brrt samcv bumped MOAR_REVISION, which is why my branch won't build 19:17
timotimo ah yeah 19:28
personally, i'd like a --ignore-revision flag for configure.pl
19:50 brrt joined 19:56 evanm joined
Geth MoarVM/even-moar-jit: 48 commits pushed by (David Warring)++, MasterDuke17++, (Timo Paulssen)++, (Stefan Seifert)++, (Dagfinn Ilmari Mannsåker)++, (Jan-Olof Hendig)++, niner++, (Jonathan Worthington)++, (Samantha McVey)++, (Bart Wiegmans)++
review: github.com/MoarVM/MoarVM/compare/e...15d364f1d4
20:00
20:01 Geth joined 20:34 lizmat joined 20:49 colomon joined 21:37 markmont joined 21:41 evanm joined 22:16 dogbert17 joined 22:46 colomon joined 23:24 colomon joined 23:38 colomon joined