Perl 6 - the future is here, just unevenly distributed

IRC log for #moarvm, 2014-11-13

| Channels | #moarvm index | Today | | Search | Google Search | Plain-Text | summary

All times shown according to UTC.

Time Nick Message
00:25 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:31 kjs_ joined #moarvm
00:35 dalek MoarVM: dfa0007 | (Timo Paulssen)++ | src/spesh/optimize.c:
00:35 dalek MoarVM: code-gen builds a bunch of const_s + findmeth_s
00:35 dalek MoarVM:
00:35 dalek MoarVM: we can turn this into just findmeth, which wan further
00:35 dalek MoarVM: become a sp_getspeshslot and turn invoke_o into fastinvoke
00:35 dalek MoarVM: further down the line
00:35 dalek MoarVM: review: https://github.com/MoarVM/MoarVM/commit/dfa0007f9d
00:36 dalek MoarVM: 583710e | (Timo Paulssen)++ | tools/graph_spesh.p6:
00:36 dalek MoarVM: pull a tiny bit more info out of spesh logs:
00:36 dalek MoarVM:
00:36 dalek MoarVM: callsite address and argument counts as well as
00:36 dalek MoarVM: named argument names, but also file name, line number
00:36 dalek MoarVM: and cuid
00:36 dalek MoarVM: review: https://github.com/MoarVM/MoarVM/commit/583710e44a
00:37 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
01:15 lizmat joined #moarvm
01:16 woolfy joined #moarvm
02:34 kjs_ joined #moarvm
04:09 Juerd_ joined #moarvm
04:19 zakharyas joined #moarvm
05:46 kjs_ joined #moarvm
06:10 flussence joined #moarvm
08:26 ingy joined #moarvm
08:41 woolfy left #moarvm
08:45 FROGGS joined #moarvm
11:04 ggoebel111111118 joined #moarvm
12:10 JimmyZ joined #moarvm
13:45 dalek MoarVM/spesh_box_tracking: 17bc9e1 | (Timo Paulssen)++ | / (4 files):
13:45 dalek MoarVM/spesh_box_tracking: WIP on tracking the data inside box containers
13:45 dalek MoarVM/spesh_box_tracking: review: https://github.com/MoarVM/MoarVM/commit/17bc9e12c4
13:45 dalek MoarVM/spesh_box_tracking: 5de844b | (Timo Paulssen)++ | src/spesh/optimize.c:
13:45 dalek MoarVM/spesh_box_tracking: if_o/unless_o on a boxed int/num/str could be much cheaper.
13:45 dalek MoarVM/spesh_box_tracking: review: https://github.com/MoarVM/MoarVM/commit/5de844b8cd
13:45 dalek MoarVM/spesh_box_tracking: c3ccfae | (Timo Paulssen)++ | src/spesh/optimize.c:
13:45 dalek MoarVM/spesh_box_tracking: much safer, but segfaults a few spec tests still
13:45 dalek MoarVM/spesh_box_tracking: review: https://github.com/MoarVM/MoarVM/commit/c3ccfae6cf
13:46 timotimo ^- if anybody wants to have a look
14:03 timotimo i'm not finding suspicious things
14:03 timotimo 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
14:03 timotimo these fail on my machine with that branch of moarvm
14:12 tadzik joined #moarvm
14:17 [Coke] joined #moarvm
15:18 FROGGS joined #moarvm
15:29 kjs_ joined #moarvm
16:06 LLamaRider joined #moarvm
16:10 zakharyas joined #moarvm
16:28 dalek MoarVM/spesh_box_tracking: f5110fb | (Timo Paulssen)++ | src/spesh/optimize.c:
16:28 dalek MoarVM/spesh_box_tracking: the right line in the wrong place can make all the difference in the world
16:28 dalek MoarVM/spesh_box_tracking: review: https://github.com/MoarVM/MoarVM/commit/f5110fb823
16:28 timotimo ^- feel free to try this out :)
16:30 japhb timotimo: Did this fix the spec failures you had earlier?
16:33 timotimo yes
16:33 timotimo but i'm looking at a spesh output right now and it's still looking pretty stupid :(
16:34 timotimo lots of occurences of "box a constant in a p6bool, unbox an int from the p6bool and branch conditionally"
16:34 timotimo my code should *at least* change the code to skip the unbox and use the int register that's set from the constant directly
16:34 timotimo and then i could just recurse and try for a constant branch elimination
16:42 timotimo oh, huh
16:42 timotimo the flags don't have the "known box source" bit set
16:53 timotimo jnthn: what could cause an operation - in this case p6bool - to not have its facts discovered?
16:54 timotimo aaaah
16:54 timotimo i'm not setting the flag in the discover sub inside rakudo
16:54 timotimo silly me. to the max.
16:58 zakharyas joined #moarvm
17:17 kjs_ joined #moarvm
17:21 camelia joined #moarvm
18:27 timotimo brrt, would you like to give me hints on how to implement nan, inf and isnanorinf?
18:27 timotimo they only cause a single bail each in my test case here, but i'd like to have it jitted still
18:29 timotimo it seems like loading a nan into a floating point register is commonly accomplished by setting all bits to 1?
18:31 timotimo hum. it seems like i'd want to be careful WRT signaling vs quiet NaNs?
18:48 kjs_ joined #moarvm
19:02 timotimo on top of that ... can has invokewithcapture? :3
19:19 vendethiel joined #moarvm
19:22 Ven joined #moarvm
19:28 jnthn timotimo: Note that p6bool gives back singletons
19:28 jnthn So it's not actually an alloocation you're avoiding
19:28 timotimo ah, damn :)
19:28 timotimo but we have no reason to unbox_i the p6bool, if we just "boxed" it :)
19:30 jnthn Correct, or if_o if when we could if_i
19:30 jnthn Esp under JIT
19:30 timotimo correct
19:30 timotimo that's what i'm thinking will give us the very most
19:31 timotimo 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 timotimo because i've seen enough instances of const + box + unbox + if_o
19:31 timotimo er, i mean:
19:31 timotimo const + box + if_o
19:31 timotimo my previous optimizations turned that if_o into an unbox + if_i
19:33 timotimo doesn't seem to break anything at all this time %)
19:34 timotimo 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 timotimo and that could trigger set squishing
19:34 timotimo that seems robust enough
19:40 [Coke] joined #moarvm
19:42 tadzik joined #moarvm
19:44 colomon joined #moarvm
19:51 nwc10 ASAN happy. I disabled the fixed size allocator and ASAN still happy
19:52 timotimo \o/
19:52 timotimo that's definitely good news
19:52 nwc10 not *totally*.
19:52 nwc10 there was barfage a few days ago
19:52 nwc10 but then it has gone
19:52 nwc10 and I'm suspicious that it depends a lot on some sort of buffer size, or spesh threshold, or something
19:53 nwc10 so I think that there's at least one bug still
19:53 nwc10 but it's a rare heisenbug
19:53 timotimo blerh :\
19:54 nwc10 that pretty much sums it up
19:58 jnthn Yeah, I fear we have such a thing too :(
20:01 jnthn bbiab
20:04 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:06 japhb 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:55 FROGGS joined #moarvm
21:11 kjs_ joined #moarvm
21:22 lizmat joined #moarvm
21:22 woolfy joined #moarvm
21:25 timotimo i only managed to build a super conservative version of set squishing :\
21:25 timotimo my head feels kind of blocked for some reason
21:25 timotimo it should just be a simple-ish unification, right?
21:27 jnthn japhb: Well, my main blocker at the moment is tuits
21:43 japhb jnthn: :-(
21:44 japhb Sadly, that can be the hardest block to overcome.
21:44 japhb .oO( Speed of light?  Pffft, no problem.  Full calendar?  Insurmountable. )
21:45 * 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 #moarvm
22:07 kjs_ joined #moarvm
22:17 kjs_ joined #moarvm
23:20 kjs_ joined #moarvm
23:22 woolfy1 left #moarvm
23:25 colomon_ joined #moarvm

| Channels | #moarvm index | Today | | Search | Google Search | Plain-Text | summary