Perl 6 - the future is here, just unevenly distributed

IRC log for #moarvm, 2015-11-17

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

All times shown according to UTC.

Time Nick Message
02:08 tokuhiro_ joined #moarvm
02:18 FROGGS joined #moarvm
02:23 FROGGS_ joined #moarvm
05:01 BinGOs joined #moarvm
05:04 flaviusb joined #moarvm
05:09 _longines joined #moarvm
05:09 vendethiel joined #moarvm
05:22 Peter__R joined #moarvm
05:23 Hotkeys_ joined #moarvm
06:02 FROGGS_ joined #moarvm
06:07 TimToady joined #moarvm
06:43 domidumont joined #moarvm
06:59 domidumont joined #moarvm
07:02 domidumont joined #moarvm
07:06 nebuchadnezzar joined #moarvm
07:27 FROGGS joined #moarvm
07:37 colomon joined #moarvm
07:43 nwc10 ASAN fails after test 32 in t/spec/S32-str/encode.rakudo.moar http://paste.scsys.co.uk/501579
07:43 nwc10 I *think* that it used to fail earlier
07:44 nwc10 oh wait, I may not be current
08:11 nwc10 OK, that was the earlier. Now we make it to test 36
08:11 nwc10 http://paste.scsys.co.uk/501580
08:19 JimmyZ joined #moarvm
08:31 nwc10 OK, we're failing in the last subtest of test 36: http://paste.scsys.co.uk/501581
08:34 zakharyas joined #moarvm
08:52 colomon joined #moarvm
08:58 kjs_ joined #moarvm
09:49 brrt joined #moarvm
09:51 brrt good * #moarvm
09:51 brrt i have some exciting news
09:52 brrt even-moar-jit can now pass the nqp test suite
09:52 jnthn :D
09:52 jnthn \o/
09:52 jnthn brrt++
09:54 jnthn ASAN barf is in UTF-16, which we know is bust
09:54 jnthn But nice we have an ASAN reminder... :)
09:54 brrt yes, ASAN++
09:55 brrt of course i have to qualify that by saying that i've removed all sorts of interesting stuff from the templates in order to get that to work
09:55 brrt so there is still a lot of broken and unfinished
09:55 brrt but at least i have something to build on
09:55 brrt a minimal base, as it were
09:56 brrt which hopefully will break the cycle of frustration
09:58 brrt (i'll have to push later today, as my $code-laptop cannot connect to the internet at $study-office
10:01 jnthn brrt: Yes, having something that works to build on is always good
10:03 brrt now i want to attack the tiler linearisation problem; after that the offline register allocator; and somewhere in between the implicit cost computation
10:03 brrt maybe you can help me a bit with the latter?
10:03 brrt you know maybe a bit how i compute the tiler tables?
10:06 brrt well, i need somehow to add the cost of e.g. (load reg) to (add reg reg) in case i can compile both (add reg (load reg)) and (load reg); (add reg reg);
10:06 * jnthn hazily remembers talking about this before
10:06 brrt i can of course only generate that if the second child of those is a (load reg) tile of some sort
10:07 brrt yes, i've been banging on about it for quite some time
10:07 jnthn It becomes an optimization problem rather than a simple compare two numbers problem?
10:07 brrt so, there's the thing, i first find all possible combinations of rules (e.g. (add reg reg) combines with (add reg (load reg)) but not with (sub reg reg))'
10:08 brrt in principle it is still a compare two numbers problem, the problem is how to arrive at the numbers
10:08 brrt correctly
10:08 jnthn ah
10:08 jnthn OK, so it's not as bad as I feared :)
10:08 brrt :-)
10:08 jnthn Though yeah, those numbers are potentially interesting in so far as instruction scheduling may partially influence them too?
10:08 brrt yes, that is true
10:09 brrt although i have opted to neglect that for the time being
10:09 brrt in fact, this tiling approach is unviable if we include instruction scheduling
10:10 brrt although limited instruction reordering may be possible, it cannot guarantee an optimality under that constraint; but i can't claim to fully understand that topic, so i may be wrong
10:10 jnthn It may be easier to peephole anyway
10:11 brrt instruction scheduling you mean?
10:11 jnthn yeah
10:11 brrt hmmm
10:11 brrt ok, i'll save that thought for later :-)
10:11 jnthn :-)
10:11 jnthn Yeah, it's certainly for later
10:12 brrt in fact, at current constraints, i assume the optimal rule for an optimal desired symbol can be always computed statically
10:12 brrt i.e. i want my add node to yield a reg, and given that i can compile (add reg reg) and (add reg (load reg)), i can statically determine which one of these ought to be cheapest
10:13 brrt so for that purpose i use a table
10:13 brrt it is the computation of this 'minimum-cost' table which is the trouble
10:15 domidumont joined #moarvm
10:15 brrt this.. should be a simple problem, since i know what combinations-of-rules generate the ruleset refering to (add reg reg) and (add reg (load reg)); i need those combinations for tiling correctly in the first place
10:15 brrt (these combinations are what makes the table so large, by the way)
10:17 brrt i just can't figure out how to generate that table .. or how to walk the created table
10:17 domidumont joined #moarvm
10:18 brrt hmmm
10:18 brrt maybe it's simpler than i think
10:18 brrt once i have the table, i can reverse it; that is generate all combinations of rule-and-child-rulesets which generate a given ruleset
10:18 brrt these child-rulesets have rules which by themselves have a cost
10:19 brrt although, of course, the 'hidden' cost of these rules is then not calculated... so maybe i need to iteratively calculate it again
10:28 jnthn What's the "key" used to index into the table?
10:29 brrt into the tiler lookup table? that is head, ruleset-for-first-child, ruleset-for-second-child
10:29 jnthn No, the proposed cost table
10:29 brrt iirc, the intermediate table has these hashed into a single key, the final table is nested
10:29 jnthn Or you'd include them in the tiler lookup table?
10:29 brrt oh, that key
10:29 brrt that's ruleset, symbol-name
10:30 brrt e.g. ({1,2}, reg)
10:34 brrt the tiler lookup table is for selecting rulesets; the cost-table is for selecting rules-out-of-rulesets, and there is a third table which maps selected rules to the required children-symbols, which is then used to lookup the rule in the second table
12:43 dalek MoarVM/even-moar-jit: cd73e63 | brrt++ | src/ (5 files):
12:43 dalek MoarVM/even-moar-jit: Let expr tree build consume an iterator
12:43 dalek MoarVM/even-moar-jit:
12:43 dalek MoarVM/even-moar-jit: This allows us to safely break a basic block and let the common
12:43 dalek MoarVM/even-moar-jit: graph handling logic deal with difficult cases. This version
12:43 dalek MoarVM/even-moar-jit: can run nqp make test, and, I presume, use OSR correctly.
12:43 dalek MoarVM/even-moar-jit:
12:43 dalek MoarVM/even-moar-jit: Also fix a bug (and special case) of the inc_i and friends;
12:43 dalek MoarVM/even-moar-jit: treating a read-write operand simply as a write operand
12:43 dalek MoarVM/even-moar-jit: is much simpler.
12:43 dalek MoarVM/even-moar-jit:
12:43 dalek MoarVM/even-moar-jit: There are still plenty of things missing! But at least, and for
13:32 TimToady joined #moarvm
15:37 tokuhiro_ joined #moarvm
15:44 kjs_ joined #moarvm
17:02 hoelzro o/ #moarvm
17:38 tokuhiro_ joined #moarvm
17:41 kjs_ joined #moarvm
18:17 FROGGS joined #moarvm
19:29 vendethiel joined #moarvm
19:33 hoelzro jnthn: I tried merging in my memory leak fixes last night, but it segfaults with your recent change to flag_count.  Could you clarify for me how flag_count on MVMArgProcContext and MVMCallsite should relate?
19:34 jnthn hoelzro: flag_count is only applicable if arg_flags is set
19:34 jnthn hoelzro: That is, only set in flattening contexts
19:35 hoelzro hmm; would that result in a valid situation where MVMArgProcContext.named_used would be NULL?
19:35 hoelzro that's what's segfaulting, and the creation of named_used seems to depend on arg_flags and flag_count
19:37 jnthn Well, if there are no nameds, for example...
19:39 hoelzro jnthn: does a context lacking arg_flags imply that its callsite will also lack arg_flags?
19:39 tokuhiro_ joined #moarvm
19:39 jnthn No
19:40 jnthn Callsties always have argflags
19:40 jnthn Well, expcet maybe the zero-arg site
19:40 hoelzro so assert(callsite->flag_count > 0) should always work?
19:40 domidumont joined #moarvm
19:41 jnthn No
19:41 jnthn The zero-arg callsite has a 0 flag count
19:41 jnthn foo() # 0 args
19:41 hoelzro ah, that makes sense
19:44 hoelzro jnthn: should the flag_count on a context and its callsite match?
19:44 hoelzro I'm trying to figure out how contexts are getting created without named_used and segfaulting
19:46 jnthn No
19:46 jnthn They may match, but it's only by luck
19:46 hoelzro alright
19:46 hoelzro thanks!
19:46 jnthn my @a = 1; foo(|@a) # a case where they match
19:46 jnthn The first has 1 flattening arg
19:46 jnthn The second has 1 arg
19:46 jnthn (callsite the flattening, the context the 1 arg)
19:47 hoelzro ah ha
20:03 dalek MoarVM: 5e283c5 | peschwa++ | src/core/interp.c:
20:03 dalek MoarVM: Check if the next outer is null in bindlex.
20:03 dalek MoarVM:
20:03 dalek MoarVM: Analogous to commit b370dd9. I don't think we hit this, but the semantics are
20:03 dalek MoarVM: equivalent and we could hit it when trying to bind further out than outers are
20:03 dalek MoarVM: actually available.
20:03 dalek MoarVM: review: https://github.com/MoarVM/MoarVM/commit/5e283c5ee3
20:03 dalek MoarVM: 1001d53 | FROGGS++ | src/core/interp.c:
20:03 dalek MoarVM: Merge pull request #300 from peschwa/master
20:03 dalek MoarVM:
20:03 dalek MoarVM: Check if the next outer is null in bindlex.
20:03 dalek MoarVM: review: https://github.com/MoarVM/MoarVM/commit/1001d538cf
21:41 tokuhiro_ joined #moarvm
22:42 kjs_ joined #moarvm
23:42 tokuhiro_ joined #moarvm

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