[03:07] *** vrurg joined
[03:07] *** vrurg_ left
[10:59] <timo> aw yeah, first WIP draft of moarvm with [[clang::musttail]] interpreter just linked without spowing errors

[11:06] <timo> well, NQP already seems to work, but extops are broken at this moment

[11:07] <timo> but the first benefit is, when stepping backwards in the interpreter with rr i just "reverse-finish" and it just jumps me to the "GOTO_NEXT_OP" in whatever was the previous opcode and that's fucking fantastic

[11:40] <timo> mysteriously, the nqp test suite is all green except for the qast tests which mostly fail :D

[11:44] <timo> i wonder if there is something like "finish" that steps to the next tail call, to mirror what reverse-finish does with our tailcall based interpreter

[12:18] <timo> "make test" is clean (plus/minus the usual)

[12:18] <timo> i kind of hate that we have a "the usual test failures"

[12:53] <timo> we currently have a cur_op, reg_base, cu, and bytecode_start local on the MVM_interp_run stack frame that the TC is pointed at which some operations manipulate in order to redirect the interpreter (frame invokes and returns and what-not) which in order to keep around from one interp op function to the next would have to be passed as a pointer to the place on the stack where they were set up

[12:54] <timo> but that's not exactly optimal in terms of performance I think?

[12:58] <timo> we do have a list of "every op that can invoke" which we could in theory use to put a "get new values if they changed" and keep passing the values themselves in registers?

[12:58] <timo> that's kind of what the JIT already has to do

[13:13] <timo> already possibly the tiniest bit faster than CGOTO at core setting compilation

[13:13] <timo> 49.443 +- 0.174 vs 49.171 +- 0.237 

[13:13] <timo> (averaged from 4 runs)

[13:17] <timo> 401,285,398      L1-icache-load-misses  vs  188,166,117      L1-icache-load-misses

[13:22] <timo> ok but this is also a moarvm built with gcc except for the one file, interp.c, which i used clang for because gcc doesn't seem to have __attribute__((preserve_none)) which it sounds like is very important for getting actually small function bodies for the ops themselves (otherwise there's a lot of writing registers to the stack and restoring them etc etc)

[13:50] <timo> huh. passing around a pointer to a struct that has the variables in it is not any better than passing three pointer-pointers; it would be great if somehow I could make it realize that these variables could really be stack-relative, but the stack frames have to be "compatible"

[14:24] <timo> i thought "the jit already has to do these checks" but it turns out we optimized this out in a clever way with the "jit trampoline"

[15:01] <timo> hrmpf. so that failed ...

[15:21] *** linkable6 left
[15:21] *** coverable6__ left
[15:21] *** huggable6 left
[15:21] *** evalable6 left
[15:21] *** releasable6 left
[15:21] *** shareable6 left
[15:21] *** quotable6 left
[15:21] *** notable6 left
[15:21] *** bisectable6 left
[15:21] *** bloatable6 left
[15:21] *** unicodable6 left
[15:21] *** committable6 left
[15:21] *** tellable6 left
[15:21] *** sourceable6 left
[15:21] *** benchable6 left
[15:21] *** greppable6 left
[15:21] *** nativecallable6 left
[15:23] *** nativecallable6 joined
[15:24] *** tellable6 joined
[15:24] *** bisectable6 joined
[15:24] *** committable6 joined
[15:25] *** benchable6 joined
[15:25] *** releasable6 joined
[15:25] *** evalable6 joined
[15:25] *** unicodable6 joined
[15:25] *** greppable6 joined
[15:25] *** huggable6 joined
[15:25] *** coverable6 joined
[15:25] *** shareable6 joined
[15:25] *** quotable6 joined
[15:25] *** linkable6 joined
[15:25] *** bloatable6 joined
[15:26] *** notable6 joined
[15:26] *** sourceable6 joined
[16:56] <Geth> ¦ MoarVM/tail_call_interpreter: 5a457ae4b3 | (Timo Paulssen)++ | 7 files

[16:56] <Geth> ¦ MoarVM/tail_call_interpreter: Tail-Call style for interp.c

[16:56] <Geth> ¦ MoarVM/tail_call_interpreter: review: https://github.com/MoarVM/MoarVM/commit/5a457ae4b3

[17:00] <Geth> ¦ MoarVM: timo++ created pull request #1999: Tail-Call style for interp.c

[17:00] <Geth> ¦ MoarVM: review: https://github.com/MoarVM/MoarVM/pull/1999

[17:04] <timo> MasterDuke17 may find this to be vindication maybe :)

[17:18] <timo> OK, i'm off  o/

[18:46] *** lizmat left
[18:46] *** lizmat joined
[18:50] <lizmat> thanks Timo!   Was nice to have you over  :-)

[19:09] <timo> glad to have been there :)

[19:09] <timo> made it safely back home

