Perl 6 - the future is here, just unevenly distributed

IRC log for #moarvm, 2014-06-07

| Channels | #moarvm index | Today | | Search | Google Search | Plain-Text | summary

All times shown according to UTC.

Time Nick Message
01:40 timotimo double inline across the sky
01:40 timotimo what does it mean?!
01:46 FROGGS joined #moarvm
08:58 Util joined #moarvm
08:58 rurban_ joined #moarvm
08:58 lue joined #moarvm
08:58 harrow joined #moarvm
08:58 japhb_ joined #moarvm
08:58 tokuhirom joined #moarvm
08:58 flussence joined #moarvm
08:58 timotimo joined #moarvm
09:01 hoelzro joined #moarvm
09:01 retupmoca joined #moarvm
09:01 TimToady joined #moarvm
09:04 Util joined #moarvm
09:04 lue joined #moarvm
10:23 FROGGS[mobile] joined #moarvm
10:58 dalek MoarVM/inline: dc0e7f5 | jnthn++ | src/core/interp.h:
10:58 dalek MoarVM/inline: Correct operand_type_mask.
10:58 dalek MoarVM/inline: review: https://github.com/MoarVM/MoarVM/commit/dc0e7f589f
10:58 dalek MoarVM/inline: c6b668c | jnthn++ | src/spesh/ (2 files):
10:58 dalek MoarVM/inline: Handle spesh slot type in graph/codegen.
10:58 dalek MoarVM/inline: review: https://github.com/MoarVM/MoarVM/commit/c6b668c752
10:58 dalek MoarVM/inline: a790bd8 | jnthn++ | src/spesh/inline.c:
10:58 dalek MoarVM/inline: For now, don't inline things with handlers.
10:58 dalek MoarVM/inline:
10:58 dalek MoarVM/inline: We'll support it later, but it's easier to add features to a working
10:58 dalek MoarVM/inline: inliner, so try to get there first.
10:58 dalek MoarVM/inline: review: https://github.com/MoarVM/MoarVM/commit/a790bd8239
11:14 dalek MoarVM/inline: d7b5678 | jnthn++ | src/spesh/candidate. (2 files):
11:14 dalek MoarVM/inline: Start storing local/lexical count per candidate.
11:14 dalek MoarVM/inline:
11:14 dalek MoarVM/inline: This means we can support frame size varying by spesh candidate, since
11:14 dalek MoarVM/inline: different candidates may inline differently.
11:14 dalek MoarVM/inline: review: https://github.com/MoarVM/MoarVM/commit/d7b56780ba
11:14 dalek MoarVM/inline: 8f6e997 | jnthn++ | src/spesh/graph.c:
11:14 dalek MoarVM/inline: Use candidate local/lexical counts in inline graph
11:14 dalek MoarVM/inline: review: https://github.com/MoarVM/MoarVM/commit/8f6e997846
11:30 jnthn hm, need to sum the deopt tables too... :)
11:30 jnthn Deopt is gonna be the "argh my brain argh" part of this branch :)
11:55 dalek MoarVM/inline: 64c2e79 | jnthn++ | src/spesh/inline.c:
11:55 dalek MoarVM/inline: Start re-writing deopt idxs, merging deopt table.
11:55 dalek MoarVM/inline: review: https://github.com/MoarVM/MoarVM/commit/64c2e794d3
11:58 jnthn Well, now I have something that can do the graph merging part of inlining that survives the NQP build and test suite.
11:58 jnthn Explodes in Perl 6, unfortunately.
11:59 jnthn Oh...because we inline something that uses an extop that isn't available in the inline target. OK.
12:00 jnthn Can inline run (cuid_24_1402142055.67217) into !protoregex (cuid_53_1402142055.67217)
12:00 jnthn Can inline states (cuid_5_1402142055.67217) into !protoregex (cuid_53_1402142055.67217)
12:00 jnthn Those are quite cool seeing in the debug trace.
12:01 jnthn (Tells us that every protoregex invocation is potentially going to get 2 calls cheaper)
12:59 timotimo that is way cool indeed.
13:05 dalek MoarVM/inline: 98d352e | jnthn++ | src/core/frame.c:
13:05 dalek MoarVM/inline: Refactor invocation to cope with inlining.
13:05 dalek MoarVM/inline:
13:05 dalek MoarVM/inline: A given static frame may now have different actual frame memory needs
13:05 dalek MoarVM/inline: depending on if a spesh candidate has inlined other frames. Here, the
13:05 dalek MoarVM/inline: spesh logic is moved to the start of invocation, and frame allocation
13:05 dalek MoarVM/inline: is factored out and driven by what's needed. Can further optimize this
13:05 dalek MoarVM/inline: later on; for now, it's enough to hopefully lay the foundation for the
13:05 dalek MoarVM/inline: rest of basic inlining.
13:05 dalek MoarVM/inline: review: https://github.com/MoarVM/MoarVM/commit/98d352e152
13:07 jnthn Amazingly, that re-org seems to have Just Worked.
13:08 jnthn OK, now for re-writing calls and returns into gotos...
13:09 jnthn oh...before that...
13:17 timotimo and after that, a whole bunch of optimizations ought to happen :3
13:18 jnthn Well, remember I've still got to do de-opt, and there's a bunch of cases we can't inline yet, and so forth.
13:18 jnthn Still plnety of work to go.
13:19 jnthn deopt of inlines is hard work
13:19 jnthn Because you've got to on-the-fly re-create the frames you optimzied away.
13:21 timotimo mhh
13:34 dalek MoarVM/inline: 82359a2 | jnthn++ | src/spesh/graph.c:
13:34 dalek MoarVM/inline: Make invoke/return end a basic block.
13:34 dalek MoarVM/inline:
13:34 dalek MoarVM/inline: They didn't originally, as they are not local flow control transfers.
13:34 dalek MoarVM/inline: However, when we inline, invokes and returns become gotos. While we
13:34 dalek MoarVM/inline: could at that point go splitting up the basic blocks, there's a lot
13:34 dalek MoarVM/inline: of potential to get it wrong. So just construct a graph that is inline
13:34 dalek MoarVM/inline: friendly from the start.
13:34 dalek MoarVM/inline: review: https://github.com/MoarVM/MoarVM/commit/82359a2f48
13:49 cognominal joined #moarvm
14:01 jnthn OK, now for the fiddly graph re-writes....
14:29 nwc10 jnthn: at d0369eb0e5b3e91842d5482ffe9c73f2cc4a2799 the NQP build broke. Not yet retested with your commits from today, so might be not-news
14:29 nwc10 sun is out, hammock is up
14:32 jnthn nwc10: Yes, it will have; various things had to catch up with the change.
14:32 jnthn (latest works)
14:53 nwc10 jnthn: "we have normality"
14:53 nwc10 t/spec/S17-lowlevel/lock.rakudo.moar fails under ASAN
14:53 nwc10 t/spec/S32-io/IO-Socket-Async.t fails with a parallel test, but passes when re-run
14:53 nwc10 so, like yesterday on master
14:54 nwc10 not broken yet - try harder :-)
14:55 jnthn Yeah, working on re-writing calls/returns into gotos :P
14:56 vendethiel joined #moarvm
14:56 nwc10 what would Dijkstra say? :-)
14:57 jnthn "You'd better be writing a compiler"? :-P
15:32 zakharyas joined #moarvm
15:51 brrt joined #moarvm
15:51 * TimToady remembers fondly the design meetings where we talked about deoptimzation, but figured no one would be smart enough or insane enough to take that approach.  :)
15:52 brrt many people are insane enough these days
15:52 * TimToady is glad for that
15:53 TimToady the state of the art in insanity has progressed over the last decade or so :)
15:53 brrt i'd say
15:56 TimToady so we mostly tried to concentrate on inlineables that were a sure thing (like them protos)
15:56 * brrt is happy about commit 82359a2
16:02 vendethiel joined #moarvm
16:36 btyler joined #moarvm
16:41 brrt rakudo clean make in 1m20s
16:41 brrt wow
16:44 brrt joined #moarvm
17:58 vendethiel joined #moarvm
18:40 FROGGS joined #moarvm
19:16 btyler joined #moarvm
19:26 btyler joined #moarvm
20:56 timotimo brrt, that's with your new computer?
22:17 lizmat_ joined #moarvm
22:27 * jnthn returns, with stout-enhanced insanity :)
22:46 dalek MoarVM/inline: 9a93ead | jnthn++ | src/spesh/ (3 files):
22:46 dalek MoarVM/inline: Move out logic for inserting a goto.
22:46 dalek MoarVM/inline:
22:46 dalek MoarVM/inline: Allows it to be used more widely; part of the inline logic wants it.
22:46 dalek MoarVM/inline: review: https://github.com/MoarVM/MoarVM/commit/9a93ead6eb
23:20 dalek MoarVM/inline: 91f9e91 | jnthn++ | src/spesh/inline. (2 files):
23:20 dalek MoarVM/inline: Start fleshing out rewrite of return in inline.
23:20 dalek MoarVM/inline:
23:20 dalek MoarVM/inline: Many missing cases to fill out, but captures the overall process.
23:20 dalek MoarVM/inline: review: https://github.com/MoarVM/MoarVM/commit/91f9e91899
23:22 jnthn OK, enough for tonight...will finish the return rewrite tomorrow, then work on invoke -> goto, then take on the deopt... :)
23:22 jnthn 'night

| Channels | #moarvm index | Today | | Search | Google Search | Plain-Text | summary