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