00:16 SmokeMachine joined 01:16 nativecallable6 joined, releasable6 joined, statisfiable6 joined 01:17 unicodable6 joined, quotable6 joined 03:06 ilbot3 joined 03:57 squashable6 joined, bloatable6 joined 04:23 cmcodename joined
cmcodename ▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄ LRH IS LIVE NOW!! TODAYS EDITION SLIMER GETS FUCKED IN VEGAS!! www.youtube.com/user/l0de/live CALL 315-505-4666 xtodxduyt: BooK_ nwc10 ilmari[m] ▄▄▄▄▄▄▄▄▄▄▄▄▄▄, 04:23
04:23 VCB85Qsushmi joined
VCB85Qsushmi ▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄ LRH IS LIVE NOW!! TODAYS EDITION SLIMER GETS FUCKED IN VEGAS!! www.youtube.com/user/l0de/live CALL 315-505-4666 nrbuckjir: nativecallable6 krunen SmokeMachine ▄▄▄▄▄▄▄▄▄▄▄▄ 04:23
04:31 ConoverIHZT70 joined 07:12 Kaiepi joined 07:58 lizmat joined 08:43 domidumont joined 08:49 domidumont joined 09:14 geospeck joined 10:07 Zoffix joined
Zoffix Saw this. Didn't read. But Mentioning in case it's useful: "How the JVM compares your strings using the craziest x86 instruction you've never heard of": jcdav.is/2016/09/01/How-the-JVM-com...r-strings/ 10:08
nine Zoffix: very interesting :) I'd never have guessed that they'd add string operations to the vector instruction sets 10:16
geekosaur good grief. and I thought 8086 indexed instructions were weird. 10:23
geekosaur may start calling that monstrosity "JVum" 10:26
nine Wow...turns out the infiniloop was caused by an off-by-one error when moving existing handlers to make space for the inlinee's handlers. I deem it a miracle that it didn't explode much earlier and much more violent. 11:11
Now it ends with a "No exception handler located for return" which sounds quite mundane compared. 11:13
Ah, just another off-by-one 11:29
And NQP builds!
lizmat nine++ 11:32
nine And so does rakudo! 11:33
lizmat whee! 11:34
nine There are known test failures when running with MVM_SPESH_NODELAY=1 and MVM_SPESH_BLOCKING=1, aren't there? 11:43
lizmat not sure :-( 11:50
11:53 Zoffix left 12:02 reportable6 joined 12:09 lizmat joined
dogbert17 nine: yes, don't remember the names exactly only fragments, 'fail' and 'exception' 12:12
two test files if memory serves
dogbert17 reruns test in order to refresh his memory 12:14
nine There's definitely a remaining issue. 12:16
dogbert17 t/spec/S04-exceptions/fail.t and t/spec/S32-exceptions/misc.rakudo.moar was the ones I was thinking about 12:22
jnthn nine: The failures I'm aware of in spectest with those flags are due to us not including inlined frames when we produce backtraces, and so they come out too short in some cases 12:36
And thus fail tests
Ideally we'd have the backtrace maker figure out the inlining stuff
nine Huh!? The "failed to fix up handler" error I'm investigating is due to missing GOTO and FH End annotations for a PROCEED handler. But those are missing even before we inline anything. 12:40
The MVM_spesh_dump of the inliner's graph shows the FH Start annotation, but no GOTO or End 12:41
jnthn Hm, and it's not in the dead handlers list? 12:45
nine Oooh...I think we're just missing the slot for the inline boundary "handler" in the unreachable handlers list. 12:49
I think that's wrong even in master 12:50
And another one down :) 12:52
jnthn: thanks for the hint!
make test now passes with MVM_SPESH_NODELAY=1 MVM_SPESH_BLOCKING=1 12:55
And so do the spectests :) with exception of the known backtrace issues of course 13:06
jnthn \o/ 13:14
nine++ # this is great!
nine Note that I haven't activated the removal of pointless gotos yet. But that should be much more straight forward than before your refactor
And now I have a stable base line to operate from :) 13:15
jnthn \o/
Geth MoarVM/inline_in_place: de2e56f1b3 | (Timo Paulssen)++ (committed by Stefan Seifert) | 4 files
Put inlined blocks between their caller and its succ

Previously inlined callees were added to the end of the basic block list. We now put the inlined blocks into the list at the position of the invoke op. However we cannot yet get rid of the goto ops entering and exiting the inlined code as that would lead to odd bugs possibly related to the annotations on these ops.
13:16
MoarVM/inline_in_place: a65e624baf | (Stefan Seifert)++ | src/spesh/optimize.c
Turn inline_end annotated pointless gotos into no_ops

We can't remove them completely as that causes weird deopt issues. But turning them into no_ops should give almost the same benefits without the cost.
MoarVM/inline_in_place: 9587a32b8d | (Stefan Seifert)++ | src/spesh/inline.c
Move inlinee's handlers to front instead of duplicating inliner's

Previously active handlers at the point of the invoke were copied and the inlinee's code surrounded by annotations pointing at those copies. Instead we now move the inlinee's handlers to the top of the table so they will be searched first. This means we have to adjust the indexes of the inliner's annotations but that's actually simpler than the whole copying business.
nine jnthn: what do you think about this small refactor? gist.github.com/niner/70d2d733b1f0...6bae5d552e It's mostly for readability and to bring JITed and non-JITed code paths closer together. 13:18
jnthn nine: Looks sensible to me; think I considered doing that myself, even :) 13:19
nine cool 13:20
14:37 committable6 joined 15:04 AlexDaniel joined
nine Odd...despite all the changes, I still cannot remove the goto at the end of the inlined code. And even though the annotations are all correctly moved elsewhere, I get odd errors. 15:11
But replacing the goto with a no_op instead of removing it fixes those.
timotimo you're only removing the gotos at the end of inlines, right? because there's also gotos that may seem useless after a jumplist instruction 15:15
we must not delete those
nine timotimo: yes, the difference is really just whether to remove gotos carrying an INLINE_END annotation or replace them by no_ops 15:16
timotimo right, i assume that makes sense :) 15:17
nine I'm already more cauteous than master by not removing a goto that's the only instruction in a BB 15:18
timotimo right
nine Btw. the method that gets speshed is 'new' in src/core/Backtrace.pm:84
And what's inlined is this implicit block: try X::AdHoc.new(:payload("Died")).throw; 15:19
timotimo hm, perhaps some kind of bug in the "delete the goto but keep the inline_end annotation" logic? 15:25
nine The Inline End annotation is moved correctly to the last of the remaining instructions (a "set"). Same true for the FH End (0). That handler is just the INLINE_BOUNDARY anyway. 15:33
I don't see anything about this cuid in the deopt log either. So what could depend on that goto being there?
16:04 Kaiepi joined 16:35 brrt joined 17:15 brrt joined 17:23 coverable6 joined, benchable6 joined 17:27 zakharyas joined 17:39 bisectable6 joined 18:06 Kaiepi joined 18:17 zakharyas joined, AlexDaniel joined 18:22 zakharyas joined 18:26 Ven`` joined 18:48 ggoebel joined, Ven`` joined 19:04 Ven`` joined 19:18 Ven`` joined 19:28 Kaiepi joined 19:39 greppable6 joined 20:11 klapperl joined 20:30 ilmari_ joined 20:35 ilmari joined 20:36 Ven`` joined 20:37 benchable6 joined 20:59 evalable6 joined 23:18 samcv joined