00:42
nwc10 joined
00:53
kjs_ joined
02:34
FROGGS joined
02:48
ilbot3 joined
05:56
vendethiel joined
06:42
vendethiel joined
06:52
domidumont joined
06:53
domidumont joined
06:59
domidumont joined
08:58
lizmat joined
09:18
lizmat joined
09:23
vendethiel joined
09:38
lizmat joined,
mojca joined
|
|||
mojca | is the following compile warning expected? src/jit/emit_x64.dasc:274:86: warning: shift count >= width of type [-Wshift-count-overflow] | 09:38 | |
it's about shifting for 32 "dasm_put(Dst, 94, (unsigned int)((uintptr_t)obj), (unsigned int)(((uintptr_t)obj)>>32), Dt1E([reg]));" | |||
09:58
kjs_ joined
|
|||
nine | mojca: what platform are you on? | 10:40 | |
mojca | OS X | ||
nine: x86_64 to be complete | 10:41 | ||
oh, wait, maybe I just forgot about recent changes | |||
but I'm not building for i386, at least not intentionally | |||
oh, wait … stupid me | 10:42 | ||
the warnings come from an unintentional universal build (I did just "port upgrade moarvm", forgetting that I had installed this as universal earlier) | |||
I'm sorry for the noise; I'll try again, but I think that's it | 10:43 | ||
10:48
kjs_ joined
|
|||
mojca | nine: indeed, sorry for the false alarm; I tried building just for x86_64 again and the warnings are gone; it was just confusing and I forgot the issue from one or two months back | 10:53 | |
nine | mojca: then the warning fulfilled it's purpose :) | 10:54 | |
mojca | in a sense; I would be happier if that code was simply commented out, but it's fine as it is | 10:55 | |
tha code would not be used on i386 anyway | |||
nine | Is there any i386 support at all in the jit? | 10:57 | |
mojca | nine: no, it's not, but it has recently been circumvented at runtime | 11:11 | |
earlier it just crashed | |||
11:12
kjs_ joined
11:47
lizmat joined
14:33
TimToady joined
15:07
Ven joined
15:21
brrt joined
15:34
zakharyas joined
|
|||
timotimo | Constructing JIT graph (cuuid: cuid_2975_1457271489.25971, name: 'infix:<*>') | 15:34 | |
BAIL: op <param_rp_n> | |||
^- required positional, num ... shouldn't we be able to jit this already? | |||
brrt: ^? | 15:35 | ||
brrt | oh, yes | ||
pending refactoring these ops | 15:36 | ||
timotimo | oh | ||
brrt | :-P | ||
timotimo | ah well | ||
brrt | to recall what went wrong there | ||
these functions return a struct | |||
with a value and a boolean-if-they-received-that-value | |||
they should, probably, be refactored to return success/failure and write the value to a pointer arg | 15:37 | ||
timotimo | oh, atposref_n aborts jitting of this AT-POS | ||
i can implements this | |||
brrt | cool | ||
brrt is implementing a jit test bisector | |||
timotimo | neat | 15:38 | |
based on the "fuel" metaphor, i see | |||
brrt | fuel metaphor? | 15:43 | |
timotimo | yeah | 15:45 | |
the optimizer (or jit in this case) would "run on" fuel and only do stuff until it "runs out" | |||
so if you want to find some place that breaks things, you give it more or less fuel and see where it runs out | 15:46 | ||
brrt | hahahah | 15:47 | |
cool | |||
timotimo | -Constructing JIT graph (cuuid: cuid_4876_1457271489.25971, name: 'AT-POS') | ||
-BAIL: op <atposref_n> | |||
\o/ | |||
my local changes are teaching facts.c about all the *ref_* ops creating the corresponding types from the HLL and jitting the atposref_* ops | 15:48 | ||
brrt | \o/ | ||
timotimo | i should have a closer look if the *ref_* ops are currently appearing in the after-inlining-all-the-things output in my current test code | ||
if they do, i could start working on spesh going directly via the original object and whatever register has the index/name/... | 15:49 | ||
in any case, this code generates a gigantic amount of reference objects | |||
to the point where 10% run time is spent in GC | |||
we're taking lexical refs to pass to postcircumfix:<[ ]> ;_; | 16:06 | ||
as indices ;_; | |||
maybe because we specify \key ? | 16:09 | ||
but we also have candidates with the int position available | 16:10 | ||
dalek | arVM: 6b2e4e0 | timotimo++ | src/jit/graph.c: jit the atposref_* ops |
16:31 | |
arVM: a3a5d0f | timotimo++ | src/spesh/facts.c: all the ref ops now properly set up facts in spesh |
|||
timotimo pushes before heading out | 16:32 | ||
dalek | arVM/even-moar-jit: 207a337 | brrt++ | src/ (3 files): Add maximum jit expr compile indexes This is to allow 'easy' bisection of the relevant broken piece of code. To be coupled with a bisection script. |
16:34 | |
arVM/even-moar-jit: cd79c8e | brrt++ | tools/jit-bisect.pl: Add tool for expr JIT bisecting |
|||
brrt | we can now bisect where a particular piece of code really breaks | 16:35 | |
if it is a piece of the expression jit, at least | |||
nine | This segfault worries me a bit: gist.github.com/niner/dfdb4ef9ce9ac040abc2 | ||
brrt | hmm | 16:36 | |
rerun with --optimize=0 --debug | |||
nine | Note that this is in Inline::Perl6 which is hacky code that embeds MoarVM despite the latter not having an embedding interface. That's why I worry only a bit. | 16:37 | |
What variables do those command line switches set in the code? I think it would be easier setting them in C than trying to find out how to pass those args to MoarVM | 16:42 | ||
Oh you mean Configure.pl! | 16:44 | ||
brrt | sorry, i mean: reconfigure with --optimize=0 --debug, build, and rerun your test :-) | ||
aye | |||
nine | That I can do :) | ||
dalek | arVM/even-moar-jit: 8281387 | brrt++ | tools/jit-bisect.pl: Tell reader which frame really is broken |
16:45 | |
16:46
cognominal joined
|
|||
nine | Updated the gist: gist.github.com/niner/dfdb4ef9ce9ac040abc2 | 16:47 | |
brrt | hmm | 16:48 | |
doesn't really ring a bell | |||
jnthn has been fixing leaks recently though | |||
nine | So maybe MoarVM is now trying to properly free things that I have not set up correctly. | 16:49 | |
timotimo | interesting, a compunit's gc_free is asploding? | 16:59 | |
could this have something to do with sharing callsites between things? that's what hoelzro hunted at some point | 17:00 | ||
hoelzro | I hope that's not it; that was a pain to track down | 17:03 | |
timotimo | well, a valgrind run might tell us more about this | 17:05 | |
or even asan | |||
17:10
kjs_ joined
|
|||
dalek | arVM/even-moar-jit: e5a150c | brrt++ | tools/jit-bisect.pl: Silence prove, probe for broken basic block |
17:13 | |
brrt | this allows me to pinpoint *exactly* which basic block compilcation is wrong for a given test | 17:14 | |
which is , frame 395, basic block 8, binparse-string | 17:15 | ||
17:18
brrt joined
|
|||
brrt | hmm | 17:18 | |
next stop | |||
make jit bytecode dumps comparable | |||
17:21
domidumont joined
|
|||
timotimo | oh yeah | 17:46 | |
18:17
kjs_ joined
18:36
kjs_ joined
19:02
Ven joined
19:17
mojca_ joined
20:01
brrt joined
|
|||
brrt | dalek has disconnected... | 20:24 | |
anyway, i've pinpointed the exact breakage | |||
will now ponder a fix | |||
jnthn | brrt++ | ||
brrt | anyway, that's not the cool bit | ||
the cool bit is | |||
i've automated the pinpointing | |||
jnthn | \o/ | 20:25 | |
That *is* cool | |||
'cus it'll save a lot of time later | |||
brrt | thing is, it's probably not the getlex which is wrong | 20:26 | |
because that one looks right | |||
hmmm | 20:30 | ||
the plot thickens | |||
20:59
mojca joined
21:04
kjs_ joined
|
|||
timotimo | aaw, he didn't get to fixing it before leaving? | 21:23 | |
lizmat | the plot thickens indeed :-( | 21:25 | |
:-) | |||
timotimo | yeah | 21:48 | |
21:59
kjs_ joined
22:07
kjs_ joined
22:09
brrt joined
|
|||
timotimo | hooray, less than one garbage collection per frame | 22:26 | |
*cough* *cough* | |||
not significantly less, though |