03:51
zakharyas joined
06:14
domidumont joined
|
|||
timotimo | maybe the "x + substr gets you off-by-one results" bug would be good for jnthn's perl6-day? | 06:28 | |
06:40
domidumont joined
06:42
domidumont joined
07:34
brrt joined
|
|||
brrt | good * #moarvm | 07:34 | |
tell you what i find reading | |||
'to build live ranges from SSA form, the allocator uses the disjoint-set union-find algorithm and makes a single pass over the code' | |||
2016 is, for me, the year of the disjoint-set union-find algorithm | 07:35 | ||
it is honestly the only algorithm in all of gridkit | |||
merge lines? union-find | |||
merge stations? union-find | |||
classify line parameters? union-find | |||
and now, compute live ranges, with union find | 07:36 | ||
how is that the single most useful algorithm | |||
nwc10 | So it's important that it's fast? Then to misquote Steve Jobs, there should be an Op for that? :-) | 07:41 | |
sorry, that joke doesn't *really* work. | |||
brrt thinks about that joke a bit | 07:43 | ||
aha :-) | |||
oh well, iirc the union-find algorithm runs in very-slightly-above-linear time if you use the proper data structures | |||
turns out in the future i will be using a macbook for work, so hopefully i'll find moarvm mac bugs a bit faster | 07:44 | ||
timotimo | ... oppan steven style ... | 07:47 | |
brrt | i wonder if i can get rid of the let-restriction in the expr jit | 07:50 | |
(i require variables that are used in two paths of an conditional statement to be 'let' prior to the statement, so that they are evaluated prior to the IF | |||
so that both branches acquire an already-made variable | 07:51 | ||
but it shouldn't be that hard to ensure the invariant that a value must be computed prior to its use in a conditional block without this | |||
timotimo: you once wrote a tool to parse graph.c to exprjit fragments, didn't you | 07:54 | ||
do you know if that tool still works | |||
08:42
zakharyas joined
|
|||
timotimo | i think it's committed to moar/tools, isn't it? | 08:47 | |
it ought to at least partially work :) :) | |||
unless C has changed its syntax a bunch in the last ~year | 08:48 | ||
uh oh, i'm getting late to my appointment to get dentistisized | 08:51 | ||
jnthn | moarning, folks | 09:30 | |
Darn, brrt left before I could ask him for some good reading on the disjoint-set union find algo :) | 09:31 | ||
oh, right :) | 09:33 | ||
nwc10 | He'll be back :-) | 09:35 | |
jnthn: somewhere in backlog I pasted some stuff - there's now one spectest failing with ASAN, minimal testcase now attached to its RT ticket. | 09:36 | ||
(the failing spectest is a TODO for an open bug) | |||
jnthn | It's in utf8-c8, yes? | 09:37 | |
nwc10 | IIRC yes | ||
timotimo | my dentist appointment went very well. also, it seems like i'm one of the lucky few who lack the bacteria that cause caries AKA cavities | 10:05 | |
dalek | arVM: c3762be | jnthn++ | src/strings/ops.c: Whitespace cleanup. |
10:23 | |
10:49
travis-ci joined
|
|||
travis-ci | MoarVM build failed. Jonathan Worthington 'Whitespace cleanup.' | 10:49 | |
travis-ci.org/MoarVM/MoarVM/builds/146338841 github.com/MoarVM/MoarVM/compare/4...762bed779a | |||
10:49
travis-ci left
|
|||
jnthn | oh rly? :) | 10:51 | |
nwc10 | NQP fail? | ||
yes, NQP fail | 10:52 | ||
timotimo | hmm, the file ops. we recently got a change for the jvm there | 10:53 | |
jnthn | m: say ("0" x 3 ~ "1").substr(2) | 11:06 | |
camelia | rakudo-moar 5af32b: OUTPUTĀ«00ā¤Ā» | ||
jnthn | nqp: say("0" x 3 ~ "1") | 11:08 | |
camelia | nqp-moarvm: OUTPUTĀ«Confused at line 2, near "say(\"0\" x "ā¤ at gen/moar/stage2/NQPHLL.nqp:706 (/home/camelia/rakudo-m-inst-2/share/nqp/lib/NQPHLL.moarvm:panic)ā¤ from gen/moar/stage2/NQP.nqp:927 (/home/camelia/rakudo-m-inst-2/share/nqp/lib/nqp.moarvm:comp_unit)ā¤ from gen/moā¦Ā» | ||
jnthn | nqp: say(nqp::x("0", 3) ~ "1") | ||
camelia | nqp-moarvm: OUTPUTĀ«0001ā¤Ā» | ||
jnthn | nqp: say(nqp::substr(nqp::x("0", 3) ~ "1", 2)) | ||
camelia | nqp-moarvm: OUTPUTĀ«00ā¤Ā» | ||
jnthn | nqp: BEGIN { substr('xxxx', 2) } | 11:12 | |
camelia | nqp-moarvm: OUTPUTĀ«Cannot invoke this object (REPR: Null; VMNull)ā¤ at <tmp>:1 (<ephemeral file>:)ā¤ from gen/moar/stage2/NQP.nqp:394 (/home/camelia/rakudo-m-inst-1/share/nqp/lib/nqp.moarvm:)ā¤ from gen/moar/stage2/NQP.nqp:610 (/home/camelia/rakudo-m-inst-1/share/nqp/lib/nqpā¦Ā» | ||
jnthn | nqp: BEGIN { nqp::substr('xxxx', 2) } | ||
camelia | ( no output ) | ||
jnthn | Hmm, mebbe found it | 11:37 | |
lunch, bbiab | |||
11:51
brrt joined
|
|||
dalek | arVM: c01472d | jnthn++ | src/strings/iter.h: Fix off-by-one in grapheme iterator. It failed to consider that we are already reading the next repetition by the next time we read another character, and so ended up with a repetition appearing to occur one time too many if we used move_to. |
12:10 | |
12:35
travis-ci joined
|
|||
travis-ci | MoarVM build failed. Jonathan Worthington 'Fix off-by-one in grapheme iterator. | 12:35 | |
travis-ci.org/MoarVM/MoarVM/builds/146360032 github.com/MoarVM/MoarVM/compare/c...1472d7c539 | |||
12:35
travis-ci left
|
|||
dalek | arVM: 236058a | jnthn++ | src/6model/reprs/Semaphore.c: Block/unblock thread for GC on semaphore wait. |
12:37 | |
brrt | jnthn: what about disjoint-set union-find? | 12:53 | |
implementation with c and an array is straightforward | 12:54 | ||
jnthn | :) | 12:56 | |
Where did you read the think about using it for SSA live ranges? :) | 12:57 | ||
*thing | |||
brrt | ehm... 'engineering a compiler' | 12:58 | |
all definitions are unioned at their phi nodes | |||
*all live ranges that spread from definitions are unioned at their phi nodes | 12:59 | ||
so that means that a register assigned to that live range is used throughout, which ensures that both inputs to the phi node will use the same register | 13:01 | ||
that solves a bunch of complexity with regards to COPY and IF and DO nodes | 13:02 | ||
these live ranges can of course be split again if necessary | 13:03 | ||
15:51
lizmat joined
16:31
lizmat_ joined
16:57
lizmat joined
17:56
mtj_ joined
18:00
pyrimidine joined
18:17
FROGGS joined
18:33
lizmat joined
18:40
domidumont joined
18:42
Ven joined
19:20
khagan joined
19:43
brrt joined
|
|||
brrt | just had another thougth that should have been obvious | 19:44 | |
if live ranges are fully 'unioned' | |||
then, they can't overlap in any way | |||
so... my data structure of sets-of-things in a register, well that looks kind of silly now | 19:45 | ||
looking silly is OK, i guess | 19:48 | ||
as long as one learns... | 19:49 | ||
FROGGS | aye | ||
brrt | its just that i have to learn while you have to wait? and that isn't really good | 19:51 | |
of course unifying the live range of differeent things that are connected via phi nodes comes with problems of itself | 19:52 | ||
timotimo | oh well, we can mangae :) | ||
brrt | i'm sure you can | 19:53 | |
i just wan to push the expr jit into the world because (i think) it is really cool | |||
or can be | |||
is supposed to be | 19:54 | ||
timotimo | :) | 19:58 | |
brrt | oh, i guess it's good news, for $future-work i'll be using a macbook, so that may make fixing macbugs a bit easier | 19:59 | |
and we'll have a fully awesome expr jit long before python has its | 20:02 | ||
jnthn | :) | ||
timotimo | python already hat psyco :P | 20:04 | |
brrt | they have pypy, which is another thing entirely | 20:05 | |
i think i argued before that efficient high-performance python equals numpy | |||
imho, R is better for that kind of stuff | |||
but then, i like R, especially the evil bits | |||
i could see myself using perl6 on a daily basis if i could port R's best bits | 20:06 | ||
serious software developers should, by rights, hate R | 20:07 | ||
R is gloriously messy | |||
21:04
domidumont joined
22:22
lizmat joined
|