00:36
vendethiel joined
01:01
colomon joined
01:22
mtj_ joined
02:10
leedo joined
02:16
raiph joined
02:53
raiph joined
|
|||
dalek | arVM: d2621b2 | (Jimmy Zhuo)++ | / (3 files): small optimization |
03:20 | |
04:36
vendethiel joined
05:56
vendethiel joined
06:24
FROGGS joined
06:36
vendethiel joined
06:53
nebuchadnezzar joined
06:56
dalek joined
07:19
rurban joined
07:41
vendethiel joined
09:53
vendethiel joined
|
|||
timotimo | JimmyZ: when is that code actually being run, OOC? | 11:09 | |
JimmyZ | timotimo: don't know, but make MASTOps.moarvm size about 8% smaller | 11:11 | |
timotimo | oh. that's not so bad :) | 11:13 | |
jnthn | I'm surprised you didn't have to chance the indexer to an nqp::atpos_s | ||
JimmyZ | hmmm, I think it should change to atpos_s | 11:14 | |
jnthn | *change | ||
nqp: my $s := nqp::list_s('abc'); say($s[0]); | 11:15 | ||
uh... | |||
11:16
camelia joined
|
|||
jnthn | nqp: my $s := nqp::list_s('abc'); say($s[0]); | 11:16 | |
m: say 'alive?' | 11:17 | ||
Hm. | |||
camelia | ..nqp-parrot: OUTPUTĀ«Can't exec "./rakudo-inst/bin/nqp-p": No such file or directory at lib/EvalbotExecuter.pm line 188.ā¤exec (./rakudo-inst/bin/nqp-p /tmp/tmpfile) failed: No such file or directoryā¤Server error occurred! Closing Link: ns1.niner.name (Quit: camelia)ā¤Lost connectā¦Ā» | ||
..nqp-moarvm: OUTPUTĀ«MVMArray: atpos expected string registerā¤ at /tmp/tmpfile:1 (<ephemeral file>:<mainline>:30)ā¤ from gen/moar/stage2/NQPHLL.nqp:1289 (/home/camelia/rakudo-inst-1/share/nqp/lib/NQPHLL.moarvm:eval:190)ā¤ from gen/moar/stage2/NQPHLL.nqp:1492 (/home/camelia/raā¦Ā» | |||
jnthn | Aha | ||
camelia | nqp-moarvm: OUTPUTĀ«MVMArray: atpos expected string registerā¤ at /tmp/tmpfile:1 (<ephemeral file>:<mainline>:30)ā¤ from gen/moar/stage2/NQPHLL.nqp:1289 (/home/camelia/rakudo-inst-1/share/nqp/lib/NQPHLL.moarvm:eval:190)ā¤ from gen/moar/stage2/NQPHLL.nqp:1492 (/home/camelia/raā¦Ā» | ||
..nqp-jvm: OUTPUTĀ«(signal ABRT)#ā¤# There is insufficient memory for the Java Runtime Environment to continue.ā¤# pthread_getattr_npā¤# An error report file with more information is saved as:ā¤# /tmp/jvm-9508/hs_error.logā¤Ā» | |||
..nqp-parrot: OUTPUTĀ«Can't exec "./rakudo-inst/bin/nqp-p": No such file or directory at lib/EvalbotExecuter.pm line 188.ā¤exec (./rakudo-inst/bin/nqp-p /tmp/tmpfile) failed: No such file or directoryā¤Lost connection to server irc.freenode.org.ā¤Ā» | |||
rakudo-moar 48c0ba: OUTPUTĀ«alive?ā¤Ā» | |||
jnthn will nqp-m next time :P | 11:18 | ||
dalek | arVM: da6e353 | (Jimmy Zhuo)++ | lib/MAST/Nodes.nqp: small fix |
11:20 | |
timotimo | i've got a few local patches to cope with box + truthnesscheck and negation + truthnesscheck a bit better in spesh | 12:03 | |
jnthn | Nice | 12:04 | |
timotimo | but i have no good understanding of the &?ROUTINE thing yet | 12:05 | |
did you see that pretty much every code object now has a curcode + getcodeobj + bindlex_no for &?ROUTINE now? | 12:06 | ||
well, not every code object of course | |||
only for routines | |||
jnthn | yeah | 12:08 | |
I'm aware of that one | |||
We got &?ROUTINE horribly broken beforehand, though. | |||
timotimo | right | ||
i'm not saying "revert that patch stat!" ;) | |||
jnthn | :) | 12:09 | |
We can also elminate some cases of it in the Rakudo-level optimizer | |||
timotimo | i expected that, but i didn't really know what to look out for to prevent the elimination | 12:10 | |
i mean, i can guess we can search for QAST::Var that refer to the name and if none are there, we throw it out? | |||
jnthn | I think we rely on it being visible through CALLER is the thing | 12:11 | |
timotimo | the good thing about the rakudo-level optimizer is that it can see directly into inner scopes, whereas spesh can not | ||
yeah, i feared thta | |||
that* | |||
jnthn | So we can eliminate it in simple ops | ||
timotimo | i remember being interested in building a simple analysis that stores "does this subroutine seem harmless?" information | ||
like, does it access caller, does it eval, ... | |||
and persist that across longer distances than our optimizer currently cares about | 12:12 | ||
12:17
brrt joined
|
|||
brrt | \o | 12:26 | |
timotimo | o/ brrt | ||
jnthn | The thing is "is it harmless" depends on the optimization | 12:29 | |
Which is why collecting facts about the code, then looking at them per transofrm we want to do, is the general approach I've been pushing it in | |||
o/ brrt | |||
timotimo | right, it'd want some sort of flag vector | 12:30 | |
and also something that'll signal "the flags of this sub depend on the following subs that have not yet been fully analyzed:" | |||
and then we have multi subs and other kinds of interesting things | 12:31 | ||
12:50
FROGGS joined
|
|||
brrt | hmm | 12:55 | |
it turns out that the notion of a basic block within a tree is suspicious at best | |||
jnthn | Especially when the tree is a DAG? :) | 12:56 | |
brrt | especially, as in my case, if the tree is really a DAG | ||
yes | |||
timotimo | well, there's really the execution order tree/sequence and the data dependency graph/DAG | 13:00 | |
brrt | hmm | 13:01 | |
actually | |||
the linear order of the moarvm bytecode is fully preserved in constructing the expression 'tree' | 13:02 | ||
and indeed postorder traversal generates just the same sequence | 13:03 | ||
except for where a node is shared | |||
as it is using the let statement | |||
hmm | |||
i'm wondering if the expr tree IR is not making me 'stuck' in a way | 13:07 | ||
dalek | arVM/even-moar-jit: 22bd3c0 | brrt++ | / (8 files): Fix const operands Not all literal operands are equally sized, so this patch differentiates between different consts. Also add a few new exprlist templates. These interact in known ways to make the pseudocompiler panic. |
13:15 | |
timotimo | :o | 13:17 | |
no newline at end of file | |||
*gasp* | |||
"interact in known ways to make the pseudocompiler panic" - that's somehow funny to me :) | |||
brrt | well... i can learn to live with it :-P | ||
well, ehm, take a look at the template for sp_p6obind_o; because the write-barrier macro 'consumes' the second operand, it's no longer available for the second operation, becuase - being a conditional block - we can't properly rely on it being produced | 13:19 | ||
timotimo | oh | 13:20 | |
brrt | i.e. the conditional block makes the load etc. conditional, but the nonconditional block doesn't recompute it because it assumes it should be there | ||
assumption is the mother of all... | 13:21 | ||
13:21
zakharyas joined
14:00
FROGGS joined
14:13
raiph joined
|
|||
dalek | arVM/improve_boxing_and_not: 21d34f0 | timotimo++ | / (7 files): WIP on removing unnecessary boxing+unboxing and deduplicate "not" instructions and such. |
14:39 | |
timotimo | pushed my WIP, will be on the road for an hour | ||
15:13
TimToady joined
15:26
oetiker joined
15:30
lizmat joined
15:52
rurban joined
16:02
zakharyas joined
|
|||
timotimo | i've got a test workload where the bigint boxing + unboxing optimization is hit, but it's only ever hit once and that's in prefix:<!> | 16:21 | |
i'll remove the debug output and see that spec tests are still happy | 16:23 | ||
16:32
JimmyZ_ joined
|
|||
timotimo | # expected: "1 9 25 49 81" | 17:31 | |
# got: " 1 9 25 49 81 " | |||
i wonder how this happens | |||
i know what part of my stuff causes this at least | 17:34 | ||
what do i need to do so that it appears to me what's wrong ... i wonder | 17:43 | ||
20:43
rurban joined
22:29
sivoais joined
22:35
TEttinger joined
23:02
xiaomiao joined
23:18
xiaomiao joined
|