timotimo | for some reason, my findmeth_s → findmeth optimization causes two getspeshslots in a row to be generated that write to the same register, but read from different spesh slots ... | 00:25 | |
00:31
kjs_ joined
|
|||
dalek | arVM: dfa0007 | (Timo Paulssen)++ | src/spesh/optimize.c: code-gen builds a bunch of const_s + findmeth_s we can turn this into just findmeth, which wan further become a sp_getspeshslot and turn invoke_o into fastinvoke further down the line |
00:35 | |
arVM: 583710e | (Timo Paulssen)++ | tools/graph_spesh.p6: pull a tiny bit more info out of spesh logs: callsite address and argument counts as well as named argument names, but also file name, line number and cuid |
00:36 | ||
timotimo | ^- this findmeth_s optimization could make a noticable difference because in the past it has been preventing invoke_o → sp_fastinvoke transformations as well | 00:37 | |
01:15
lizmat joined
01:16
woolfy joined
02:34
kjs_ joined
04:09
Juerd_ joined
04:19
zakharyas joined
05:46
kjs_ joined
06:10
flussence joined
08:26
ingy joined
08:41
woolfy left
08:45
FROGGS joined
11:04
ggoebel111111118 joined
12:10
JimmyZ joined
|
|||
dalek | arVM/spesh_box_tracking: 17bc9e1 | (Timo Paulssen)++ | / (4 files): WIP on tracking the data inside box containers |
13:45 | |
arVM/spesh_box_tracking: 5de844b | (Timo Paulssen)++ | src/spesh/optimize.c: if_o/unless_o on a boxed int/num/str could be much cheaper. |
|||
arVM/spesh_box_tracking: c3ccfae | (Timo Paulssen)++ | src/spesh/optimize.c: much safer, but segfaults a few spec tests still |
|||
timotimo | ^- if anybody wants to have a look | 13:46 | |
i'm not finding suspicious things | 14:03 | ||
perl6 t/spec/S03-operators/bag.rakudo.moar; perl6 t/spec/S03-sequence/nonnumeric.rakudo.moar; perl6 t/spec/S05-mass/charsets.t; perl6 t/spec/S05-transliteration/trans.rakudo.moar | |||
these fail on my machine with that branch of moarvm | |||
14:12
tadzik joined
14:17
[Coke] joined
15:18
FROGGS joined
15:29
kjs_ joined
16:06
LLamaRider joined
16:10
zakharyas joined
|
|||
dalek | arVM/spesh_box_tracking: f5110fb | (Timo Paulssen)++ | src/spesh/optimize.c: the right line in the wrong place can make all the difference in the world |
16:28 | |
timotimo | ^- feel free to try this out :) | ||
japhb | timotimo: Did this fix the spec failures you had earlier? | 16:30 | |
timotimo | yes | 16:33 | |
but i'm looking at a spesh output right now and it's still looking pretty stupid :( | |||
lots of occurences of "box a constant in a p6bool, unbox an int from the p6bool and branch conditionally" | 16:34 | ||
my code should *at least* change the code to skip the unbox and use the int register that's set from the constant directly | |||
and then i could just recurse and try for a constant branch elimination | |||
oh, huh | 16:42 | ||
the flags don't have the "known box source" bit set | |||
jnthn: what could cause an operation - in this case p6bool - to not have its facts discovered? | 16:53 | ||
aaaah | 16:54 | ||
i'm not setting the flag in the discover sub inside rakudo | |||
silly me. to the max. | |||
16:58
zakharyas joined
17:17
kjs_ joined
17:21
camelia joined
|
|||
timotimo | brrt, would you like to give me hints on how to implement nan, inf and isnanorinf? | 18:27 | |
they only cause a single bail each in my test case here, but i'd like to have it jitted still | |||
it seems like loading a nan into a floating point register is commonly accomplished by setting all bits to 1? | 18:29 | ||
hum. it seems like i'd want to be careful WRT signaling vs quiet NaNs? | 18:31 | ||
18:48
kjs_ joined
|
|||
timotimo | on top of that ... can has invokewithcapture? :3 | 19:02 | |
19:19
vendethiel joined
19:22
Ven joined
|
|||
jnthn | timotimo: Note that p6bool gives back singletons | 19:28 | |
So it's not actually an alloocation you're avoiding | |||
timotimo | ah, damn :) | ||
but we have no reason to unbox_i the p6bool, if we just "boxed" it :) | |||
jnthn | Correct, or if_o if when we could if_i | 19:30 | |
Esp under JIT | |||
timotimo | correct | ||
that's what i'm thinking will give us the very most | |||
i'm now spec testing a change where i recurse into optimize_iffy if i just turned an if_o into an unbox-skipping thingie so that perhaps it can benefit from known values | 19:31 | ||
because i've seen enough instances of const + box + unbox + if_o | |||
er, i mean: | |||
const + box + if_o | |||
my previous optimizations turned that if_o into an unbox + if_i | |||
doesn't seem to break anything at all this time %) | 19:33 | ||
hm, actually ... i could put a check at the very end of the spesh dispatch, check if the next is not a set, but the previous link goes through multiple sets | 19:34 | ||
and that could trigger set squishing | |||
that seems robust enough | |||
19:40
[Coke] joined
19:42
tadzik joined
19:44
colomon joined
|
|||
nwc10 | ASAN happy. I disabled the fixed size allocator and ASAN still happy | 19:51 | |
timotimo | \o/ | 19:52 | |
that's definitely good news | |||
nwc10 | not *totally*. | ||
there was barfage a few days ago | |||
but then it has gone | |||
and I'm suspicious that it depends a lot on some sort of buffer size, or spesh threshold, or something | |||
so I think that there's at least one bug still | 19:53 | ||
but it's a rare heisenbug | |||
timotimo | blerh :\ | ||
nwc10 | that pretty much sums it up | 19:54 | |
jnthn | Yeah, I fear we have such a thing too :( | 19:58 | |
bbiab | 20:01 | ||
japhb | jnthn: What else can I do to help you figuring out the threading stability issues? perl6-bench stress testing support is in pretty good shape (delta html_plot output of the diagnoses, which I'm frankly procrastinating on a bit, since text and html output already work). There's only one test tagged 'stress', but that's because I don't have any other *small* code snippets that tickle failure easily. | 20:04 | |
If someone points me to snippets that are known to cause r-m or r-j to fail or crash as problem size or concurrency level increases, I'm happy to the monkey work of turning those into perl6-bench tests. | 20:06 | ||
20:55
FROGGS joined
21:11
kjs_ joined
21:22
lizmat joined,
woolfy joined
|
|||
timotimo | i only managed to build a super conservative version of set squishing :\ | 21:25 | |
my head feels kind of blocked for some reason | |||
it should just be a simple-ish unification, right? | |||
jnthn | japhb: Well, my main blocker at the moment is tuits | 21:27 | |
japhb | jnthn: :-( | 21:43 | |
Sadly, that can be the hardest block to overcome. | 21:44 | ||
.oO( Speed of light? Pffft, no problem. Full calendar? Insurmountable. ) |
|||
japhb is frustrated that his tuits come in smaller blocks than the size needed to go deep on this problem. | 21:45 | ||
jnthn | Yeah, I'm needing some undisturbed time also | ||
21:52
woolfy1 joined
22:07
kjs_ joined
22:17
kjs_ joined
23:20
kjs_ joined
23:22
woolfy1 left
23:25
colomon_ joined
|