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