| IRC logs at
Set by AlexDaniel on 12 June 2018.
00:44 squashable6 left 00:46 squashable6 joined 00:47 squashable6 left 00:50 squashable6 joined 00:54 Altai-man_ joined 00:56 sena_kun left 02:55 sena_kun joined 02:56 Altai-man_ left 04:53 committable6 left, nativecallable6 left, quotable6 left, coverable6 left, unicodable6 left, squashable6 left, bloatable6 left, sourceable6 left, linkable6 left, tellable6 left, notable6_ left, greppable6 left, statisfiable6 left, reportable6 left, evalable6 left, shareable6 left, releasable6 left, bisectable6 left, evalable6 joined, bloatable6 joined, linkable6 joined, shareable6 joined 04:54 reportable6 joined, committable6 joined, tellable6 joined, Altai-man_ joined, statisfiable6 joined 04:55 nativecallable6 joined, squashable6 joined, bisectable6 joined, greppable6 joined, releasable6 joined 04:56 unicodable6 joined, quotable6 joined, notable6 joined, coverable6 joined, sourceable6 joined, sena_kun left
nwc10 good *, #moarvm 06:36
06:55 sena_kun joined 06:57 Altai-man_ left 07:29 zakharyas joined 07:30 zakharyas left, zakharyas joined 08:39 leont_ joined, leont joined 08:54 Altai-man_ joined 08:56 sena_kun left
jnthn good * o/ 09:19
Altai-man_ o/ 09:20
While it's a nice morning, are there any known MoarVM blockers I should know about? 09:21
jnthn Not that I'm aware of. Pretty much everything I've been doing is off in a branch anyway
nwc10 \o 09:22
10:44 zakharyas left 10:55 sena_kun joined 10:57 Altai-man_ left
jnthn So, where was I with the flattening dispatch stuff... 12:19
Apparently mis-reading output and thinking something didn't work, that does work... 12:21
Oh, or not
nwc10 work coffee or home coffee today?
moritz I don't know, but it sounds very flattening :D 12:22
jnthn Home coffee :) 12:29
Though work coffee soon will gain a new attraction... 12:30
Getting a proper fitting in place for the air conditioning exhaust tomorrow.
Meaning that it should work much better.
It was an off-by-one. It's always an off-by-one... 12:31
Geth MoarVM/new-disp: 89eeb9725b | (Jonathan Worthington)++ | src/core/callsite.c
Fix thinkos in callsite interning
MoarVM/new-disp: df29f4a881 | (Jonathan Worthington)++ | src/disp/inline_cache.c
Implement monomorphic flattening dispatch

That is, check if the flattening results in the same shape always, and if so, just run the dispatch program that goes with that shape.
12:34 zakharyas joined 12:54 Altai-man_ joined 12:57 sena_kun left
nwc10 still All tests successful 13:07
jnthn: what was supposed to change in test outout? 13:10
jnthn Nothing in the NQP test; I've got a Rakudo one-liner I'm using to exercise this stuff for now, though surely there's spectests it'll hit too 13:11
At least, I'd hope that we have spectests for private method dispatch and qualified method dispatch that do flattening. 13:12
13:12 vrurg left, vrurg joined
Geth MoarVM/new-disp: 15e4f9f96b | (Jonathan Worthington)++ | 3 files
Do first-level polymorphic flattening dispatch

Also, fix a memory leak spotted in non-flattening polymorphic to polymorphic transitions.
MoarVM/new-disp: 0026a066e9 | (Jonathan Worthington)++ | src/disp/inline_cache.c
Complete polymorphic flattening dispatch handling

At least, for now. We'll have to go a step further once we get to the point of doing something smarter in the megamorphic case.
jnthn And I guess that's flattening done. 13:25
And the callsite interning improvements
jnthn looks at the todo list 13:27
So, next is "Teach spesh about dispatch and get it to do the rewrite of a dispatch instruction into guards + linking or inlining." 13:28
nwc10 are you sure that's right? Isn't "drink tea" next? 13:29
jnthn Hm, that's a good idea...
nine Speshing dispatch? Sounds like a minuscule item, hardly worth mentioning... 13:30
13:31 lucasb joined
jnthn How hard could it be? 13:33
nine Not much harder than in-process precompilation :P
jnthn Hopefully easier... :) 13:36
At least I in theory know how to do this.
nwc10 jnthn: create an issue; assign it to nine or brrt; step away from the keyboard? :-) 13:39
Geth MoarVM/new-disp: 08dcf55427 | (Jonathan Worthington)++ | src/disp/inline_cache.c
Add missing inline cache GC marking
jnthn But then nine++ might make *me* a ticket about precompilation ;) 13:44
nine Oh I can do that? :D 13:45
jnthn Oh lovely, the first spesh segfault is in calculating SSA form
nine Confused by variable argument number obs? 13:47
jnthn Presumably, though I don't immediately spot why timotimo++'s changes to handle this aren't sufficient 13:49
nine jnthn: just omitting the repossession entry for the "Test" stash gets me surprisingly far. I actually only wanted to find out what or how exactly it would explode, but it just doesn't. 14:22
nwc10 jnthn: all NQP tests successful. Is this one supposed to be able to get anywhere with Rakduo? (without SPESH)
jnthn nwc10: Yes, it passes most of Rakudo make test for me, so long as MVM_SPESH_DISABLE=1 is in the environment 14:24
That has to be on for the whole Rakudo build too 14:25
nwc10 OK, trying this (had actually alraedy started)
to see if ASAN gets excited
Geth MoarVM/new-disp: ed7865175e | (Jonathan Worthington)++ | src/spesh/graph.c
Fix dispatch op info building

