|
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 | ||