MasterDuke `loop (my int $i = 1; $i <= 10_000_000; $i = $i + 1) { my uint64 $a = 2**64-1; my int64 $b = 2**62; my int64 $c = -2**63 }; say now - INIT now` took an average of about 3.5s before, 3.4s after 00:07
02:48 ilbot3 joined 06:27 domidumont joined 06:34 domidumont joined 06:39 brrt joined
brrt good * #moarvm 06:40
samcv good * brrt 06:55
07:04 domidumont joined 07:42 brrt joined 08:22 zakharyas joined
brrt ohai samcv 08:30
samcv hello
brrt i've settled on making spills explicit graph-reducing steps (so that they work with the topological sort), but i'm not 100% positive that i'm doing it correctly yet 08:31
samcv where in MoarVM is this code so i can look at it 08:32
brrt if you check out the even-moar-jit branch, it's in src/jit/linear_scan.c
in the function prepare_arglist_and_call 08:33
samcv kk 08:56
brrt :-)
it's arguably evil code
well, or 'rather complex' 08:57
10:47 Ven joined 11:00 KDr2_c joined
brrt back 11:08
12:26 domidumont joined
brrt so.. i've done more thinking; the trick in topological sort is that all nodes are eventually handled 12:53
or si that all edges? anyway 12:54
so a node (= register) can be blocked due to one of those reasons: it needs to be moved to another register, it needs to be spilled to memory, it needs to be placed on stack 12:55
and there's two reasons a register's value may need to be copied: a): because it needs to be in another register for the arg list, or b): because it's used by CALL as an explicit register 12:57
so any of these 'blocks' should add to the counter, and any of these operations should decrement
13:22 spebern joined 13:30 domidumont joined
timotimo so, actually ... would i want to implement a bytecode-level debugger inside moar, or add more features to moar-gdb.py until it's useful for bytecode-level debugging ... 13:59
jnthn Likely the first :) 14:00
14:00 brrt joined
timotimo seems like more work :P 14:00
jnthn Doing stuff right often is ;P
timotimo especially since if you're a plugin for gdb you can also immediately continue C-level debugging if you're doing internals hacking
though tbh our ops are usually not terribly buggy :P
just the composition of ops
14:01 brrt joined
timotimo of course, i'm already supposed to give spesh line-annotations. can use those for the debugger, too. not just the line-coverage tool 14:18
14:29 Ven joined 14:33 brrt joined 15:10 domidumont joined 15:15 brrt joined
timotimo right now i'm running a benchmark for join and \n and \n\r and unrelated control characters 15:30
15:31 Ven joined 16:09 brrt joined
brrt yeah, it is a bunch of work 16:10
timotimo hm, well, the benchmark proved uninteresting 16:46
but i probably measured an uninteresting workload
gist.github.com/timo/7477f7cecfc2a...ac98499740 16:48
i should probably put in a combining character at the beginning of one of these strings
16:57 agentzh joined 17:11 agentzh joined
timotimo this run will take a bit longer :| 17:15
all it does is get noisier the more elements i'm joining 17:22
17:48 dogbert17 joined 18:14 domidumont joined 20:14 domidumont joined 20:15 nebuchad` joined 20:18 harrow joined 20:19 brrt joined 20:23 japhb_ joined 21:54 domidumont joined