timotimo sadly, the unbox optimization i made yesterday breaks code, for example during the rakudo build 00:01
fun, a segfault 00:08
Geth MoarVM/return_from_inline_without_log_exit: 9e7bc311a7 | (Timo Paulssen)++ | src/core/frame.c
profiler: make sure returning from inlined frames gets logged

it was possible for an optimized return (the kind that works without building an actual exception object) to leave inlined portions of code without signalling to the profiler that a frame was in fact left.
This led to call graphs that had copies of the same routine nested very deeply inside of itself, making the call graph rather useless and the profile files rather gigantic.
00:19
timotimo here's the code, please feel free to test it on random code snippets and see if it crashes like it does in the spec tests ...
Geth MoarVM/make_unbox_removal_available: ae809b9b0d | (Timo Paulssen)++ | src/core/frame.c
profiler: make sure returning from inlined frames gets logged

it was possible for an optimized return (the kind that works without building an actual exception object) to leave inlined portions of code without signalling to the profiler that a frame was in fact left.
This led to call graphs that had copies of the same routine nested very deeply inside of itself, making the call graph rather useless and the profile files rather gigantic.
00:21
MoarVM/make_unbox_removal_available: 5f842ddd39 | (Timo Paulssen)++ | src/spesh/optimize.c
follow "set" ops in search of box source
timotimo oh no what have i done
MoarVM/make_unbox_removal_available: 22017391cc | (Timo Paulssen)++ | src/spesh/optimize.c
follow "set" ops in search of box source
00:22
timotimo only that one commit was supposed to be in there
Geth MoarVM: fc7da5c770 | (Timo Paulssen)++ | src/core/bytecodedump.c
fix bytecodedump to understand inlines

it used to look at the right num_locals, but read from the wrong local_types, which is a shorter array if a frame has other frames inlined into itself, thus reading unrelated memory.
00:26
MasterDuke is that commit to master unrelated to return_from_inline_without_log_exit? 00:35
timotimo it is 00:36
just debughelper fixes 00:37
MasterDuke ah, ok
that script dogbert17 had that created a 41mb profile now creates a 94k profile 00:47
timotimo nice.
MasterDuke same with your hyper/race is-prime code? 00:50
timotimo didn't test yet
Geth MoarVM: 15b4b9fb3e | (Samantha McVey)++ | src/strings/ascii.c
Fix compiler warning by explicitly casting to MVMuint8*

Cast to MVMuint8* since the compiler shows a warning when trying to assign a char* to an unsigned char *
01:12
01:56 ilbot3 joined 05:15 domidumont joined 06:01 domidumont joined 06:44 robertle joined 07:39 AlexDaniel joined 08:07 undersightable6 joined, zakharyas joined 08:18 zakharyas joined 09:23 zakharyas joined 10:03 zakharyas joined
timotimo none of the test files crash if run with perl6 --profile, just when i have to make ./perl6-m also use --profile because the harness won't let me put it in there another way 10:17
10:18 zakharyas joined 10:25 zakharyas joined 11:23 ggoebel joined 12:30 travis-ci joined
travis-ci MoarVM build failed. Samantha McVey 'build this branch' 12:30
travis-ci.org/samcv/MoarVM/builds/359292966 github.com/samcv/MoarVM/compare/7e...4ec787ed46
12:30 travis-ci left 12:42 undersightable6 joined 13:09 zakharyas joined 13:25 ggoebel joined 13:28 zakharyas joined 13:31 zakharyas joined 13:44 zakharyas joined 14:22 zakharyas joined 15:21 zakharyas joined 15:53 robertle joined 16:26 AlexDaniel joined
lizmat is puzzled: 'for ^10000000 -> int $ { }' doesn't allocate *any* Ints 16:31
but 'use nqp; my int $a = 40; for ^1000 -> int $ { nqp::isgt_i($a,$a) }' allocates 1000 Ints
is this somehow an artefact, or is there really something strange going on here 16:32
ah, it looks to be an artefact: 16:34
use nqp; my int $a = 40; for ^1000 -> int $ { nqp::if(nqp::isgt_i($a,$a),nqp::null) } # doesn't allocate
so I guess the lack of nqp::if somehow caused an Int to be made before being sunk 16:35
timotimo yeah, it probably has .sink called on it, but native ints aren't objects, so it boxes first to try the method 16:37
16:38 domidumont joined 18:27 undersightable6 joined 18:45 FROGGS joined
japhb Maybe there's value in detecting that case (attempt to .sink a native) and specifically don't do that? 19:49
timotimo yeah, that'd be nice 19:50
hum, this control flow be tricky 19:58
oh, also, i think i might have only implemented one half of the stuff i was supposed to :D 19:59
brrt, under what circumstances can i be sure that tc->interp_cur_op is an accurate depiction of where in the program we are? i'm currently asking mostly about when throwpayloadlexcaller and friends would be called 20:21