01:55
ilbot3 joined
02:46
greppable6 joined,
evalable6 joined,
quotable6 joined,
nativecallable6 joined,
benchable6 joined,
releasable6 joined,
unicodable6 joined,
coverable6 joined,
bloatable6 joined,
committable6 joined,
bisectable6 joined,
squashable6 joined,
statisfiable6 joined
03:14
evalable6 joined
03:44
ggoebel joined
04:07
bloatable6 joined
04:20
committable6 joined
07:18
evalable6 joined
07:21
domidumont joined
07:29
domidumont joined
08:46
evalable6 joined
09:03
nwc10 joined
11:09
greppable6 joined
11:15
committable6 joined
12:41
MasterDuke joined
16:03
buggable joined
|
|||
timotimo | whoops, gotta put a little fix in for my debug name changes | 17:09 | |
Geth | MoarVM: 19a2001bac | (Timo Paulssen)++ | src/spesh/dump.c fix wrong access to debug_name in spesh dump |
17:11 | |
timotimo | AlexDaniel`: this should make it into the release | ||
17:28
zakharyas joined
18:24
brrt joined
|
|||
brrt | good * #moarvm | 18:28 | |
timotimo | good * brrt | 18:30 | |
brrt | hmm interesting... | ||
timotimo | whatcha got? | ||
brrt | waitaminute | ||
oh, i need to set MVM_SPESH_BLOCKING i think | 18:31 | ||
timotimo | that often helps | ||
brrt | i'm debugging an issue in the optimizer | ||
timotimo | mhm | 18:32 | |
the spesh optimizer or the jit optimizer? :) | |||
brrt | jit optimizer | ||
i'm pondering generalizing the jit bisect logic | |||
well, we can do that partially with MVM_SPESH_LIMIT, can't we? | 18:33 | ||
timotimo | ? | ||
brrt | i'm pondering generalizing the debug log as well | 18:34 | |
and optimizing it away for the common case | |||
so rather than MVM_jit_log(tc, ''ā¦") | |||
i'd have | |||
timotimo | if it takes that long to type, maybe it's not a good idea | 18:41 | |
brrt | hehehe | 18:53 | |
no | 18:54 | ||
i mean | |||
i want MVM_JIT_DEBUG(msg, args) | |||
but, i want that to do two things | |||
- compile-time switchable | |||
- sensitive to env var | |||
- speciifc to frame / block | 18:55 | ||
- specific to compilation phase | |||
so you could have MVM_JIT_DEBUG=ALL and it would dump everything | |||
or you could have MVM_JIT_DEBUG=REGISTER and dump only register allocation | 18:56 | ||
or you could have MVM_JIT_DEBUG=REGISTER/21/17:ALL/102/3:OPTIMIZER/29/3 | |||
something like that | |||
tuneable | 18:57 | ||
18:57
zakharyas joined
|
|||
timotimo | oh | 18:57 | |
brrt | and if it'd need compile-time support, who cares if it was 'expensive' to do | ||
19:08
brrt joined
19:12
greppable6 joined,
committable6 joined
|
|||
brrt | i found the optimizer bug, yay | 19:18 | |
actually | 19:19 | ||
timotimo | cool! | ||
brrt | it is kind of scary | ||
it is a sp_p6obind_o | 19:20 | ||
issue | |||
and it comes to front by the introduction of a few copy nodes | |||
timotimo | interaction with object registers and GC? | 19:22 | |
brrt | no, more innocent than that | 19:25 | |
but also a bit more scary | 19:26 | ||
the tl;dr | |||
timotimo listens intently | |||
brrt | sp_p6obind_o uses a macro write_barrier | 19:27 | |
this macro conditonally loads the value to be assigned | |||
anyway, it uses a direct reference to the $2 (load) sequence, and evaluates that conditonally | |||
the insertion of the COPY forces the evaluation and makes it the same | 19:29 | ||
but | |||
the condition is not always kept | |||
timotimo | oooh | ||
brrt | so the two worries i have | ||
- this bug is always there in this case | |||
because the expr jit is allowed to tile them as one and the same value | 19:30 | ||
- i'm not sure whether to fix this in this specific template (and all other instances) by declaring a let:, or whether to somehow make the optimizer aware of inadvertent conditionally-evaluated references to values that are used in a block that isn't consequent to it | 19:31 | ||
timotimo | oof, good question | ||
brrt | obviously the first is much simpler than the second | 19:32 | |
timotimo | yeah, but much less thorough | ||
brrt | true | ||
and strictly speaking, this *is* a template bug | 19:33 | ||
timotimo | i.e. the problem could reappear again and again | ||
brrt | because the value being referenced - $2 - well, it's being loaded conditionally first | ||
in the code, and that's not legal, since the expr JIT has no obligation to 'reload' the value | |||
the other way to fix it is to have the analyzer decouple them | 19:34 | ||
19:34
Ven joined
|
|||
brrt | but that's even less than ideal | 19:34 | |
19:41
AlexDaniel joined
|
|||
brrt | the other fix is not to do this kind of optimization just yet | 19:42 | |
but that's not where i want to go with this | |||
timotimo BBIAB | 19:46 | ||
19:56
bartolin joined
19:57
zakharyas joined
20:07
ilmari[m] joined
20:28
brrt joined
21:19
btyler joined
21:52
lizmat joined
|
|||
Geth | MoarVM: 833803b6a5 | (Samantha McVey)++ | docs/ChangeLog Add changelog entries for the next release |
23:26 | |
samcv | .tell brrt can you add what you would like to the changelog for the expression engine? You'd be the best one to know what should be added to the changelog | 23:27 | |
yoleaux | samcv: I'll pass your message to brrt. | ||
timotimo | samcv: i think the "check caller chain before promotion" is only active when GC_DEBUG (or something) is on? maybe that detail wants to be pointed out? | 23:38 | |
samcv: "seakable" wants to be "seekable" | 23:42 | ||
samcv | here's a seaking cdn.bulbagarden.net/upload/thumb/6...eaking.png | 23:47 | |
will change :p | |||
timotimo | i like seadra more |