Perl 6 - the future is here, just unevenly distributed

IRC log for #moarvm, 2014-10-02

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

All times shown according to UTC.

Time Nick Message
01:28 avuserow joined #moarvm
01:54 FROGGS_ joined #moarvm
06:53 zakharyas joined #moarvm
07:00 JimmyZ joined #moarvm
07:10 FROGGS joined #moarvm
07:12 FROGGS joined #moarvm
07:13 kjs_ joined #moarvm
07:35 kjs_ joined #moarvm
07:51 JimmyZ_ joined #moarvm
08:01 odc joined #moarvm
08:04 zakharyas joined #moarvm
08:17 zakharyas joined #moarvm
08:39 kjs_ joined #moarvm
08:57 zakharyas joined #moarvm
08:57 zakharyas1 joined #moarvm
09:03 * jnthn manages to catch the long-standing inline + GC segfault in his debugger :)
09:07 jnthn frame->spesh_cand->num_locals
09:07 jnthn 195
09:07 jnthn 195 * sizeof(MVMRegister)
09:07 jnthn 1560
09:07 jnthn frame->allocd_work
09:07 jnthn 1256
09:07 jnthn Yeah...that's bust.
09:42 JimmyZ jnthn++
09:43 jnthn Will known in the next 10 mins if I've managed to nail it, I think.
09:57 dalek MoarVM: 17896bc | jnthn++ | src/gc/roots.c:
09:57 dalek MoarVM: Don't mark inlined locals for logging frames.
09:57 dalek MoarVM:
09:57 dalek MoarVM: When a continuation is taken involving a logging frame, it can easily
09:57 dalek MoarVM: end up living much longer than we might expect, and the specialization
09:57 dalek MoarVM: may complete without it. Make "not a logging frame" a condition for
09:57 dalek MoarVM: marking extra locals added due to inlining.
09:57 dalek MoarVM: review: https://github.com/MoarVM/MoarVM/commit/17896bc97c
09:59 jnthn FROGGS: Plesae can you see if this patch fixes https://github.com/MoarVM/MoarVM/issues/133 ?
10:02 timotimo jnthn: did you have an opinion on building an sp_advancearriter opcode that'd let us turn a shift on an array iterator into a cheap advance op and then a direct pointer lookup with sp_get_*?
10:05 jnthn timotimo: So we can JIT iterator stuff better?
10:05 timotimo https://github.com/MoarVM/MoarVM/blob/master/src/6model/reprs/MVMIter.c#L52 - could make this switch obsolete and move all these error checks to the front
10:05 timotimo yes
10:06 timotimo i'm not sure to what extent nqp::iter is actually used inside perl6 code itself
10:06 timotimo .o( well, shift in particular )
10:06 timotimo grepping for nqp::shift would probably give many cases of actually shifting stuff from arrays, too
10:07 jnthn Yeah, I think it's more used in NQP code
10:07 jnthn Maybe it's wait until after Austria
10:07 jnthn Because then we'll understand the GLR needs a bit better
10:07 timotimo gotcha
10:07 timotimo i'm looking for simple-ish tasks to pull myself out of writer's block or whatever it is i'm having
10:11 dalek MoarVM: 0df2d6f | jnthn++ | src/core/interp.c:
10:11 dalek MoarVM: Fix crash upon trying to clone a type object.
10:11 dalek MoarVM:
10:11 dalek MoarVM: Closes #128.
10:11 dalek MoarVM: review: https://github.com/MoarVM/MoarVM/commit/0df2d6fdb0
10:13 jnthn timotimo: Hm, so quick-reward things?
10:14 timotimo i think so
10:15 jnthn timotimo: Making the profiler still give output if the program dies with an exception is not too hard, I think.
10:15 jnthn timotimo: Also you could look at depth limiting, so that it aggregates results below a certain call-tree depth when building the output
10:16 jnthn timotimo: So that then the data for CORE.setting would be useful
10:16 timotimo i had a quick glance at the depth limiting, but it looked like if i did the "obvious" change it'd ignore data from the innermost frames, too
10:17 jnthn I was going to do it by recording all the data
10:17 jnthn And then just trimming it when we turn it into data structures
10:17 jnthn 'cus the recording of all the data is in quite compact C data structures
10:17 jnthn Whereas the thing we use to produce the JSON grows huge.
10:18 timotimo ah, aye
10:18 timotimo so the change would be in the nqp code rather than the c code?
10:18 jnthn No, I was going to do it in the C code
10:19 jnthn But in the C code that builds the data structures
10:19 jnthn Lemme show you where...momnet
10:19 jnthn dump_call_graph_node in src/profiler/profile.c
10:20 timotimo mhm
10:22 jnthn timotimo: I pondered adding an extra arg to that recursive routine
10:22 jnthn timotimo: That is depth
10:23 jnthn timotimo: And if it passes a threshold, do something different with the succs beneath it
10:23 timotimo right; the only thing we'd need then is to calculate and remove the exclusive time, no?
10:24 timotimo but we'd leave the callees list empty
10:24 jnthn Well, "leave callees list empty" is one way to go
10:25 jnthn But then we miss out on data
10:25 FROGGS joined #moarvm
10:26 timotimo even if we still recurse and calculate all ze stuff?
10:26 jnthn I was pondering that we could somehow aggregate the data below that point into a single node
10:27 jnthn And insert a node with a name like <AGGREGATED_42> or so
10:27 timotimo hm. flatten out and then aggregate the callee's tree? (or rather: generate the aggregated callees node directly rather than building a tree and then flattening it)
10:29 jnthn timotimo: I was going to make a node and then write a different recursive thing over succs that we pass that node to
10:29 jnthn timotimo: And then it just aggregates the data into that one node
10:29 timotimo mhm mhm
10:30 timotimo would that aggregate node have all the callees, then?
10:30 timotimo or would it be a much simpler node?
10:30 jnthn Well, I was thinking a single node.
10:30 jnthn You don't have to worry about times
10:30 jnthn Well;
10:30 jnthn Hmm
10:30 timotimo hm, so what exactly would be aggregated? all entry counts below that point in the tree?
10:31 jnthn Actually better I think would be to make it so if we have
10:31 timotimo also, i haven't looked deep into how the allocations data looks
10:31 timotimo i think that's "beside" the tree
10:31 jnthn No, it's in the tree
10:31 jnthn ...loads of nodes down to limit... -> node hitting limit
10:31 jnthn And below that node we had succ1 -> blah
10:32 jnthn succ2 -> [blah2 -> blah3, blah4 -> blah3 -> blah5]
10:32 jnthn Then we'd end up with the node that hit the limit having a flat bunch of children
10:32 jnthn succ1, succ2, blah2, blah3 (which aggregates), blah4, blah5
10:33 jnthn Then we still get all the per-routine timings right.
10:33 jnthn And then further annotate those flattened out children with an extra key in the hash
10:34 timotimo the key being just a signal for "this is an aggregate node"?
10:34 jnthn So in the UI instead of seeing a graph below a certain point, you just see a list of things that got called
10:34 jnthn Right
10:34 jnthn Well
10:34 jnthn Not even aggregate in some cases
10:35 jnthn I mean, if there's just a chain of calls below a certain point, we'd have raised them all up to immediate children of the node when we reached the depth limit
10:35 timotimo mhm
10:35 jnthn That is, we turn a tree into a set, and aggregate if we see multiple nodes for the same static frame
10:36 timotimo mhm
10:36 timotimo does it seem like a good or bad idea to just keep that a list and do linear searches to see if a given routine/frame has already been added to that set?
10:36 jnthn Linear search is OK here
10:37 jnthn I think the thing that blows up CORE.setting compilation is hugely deep chains of as_mast calls or whatever we call it
10:37 jnthn As in, the profile of CORE.setting compilation
10:38 timotimo mhm mhm
10:38 jnthn And there's only around 10-20 candidates
10:38 timotimo and perhaps parts of the parse tree that go pretty deep?
10:39 jnthn Maybe in places
10:48 FROGGS jnthn: lemme see (MoarVM#133)
10:50 FROGGS hmmm, I've got problems accessing github :o/
11:03 FROGGS jnthn: #133 is solved, aye
11:03 FROGGS err, jnthn++ even :o)
11:04 jnthn \o/
11:04 jnthn I figured that may be the same bug :)
12:05 JimmyZ joined #moarvm
12:16 dalek MoarVM/esc: f03cb5e | jonathan++ | / (4 files):
12:16 dalek MoarVM/esc: Start annotating ops that allocate.
12:16 dalek MoarVM/esc: review: https://github.com/MoarVM/MoarVM/commit/f03cb5e61f
12:16 dalek MoarVM/esc: 236c7a8 | jonathan++ | src/spesh/dump.c:
12:16 dalek MoarVM/esc: Add dump support for escape information.
12:16 dalek MoarVM/esc:
12:16 dalek MoarVM/esc: We're not recording any yet.
12:16 dalek MoarVM/esc: review: https://github.com/MoarVM/MoarVM/commit/236c7a81b1
12:16 dalek MoarVM/esc: a19689a | jonathan++ | src/spesh/ (3 files):
12:16 dalek MoarVM/esc: Start recording allocation sites.
12:16 dalek MoarVM/esc: review: https://github.com/MoarVM/MoarVM/commit/a19689a8bf
12:17 jnthn masak++ helped with those too
12:17 jnthn (They're from yesterday, at BJ airport)
12:36 masak jnthn: I'm guessing you found/fixed the segfault? :)
12:37 jnthn masak: Oh...no, that was uncommitted so the patch still lives on my laptop
12:37 masak ah ha.
12:50 JimmyZ jnthn: looks like missing break after 'found = 1' in 236c7a81b1
12:53 jnthn JimmyZ: That's probably more efficient, though makes no difference to correctness
12:53 JimmyZ aye
12:54 jnthn Feel free to tweak it.
12:58 dalek MoarVM/esc: 0c32ff2 | jimmy++ | src/spesh/dump.c:
12:58 dalek MoarVM/esc: add missing break
12:58 dalek MoarVM/esc: review: https://github.com/MoarVM/MoarVM/commit/0c32ff27ae
13:38 FROGGS[mobile] joined #moarvm
13:46 FROGGS joined #moarvm
14:30 FROGGS joined #moarvm
16:08 JimmyZ_ joined #moarvm
17:09 vendethiel joined #moarvm
17:18 dalek MoarVM: 685ad32 | jnthn++ | src/main.c:
17:18 dalek MoarVM: Improve usage, include environment variables.
17:18 dalek MoarVM: review: https://github.com/MoarVM/MoarVM/commit/685ad32ae0
17:51 Ven joined #moarvm
18:47 brrt joined #moarvm
18:55 brrt \o
18:57 Ven joined #moarvm
18:59 jnthn o/ brrt
18:59 brrt hi jnthn
18:59 brrt back from china
18:59 brrt ?
18:59 jnthn Yes :)
19:02 brrt glad to be home? i would be :-)
19:02 brrt ehm... did we implement clone in the JIT?
19:03 jnthn Yes, very :)
19:03 jnthn Oh, good point about the clone thing. Hmm.
19:04 brrt oh, we do that by calling MVM_repr_clone
19:04 brrt so we can just update that definition
19:08 brrt hmm..
19:08 brrt i wonder if we could allocate some register space for temporary roots
19:09 brrt that way, it'd be easier to use in the JIT directly
19:17 dalek MoarVM: cedaaa3 | (Bart Wiegmans)++ | src/6model/reprconv.c:
19:17 dalek MoarVM: Fix concreteness test for the reprconv.
19:17 dalek MoarVM:
19:17 dalek MoarVM: This also closes #128, but now for the JIT.
19:17 dalek MoarVM: review: https://github.com/MoarVM/MoarVM/commit/cedaaa3589
19:19 dalek MoarVM: b4dd2f0 | (Bart Wiegmans)++ | src/main.c:
19:19 dalek MoarVM: Document bytecode directory environment flag
19:19 dalek MoarVM: review: https://github.com/MoarVM/MoarVM/commit/b4dd2f0f10
19:20 brrt 'software maintenance' :-)
20:12 lizmat joined #moarvm
20:44 brrt left #moarvm
21:05 japhb joined #moarvm
21:45 kjs_ joined #moarvm
22:27 kjs_ joined #moarvm

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