A str literal operand is of width 4, not 2, which was why we ended up doing bogus callsite reads. Also remove debug output, now it's seemingly building the right thing.
MoarVM/new-disp: 71ebb95b99 | (Jonathan Worthington)++ | src/spesh/graph.c
Dispatch instructions should end a basic block
nwc10 Abort. Restart! 14:27
14:33 klapperl_ left
timotimo ooh that's a good catch, i didn't think of different-sized arguments 14:50
14:50 greppable6 left 14:52 greppable6 joined 14:54 klapperl joined 14:55 sena_kun joined 14:56 Altai-man_ left
nwc10 jnthn: only reads of NULL pointers from the rakduo tests 15:44
all 4 seem to be
#0 0x7ff935c8997e in optimize_bb_switch src/spesh/optimize.c:2951
... SEGV on unknown address 0x000000000028
jnthn That'd imply you have spesh enabled? :) 15:45
nwc10 oh wait
other window
got: "multi meth disp in new dispatcher NYI\n in block <unit> at -e line 1\n\n" 15:47
OK, that one makes sense :-)
same again 15:48
jnthn Yup, that's "expected" (in so far as, I really didn't implement that yet)
nwc10 t/02-rakudo/15-gh_1202.t is ASAN but it's ASAN in master
unclear why t/05-messages/10-warnings.t 15:50
is failing but it's not ASAN or SEGV
Geth MoarVM/new-disp: 44791bcf33 | (Jonathan Worthington)++ | 5 files
Mark dispatch ops with attrs, stub sp_dispatch_*

These sp_dispatch_* ops will be used when we cannot rewrite the dispatch op into something better.
MoarVM/new-disp: 13e702254f | (Jonathan Worthington)++ | 5 files
Factor out and fix dispatch op info calculation

It needs to take special care of longer argument sequences too, which would otherwise overrun the buffer for arg info.
MoarVM/new-disp: 687eefd300 | (Jonathan Worthington)++ | 3 files
Analyze dispatch instructions, prepare for opts

This look at the statistics for a given type tuple and decides if the dispatch is never hit, monomorphic, or polymorphic. Note that this is not the same thing as looking at the callsite state, since that is not correlated with particular incoming type tuples. With this, we also know we can't properly handle dispatch, meaning the SEGVs are replaced with panics.
16:17 MasterDuke joined
MasterDuke jnthn: it looks like new-disp is about at the point where is relevant? 16:18
jnthn MasterDuke: Yup, *and* if you're up for doing sp_dispatch_* too (once I've done the interpreter ones, of course...) :-) 16:28
Though those can be another PR 16:29
Geth MoarVM/new-disp: 5f61deb194 | (Jonathan Worthington)++ | 2 files
Rewrite dispatch_* into sp_dispatch_*

The latter aren't yet implemented, but glancing the spesh log suggests the transformation is either correct or at least somewhat close to correct.
16:31 leont_ left
jnthn Also, the plugin guard logging ain't quite right yet, 'cus it thinks that these things are all unhit... 16:33
But that's not today's problem
Geth MoarVM/new-disp: a063da44fc | (Jonathan Worthington)++ | src/core/interp.c
Implement sp_dispatch_* instructions

Which are like dispatch_*, expcet the slot and static frame for the inline cache entry are predetermined.
16:54 Altai-man_ joined
Geth MoarVM/new-disp: a8bfd1605b | (Jonathan Worthington)++ | 2 files
Cope with inlining sp_dispatch_* instructions

They were designed to be possible to inline from the start, so really this is just fixing up a couple of places to not get confused in the various situations presented by inlining.
jnthn So, now we do alright (not perfectly) at `make test` with spesh enabled
Wonder if we get through the build with it enabled...
Of course, we're not doing anything really nice yet; this is just about making sure we understand/do enough to survive. 16:57
16:57 sena_kun left
jnthn Hah, yes, I get through `make` of Rakudo (well, it's only CORE.setting onwards that matteres) with spesh enabled 16:59
That's quite nice 17:00
nwc10 woohoo
that's going to fail faster (in that it will get to the tests in less elapsed time)
jnthn Next need to figure out the various explosions (that aren't just NYIs) in make test are
Alas, some aren't reliable failures 17:03
nwc10 my ASAN hasn't got there yet
prod them with valgrind? 17:04
unlikely to be "your" problem here, but Address Space Layour Randomisation can have some fun effects. Including that it's used to "seed" the parts of the hash randomisation
jnthn Hm, no luck provoking it with valgrind either, alas 17:11
17:13 zakharyas left
jnthn Time for some rest/dinner, I think. 17:16
17:26 zakharyas joined 17:36 zakharyas left
nwc10 Stage optimize : This representation (MVMCode) does not support attribute storage (for type BOOTCode) at <unknown>:1 (/home/ghdev/Perl/rakudo1/blib/Perl6/Optimizer.moarvm:optimize_call) 17:48
(the setting. 3 lots of pain in ENV vars, 5 things #defined in headers) 17:49
18:21 vrurg left 18:22 vrurg joined
nwc10 OK, that's a spesh thing. Into tests 18:24
18:26 vrurg left 18:31 vrurg joined 18:36 vrurg left 18:55 sena_kun joined 18:57 Altai-man_ left 19:01 zakharyas joined 19:14 vrurg joined 19:46 vrurg left 20:07 zakharyas left 20:46 vrurg joined 20:47 patrickb joined 20:48 patrickb left 20:50 vrurg left 20:54 Altai-man_ joined 20:57 sena_kun left 21:03 vrurg joined 22:25 murman joined 22:26 murman left 22:55 sena_kun joined 22:57 Altai-man_ left 23:00 leont left