Perl 6 - the future is here, just unevenly distributed

IRC log for #moarvm, 2014-09-01

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

All times shown according to UTC.

Time Nick Message
00:02 moritz_ joined #moarvm
00:02 japhb_ joined #moarvm
00:02 nwc10_ joined #moarvm
00:02 hoelzro_ joined #moarvm
00:02 ashleydev joined #moarvm
00:03 BinGOs_ joined #moarvm
00:06 BinGOs joined #moarvm
00:45 avuserow joined #moarvm
01:06 FROGGS_ joined #moarvm
01:08 timotimo it seems like the optimize_can_op part of spesh no longer causes a problem (though i had to teach it about VMNull, too)
01:09 timotimo up to S17 for the spectests now
01:09 harrow joined #moarvm
01:10 timotimo allof.t seems to be unhappy right now
01:14 timotimo nope. running it manually makes it pass, so it's only flappy
01:15 timotimo hm. 99problems-51-to-60.t segfaults in a gc run triggered by a MVM_exception_backtrace
01:15 timotimo not so good
01:16 timotimo i'll just commit and see if anybody who wakes up before i do wants to look at it :)
01:17 timotimo t/spec/integration/advent2013-day07.t fails one test, which seems to be because we changed parcels to be value types and their which now gives the same value for equivalent parcels
01:18 dalek MoarVM/optimize_can_op: a6d4e42 | (Timo Paulssen)++ | src/spesh/optimize.c:
01:18 dalek MoarVM/optimize_can_op: reactivate optimize_can_op, teach it about VMNull.
01:18 dalek MoarVM/optimize_can_op:
01:18 dalek MoarVM/optimize_can_op: currently makes t/spec/integration/99problems-51-to-60.t crash
01:18 dalek MoarVM/optimize_can_op: review: https://github.com/MoarVM/MoarVM/commit/a6d4e4250a
01:24 harrow joined #moarvm
06:02 mj41_nb joined #moarvm
06:25 sergot hi o/
06:58 zakharyas joined #moarvm
07:32 odc joined #moarvm
08:33 kjs_ joined #moarvm
08:48 brrt joined #moarvm
09:03 kjs_ joined #moarvm
09:05 brrt left #moarvm
09:37 daxim joined #moarvm
09:42 donaldh joined #moarvm
10:30 dalek MoarVM: c7bde5b | (Bart Wiegmans)++ | 3rdparty/dynasm:
10:30 dalek MoarVM: Update dynasm (ignore minilua executable)
10:30 dalek MoarVM: review: https://github.com/MoarVM/MoarVM/commit/c7bde5b8c9
13:45 timotimo i wonder how we'd be able to fix something like "smart numify turns some object into a num, then we coerce the num into an int" when the smart numify itself was unboxing an int and coercing to a num ...
13:45 timotimo that sounds like a "peephole optimization" technique
13:48 FROGGS[mobile] joined #moarvm
13:49 tadzik joined #moarvm
13:49 jnthn Aye
13:49 jnthn And probably a rather useful one
13:55 timotimo i have not actually checked if this really does happen, mind you :)
13:57 jnthn It does.
13:58 timotimo OK
13:58 jnthn I'd be tempted to hack it into optimzie_smart_coerce
13:58 timotimo we could have a "want" mechanism for this case :P
13:58 jnthn But temptation isnt always a good thing... :)
13:58 timotimo as in "look forward in the instruction stream to see if the number we're building is going to be coerced to int soon"?
14:00 jnthn Yeah. I think it will always be next instruction, from what I know of code-gen.
14:00 jnthn So it's just a one instruction lookahead
14:01 timotimo mhm
14:02 timotimo what do you think of installing a "peephole optimization stage" right after spesh, btw?
14:39 jnthn Well, for this particular case it's easier with a lookaehad rather than Yet Another Pass
15:05 TimToady though C# seems to do fine with 50 passes or so
15:22 jnthn timotimo: Mini-project if it takes your fancy: work out why MATCH does not JIT, only speshes.
15:23 timotimo i suppose i could have a look :)
15:24 jnthn In the parse-json benchmark in NQP it's the hottest thing
15:29 timotimo i also considered stubbing the "this object has a destructor" thing in moarvm and nqp, but i ran into too many open questions
15:30 jnthn Yeah; that one is tricky. It's on my pondering list at the moment
15:30 timotimo especially: how do we handle DESTROY methods and subclasses?
15:30 jnthn It's a submethod, no?
15:30 timotimo i didn't look
15:30 timotimo if it is, that'd be simple
15:31 jnthn But you call from the kids up to granny, iirc
15:31 jnthn Opposite order from BILD submethod calls
15:31 jnthn Uh, BUILD
15:31 timotimo that's not as simple any more :P
15:45 timotimo jnthn: i feel like we've already found this out once before; MATCH bails on bindattrs_i
15:47 * timotimo looks into that some more
15:48 tadzik colomon: this looks like a good set of patches to me
15:48 timotimo it wants a is-type-object check to be emitted
15:49 tadzik oh, ww
15:49 timotimo (actually, it'll need a reprconv function for that anyway, as it also forces a write barrier apparently?)
15:51 odc joined #moarvm
15:52 timotimo well, i can probably just re-use MVM_repr_bind_attr_inso for this ... curiously that one doesn't include the SC_WB ... it probably should, though
15:52 jnthn Yes, unless interp.c does it?
15:53 timotimo interp.c doesn't use MVM_repr_...
15:53 timotimo it directly uses the REPR(...)->...
15:54 timotimo now MATCH gets jitted
15:54 timotimo at least for the json benchmark
15:55 jnthn I don't see wy benchmark would make a diff :)
15:55 timotimo yup.
15:55 timotimo in the routines tab it gets an OSR flag and about 1/5 is spesh, the rest is JIT
15:55 timotimo (and probably an invisible amount is interp)
15:58 jnthn Ah, darn, its' midnight, I should be attempting to be unconcious...
15:58 timotimo interesting. !protoregex is not jitted at all, has 3520 calls from arraylist, but doesn't get jitted at all. can't find any bails in the jitlog, though
15:58 TimToady you've still got a minute
15:58 timotimo i'll do a rakudo build and spectest with the bindattrs implementation
15:59 jnthn timotimo: Is it inlined?
16:00 jnthn Oh no, it's normally things that call it that get inlined
16:00 jnthn Sinc ethe things that call it are just delegating to it.
16:01 jnthn Anyway, time to go rest... :)
16:01 lizmat gnight jnthn: sleep well, get better!
16:02 jnthn lizmat: Thanks, hopefully! :)
16:24 timotimo the second most time consuming piece of the json benchmark seems to be str, which isn't getting jitted because indexnat doesn't have a jit yet
16:25 timotimo after that comes ws, which bails on findnotcclass
16:27 dalek MoarVM: ede37df | (Timo Paulssen)++ | src/6model/reprconv.c:
16:27 dalek MoarVM: MVM_repr_bind_attr_* needs to do a SC write barrier
16:27 dalek MoarVM: review: https://github.com/MoarVM/MoarVM/commit/ede37df85d
16:27 dalek MoarVM: fd94423 | (Timo Paulssen)++ | src/jit/graph.c:
16:27 dalek MoarVM: can now jit bindattrs_*, which helps MATCH.
16:27 dalek MoarVM: review: https://github.com/MoarVM/MoarVM/commit/fd94423abc
17:00 Ven_ joined #moarvm
17:08 vendethiel joined #moarvm
17:49 brrt joined #moarvm
18:05 Ven_ joined #moarvm
18:42 brrt uhm, why does MVM_string_char_at_in_string return -2 ?
18:43 brrt right, out of bounds
18:43 brrt great
18:44 brrt is that ever used anywhere?
18:48 FROGGS brrt: yes, I remember that we made it -2 so we can check whether it was oob
18:48 brrt subtle
18:48 brrt :-)
18:51 FROGGS brrt: look at interp.c:1455
18:51 brrt yeah, i've seen it
18:51 brrt it's just that the magic needed to do that in ASM is quite subtle
18:51 brrt two flappy tests on the spectests, i'll push
18:54 dalek MoarVM: 965b7af | (Bart Wiegmans)++ | src/jit/ (2 files):
18:54 dalek MoarVM: Add indexnat to JIT
18:54 dalek MoarVM: review: https://github.com/MoarVM/MoarVM/commit/965b7afd24
18:55 FROGGS typo "if it ise"
18:56 dalek MoarVM: 03626bd | (Bart Wiegmans)++ | src/jit/emit_x64.dasc:
18:56 dalek MoarVM: Fix typo in comment
18:56 dalek MoarVM: review: https://github.com/MoarVM/MoarVM/commit/03626bdac3
18:56 brrt FROGGS++
18:57 FROGGS <--- le awesome JIT hacker :P
19:00 brrt this should help timotimo's thingy
19:14 brrt left #moarvm
19:33 Ven_ joined #moarvm
19:39 Ven_ joined #moarvm
20:13 timotimo cool, thanks!
20:13 timotimo indexnat is branchy, right?
20:13 timotimo i think that's what kept me from doing it in the past
20:13 timotimo findnotcclass and findcclass should be easily doable for me now
20:13 timotimo brrt++ # indexnat
20:25 timotimo oooh, indexat *and* indexnat
20:45 kjs_ joined #moarvm
20:57 timotimo so what was the deal with argconst_s? i seem to recall those weren't supposed to show up any more?
20:58 timotimo with 10 frames bailed, it's pretty expensive for the json parsing benchmark
21:02 timotimo the core setting still has more than 100 bails caused by param_* op nonjittability
21:02 donaldh joined #moarvm
21:16 dalek MoarVM: e2aa5a6 | (Timo Paulssen)++ | src/jit/graph.c:
21:16 dalek MoarVM: JIT findcclass and findnotcclass
21:16 dalek MoarVM: review: https://github.com/MoarVM/MoarVM/commit/e2aa5a6b4b
21:41 ggoebel1111112 joined #moarvm
21:57 kjs_ joined #moarvm
23:27 itz joined #moarvm

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