timotimo | interesting, we have a few instances of const_s followed by getattrs_ | 00:08 | |
dalek | arVM: 591d294 | (Timo Paulssen)++ | src/jit/graph.c: fix bindattrs_*, implement getattrs_*, simplify getattr_* |
00:19 | |
timotimo | tomorrow i can probably teach spesh to turn getattrs_* and bindattrs_* into getattr_* and bindattr_* and give them hints, or a spesh cache. | 00:24 | |
hum. it kinda seems like it should already do something like that | 00:25 | ||
could very well be it just can't find the slot with try_get_slot or something like that. oh well. | 00:28 | ||
01:02
FROGGS_ joined
01:10
avuserow joined
01:27
avuserow joined
|
|||
dalek | arVM: 1157bb4 | (Timo Paulssen)++ | src/jit/graph.c: implement coerce_In in the jit |
01:50 | |
arVM: e3580a7 | (Timo Paulssen)++ | src/jit/graph.c: implement div_In in the jit |
|||
timotimo | tomorrow i'll go for brshift_i and blshift_i | 01:52 | |
diakopter | those should be the easiest ones ever | 02:02 | |
avuserow | timotimo: what command are you trying to run that needs tons of memory? I might be able to spin up a large machine at $work | 03:48 | |
if it's something simple, I can possibly help up to about 40GB | 03:49 | ||
07:41
zakharyas joined
08:07
kjs_ joined
|
|||
sergot | hi o/ | 08:30 | |
08:41
kjs_ joined
|
|||
timotimo | avuserow: supplying --profile-compile to the compilation of the core setting | 09:16 | |
FROGGS | pain! I tell ya | 09:17 | |
timotimo | diakopter: they should be, aye :) | ||
FROGGS | I try to register an error handler (a callback) for libxml2, but the signature of that callback has varargs :/ | 09:18 | |
timotimo | haven't had to do that yet, dunno how dyncall models that | 09:32 | |
10:18
kjs_ joined
|
|||
timotimo | at this point, it seems like i'm just hunting ops that have very few bails across the existing code as a whole | 10:19 | |
brshift_I and blshift_I are probably more common anyway | |||
well, except maybe if you build tight native code in your perl6 | 10:20 | ||
i wonder how we can put the "are the arguments to this bigint op both smallbigints? if so, just do the peration quickly, otherwise call the c function" into the jit without implementing every bigint op twice: once for a smalling/bigint, once for an only bigint | 10:28 | ||
but that's probably for later | 10:30 | ||
jnthn: remember the thing about "smart numify + coerce n to i", how can i make sure the num register won't survive until the next deopt point without doing a scan for it? | 10:34 | ||
hmm. here i have a const_i64_16 that gets coerced to a num and then compared with the smrt_numify result | 10:36 | ||
but the const is just "-1", so it could just as well have been an unbox int thingie (if that's supported by the object we're trying to numify) | 10:37 | ||
oh | 10:40 | ||
actually | |||
i can use the dead code elimination to my advantage | 10:41 | ||
if i think only the int will be used, i can make the smrt_numify unbox an int and create the num with a coerce_in and if the num isn't used at all, the coerce will just be killed | |||
but i don't know when to prefer the int and when to prefer the num in the "general" case (as in: the object can unbox an int or a num) | 10:42 | ||
10:45
kjs_ joined
10:51
FROGGS[mobile] joined
|
|||
jnthn | timotimo: The other way is to look at usages | 11:11 | |
If it's 1, you know you're looking at the only usage :) | |||
(that is, that the coerce is the sole consumer of the smrt_numify result) | 11:12 | ||
11:18
oetiker joined
|
|||
dalek | arVM: 4a86098 | Carlin++ | src/ (4 files): add wrapper functions to panic if allocation fails |
11:27 | |
arVM: 176cec9 | Carlin++ | / (81 files): replace malloc with MVM_malloc |
|||
arVM: 3819ce2 | Carlin++ | / (68 files): replace free with MVM_free |
|||
arVM: 9e95260 | Carlin++ | src/ (28 files): replace realloc with MVM_realloc |
|||
carlin | \o/ yay | 11:40 | |
sergot | carlin++ | 11:53 | |
carlin | Stage parse : Memory allocation failed; could not allocate 524288 bytes | 12:18 | |
carlin sniffs | |||
it's beutiful | |||
FROGGS[mobile] | *g* | 12:34 | |
carlin++ | |||
moritz | you don't have 524k RAM on your box? :-) | 12:36 | |
(just kidding, of course) | |||
12:46
FROGGS[mobile] joined
13:10
odc` joined
|
|||
jnthn | I think the first box I programmed might not actually have had that much :P | 13:38 | |
How times change... | |||
carlin++ for the patches :) | |||
timotimo | i'd also like to have a way to turn a const_n into a const_i if it's sensible, but that seems much more peepholey than what we're doing so far | 13:56 | |
to be fair, we're already spending almost 0% of time on optimization/specialization in many cases :P | |||
jnthn | On startup, though, we spend rather longer than that... | 13:57 | |
timotimo | hm, right | ||
jnthn | I'm pondering some threshold tweaks. | ||
carlin | jnthn: any chance you could look at my other 2 PRs? No hurry though | 14:00 | |
jnthn | Ah, I thought 132 had an issue when I looked yesterday, but now I see I misread and the ascii.c issue was actually corrected in this version. | 14:02 | |
dalek | arVM: 3e276ba | Carlin++ | src/core/frame.c: flag is sometimes set to -1 so needs to be signed |
||
MoarVM: 1cf18d2 | Carlin++ | src/core/bytecode.c: | |||
MoarVM: unsigned int offset can never be less than 0 | |||
jnthn | sorry, dalek | 14:03 | |
Anyway, that's one more down | |||
diakopter | poor, poor dalek | ||
14:03
dalek joined
|
|||
jnthn | Hm. Is it really sane to expose SIGSEGV as hookable? :) | 14:05 | |
nwc10 | IIRC it's undefined behaviour for a program to continue after a SEGV | 14:06 | |
and a couple of the others | |||
jnthn | Well, if you continue then you really better have done something about the situation.... :) | ||
I'm quite certain userland code ain't in such a position. | 14:07 | ||
timotimo | aye. but what we do when you tap a signal is to put that into a queue or something for another thread to handle it | ||
so it'll basically immediately continue before the userland code has a chance to run | |||
jnthn | Yes, that seems like an exceptionally crazy thing to do for SIGSEGV :) | ||
SIGBUS is probably similar | |||
nwc10: ooc, what does Perl 5 do in terms of signals you can install handlers for? | 14:08 | ||
nwc10 | I can't remember | ||
jnthn | ok :) | ||
nwc10 | I believe that you can install handler for all of them | ||
carlin | perl -e "\$SIG{SEGV} = sub { die 'foo' }; for (;;) {}" | ||
nwc10 | no-one said that it's sane | ||
carlin | kill -SEGV 8545 | 14:09 | |
foo at -e line 1 | |||
timotimo | sending a SEGV manually is cheating :P | ||
jnthn | o.O :) | ||
timotimo | also, in a signal handler, isn't the stuff you're allowed to do very, very, very limited? | ||
carlin | so I should remove the ones we can't realistically deal with? SEGV, BUS, KILL, STKFLT | 14:25 | |
timotimo | i'd say: allow users to shoot their own foot | 14:30 | |
jnthn | m: say 10955 - 4848 | 14:33 | |
camelia | rakudo-moar 41d7f7: OUTPUTĀ«6107ā¤Ā» | ||
jnthn | m: say (10955 - 4848) * 40 | ||
camelia | rakudo-moar 41d7f7: OUTPUTĀ«244280ā¤Ā» | ||
timotimo | i see numbers ... do i have a reason to cheer? :) | 14:34 | |
14:45
itz joined
14:58
itz_ joined
15:03
itz joined
15:48
itz_ joined
15:53
itz joined
16:05
hoelzro_ joined
16:06
[Coke]_ joined,
Juerd_ joined
16:09
camelia joined
|
|||
avuserow | timotimo: so far, adding --profile-compile is "only" using 11GB of memory or so | 17:30 | |
timotimo | oh! | 17:31 | |
avuserow | been running for 13 minutes of now, though | 17:32 | |
17:34
zakharyas joined
|
|||
avuserow | oh, I may not have allocated enough disk space for this. silly installer, allocating 40GB of swap space by default. | 17:39 | |
if not, I'll give it more disk space and re-run | |||
17:44
cognome joined
17:49
kjs_ joined
17:56
itz joined
19:00
itz joined
|
|||
moritz | spin.atomicobject.com/2014/09/03/vi...lgorithms/ might be of idle interest | 19:06 | |
nine | moritz: nice! | 19:14 | |
timotimo | i may hack this to make it place the addresses along a hilbert curve to get rid of the "line breaks" | 19:21 | |
19:23
zakharyas joined
19:28
itz_ joined
19:35
itz joined
|
|||
avuserow | timotimo: this is still running O.o | 20:11 | |
I've now seen it use as much as 21GB. It seems to fluctuate a lot. | |||
timotimo | :D | ||
i told you :) | |||
avuserow | still no idea if it'll have enough disk space to write out the data :( | 20:12 | |
timotimo | right ;( | 20:16 | |
and then it'll be quite interesting to see if any browser whatsoever will be able to render that data out ... | |||
avuserow | yeah, might not even be feasible to load the entire page into memory on many machines, much less do any javascript stuff | 20:18 | |
vendethiel | b-but I thought angular was web scale :-) | ||
timotimo | yeah, but this is already Big Data | ||
avuserow | it'll still be interesting to see how large it is, and maybe some information can be gathered using a streaming json parser or something... | 20:19 | |
or at least ideas on where to cut things down | |||
timotimo | aye. | 20:20 | |
i briefly glanced at the code that generates the data | |||
it does have to walk a tree to sum up the times, so i'm not quite sure how to cut the call graphs down to size ... | |||
20:46
colomon joined
20:47
Ven joined
21:44
colomon joined
|