01:08 FROGGS_ joined 02:05 Util joined 02:17 ventica joined 04:02 ventica_desktop joined 04:25 xiaomiao joined 05:34 cognome joined 06:01 cognome joined 06:28 woolfy joined 07:22 lizmat joined, cognominal joined 07:37 woolfy left 07:39 FROGGS[mobile] joined
FROGGS_ jnthn: it must be this: 08:15
==13374== 4,646,152 bytes in 112,982 blocks are still reachable in loss record 1,663 of 1,668
==13374== at 0x4C2A2DB: malloc (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
==13374== by 0x4F8590C: deserialize (MVMArray.c:1098)
==13374== by 0x4F9FE92: MVM_serialization_deserialize (serialization.c:1987)
though, that is b2e3884
sergot hi o/ 08:38
08:52 Ven joined
jnthn FROGGS_: I don't think so; that's just deserializing things at startup...but the leak grows over time. 08:55
FROGGS_ ohh, I am actually still looking at the old run 09:12
hi sergot
hi jnthn :o)
hmmmm 09:15
jnthn: look at this: paste.scsys.co.uk/409702
ohh 09:16
perl6-m -e ':3("111") while 1'
extend/trunc NYI
:(
that explains the non leakness
with backtrace: paste.scsys.co.uk/409703 09:17
what is happening here?
jnthn FROGGS_: I dunno, maybe you updated Moar to get extop changes, but didn't update Rakudo also? 09:28
So now it reads bytecode wrong...
FROGGS_ jnthn: correct 09:29
will update
09:39 tgt joined 10:43 Ven joined 11:01 Ven joined
FROGGS_ jnthn: must be this then: 11:07
==16116== 40,729,249 (38,335,200 direct, 2,394,049 indirect) bytes in 1,197,975 blocks are definitely lost in loss record 1,656 of 1,656
==16116== at 0x4C2A2DB: malloc (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
==16116== by 0x4F49AE0: MVM_args_proc_to_callsite (args.c:68)
==16116== by 0x4F49B89: MVM_args_use_capture (args.c:92)
11:55 Ven joined
FROGGS_ jnthn: is that a good approach? gist.github.com/FROGGS/4c459d3daea186e3a5ce 13:06
I'm in doubt
14:22 Ven joined 14:44 zakharyas joined
carlin is this the right way to fix the *BSD rand() problem? gist.github.com/carbin/8d35cebb83a7f92fd1ed 14:53
jnthn back 14:56
FROGGS_: Yeah, that looks like a serious loss... 14:57
uh, leak
dalek arVM/esc: fb4a6cb | jnthn++ | / (4 files):
Annotate ops with escape info and store it.

Product of escape analysis research/planning hackathon with masak++. Only a handful of ops annotated so far.
15:03
jnthn carlin: Provided all those platforms do indeed have arc4random, probably works. Though may want to make it MP_GEN_RANDOM as a name, just to descrease chance of collisions... 15:11
carlin I've tested moar/rakudo on openbsd and freebsd, and tested that arc4random is on dragonflybsd and netbsd 15:12
jnthn FROGGS_: Don't think the approach you suggested will work, but one I just tried isn't any better... 15:55
timotimo ESCAPE_IRR is IRRELEVANT? 15:57
15:57 FROGGS[mobile] joined
jnthn yes 15:58
timotimo maybe i'll have someone (masak perhaps?) explain this to me and i'll help annotate ops ... 16:00
16:36 Ven joined 17:06 itz_ joined
dalek arVM: 815abcb | jnthn++ | src/ (4 files):
Allow extops to provide flags and spesh.

This means we can mark extops pure so dead code elimination can kill them, as well as provide a spesh function for an extop.
17:31
arVM: 9e90ac1 | jnthn++ | src/spesh/optimize.c:
Don't keep guards just because of usage analysis.

This should allow a few more unrequired guards to be thrown out.
jnthn .tell brrt I did various extop things that should make things a bit better from the JIT side. 17:33
Including being able to set the invokey flag, or at least making it easily possible to implement that feature. 17:34
timotimo jnthn: how about allowing the user to register extra fact discovery routines for extops? 17:44
p6box_* for example could probably benefit from setting the known type to Int, Num, Str 17:45
p6parcel as well, i'd say, as well as p6list
actually, a whole lot of them could benefit from that... if not all 17:47
jnthn timotimo: Yeah, I suspect so. 17:53
timotimo: Interested in adding it at al? Might not be too hard following the patches Idid... 17:54
timotimo can do
currently fighting my little ear infection
jnthn ugh :( 17:55
Sounds less awesome than my little pony
timotimo yup
the pain levels ebb and tide, but it's a strange feeling being practically deaf in one ear 17:57
huh, we have to do a linear scan through the extop records? 18:03
jnthn It'll be a small list 18:04
timotimo OK
jnthn So not worth making a full-on hash thingy for it
timotimo it'll probably all land in the cache as one blob anyway
jnthn *nod* 18:05
dalek arVM: 603b50f | (Timo Paulssen)++ | src/ (3 files):
allow extops to put facts into the spesh fact database.
18:14
timotimo oh, actually ... i messed that up 18:19
should have compiled before pushing i s'pose
ah, here's what i missed 18:24
dalek arVM: 8ef4455 | (Timo Paulssen)++ | src/ (4 files):
allow extops to put facts into the spesh fact database.
18:25
timotimo *force pushed* ... 18:26
jnthn That's almost always a bad idea :P 18:30
Now the commit that NQP_REVISION points to doesn't exist, for example...
FROGGS[mobile] MOAR_REV points to the right thang 18:33
18:36 zakharyas joined
timotimo jnthn: i force pushed to *all three repositories* :P 18:40
i'm extra bad
FROGGS[mobile] uhh
:p
timotimo jnthn: is the result of p6parcel deconted or is it a container? 18:43
i think it's not, but what do i know :P
p6scalarfromdesc should set known type to Scalar. what else? 18:49
should it also - if the scalar descriptor is a known_value - set the deconted value to be known and set the known deconted value to the descriptor's the_default? 18:51
jnthn I don't think so. 18:54
p6parcel should be deconted
coming out of the op, at least
timotimo good
you don't think so about what exactly?
jnthn Everything you said about p6scalarfromdesc except the known type bit.
timotimo OK 18:55
now i have some fact discovery thingies in place 18:57
i should probably spectest before i push
oh, i forgot to register the functions %)
i made discovery functions for known_type for p6box_[ins], p6listiter, p6scalarfromdesc, and p6reprname 19:00
sound about right?
19:03 raiph joined
jnthn Soudns reasonable 19:05
timotimo the only fails in spectests are lock.rakudo.moar and t/spec/integration/99problems-51-to-60.t
there's a segfault in there
interestingly, it segfaults in MVM_gc_root_add_frame_roots_to_worklist 19:06
i don't have debug symbols right now; does that happen on master, too?
oh well, SPESH_DISABLE=1 makes the segfault go a way 19:07
should i set the known type of p6bool's return value to STABLE(True).WHAT? 19:09
TimToady I assume you mean MVM_SPESH_DISABLE 19:13
timotimo yes
TimToady otherwise it would be quite interesting if that "fixed" the problem 19:14
timotimo surely :) 19:15
TimToady nutrition & 19:16
timotimo well, i put a printf into all my discovery functions and it doesn't seem like they get run at all 19:18
aaah, here's what i've been missing ... 19:20
dalek arVM: 4ae0734 | (Timo Paulssen)++ | src/core/ext.c:
forgot to resolve discovery function in extop records
19:21
timotimo since my code didn't even really run before and it's only a single test file that segfaults, it'll probably be fine to just push 19:34
after all, we're weeks away from the next release
jnthn timotimo: The other missing facts thingy you may like to look at is in Moar itself,with the bigint ops 19:39
I the ++ microbenchmarks we can eliminate at least one useless decont with that.
19:49 colomon joined
carlin the good news is the the segv with 51-to-60.t was known (RT 122297)... the bad news is it was apparently fixed a couple of days ago and [Coke] unfudged the test 19:56
timotimo oh well :(
jnthn: which ops need what facting? 19:57
jnthn add_I, sub_I, etc etc 19:58
timotimo let's see ...
jnthn They always come with the result type 19:59
timotimo and the result is never a container?
i.e. you can't pass anything as the result type that'd cause a container to be the result? 20:00
in that case i guess i can re-use the create_facts function 20:01
jnthn Correct
Yeah, create_facts mstm
timotimo that'll take care of container/not container
well, now i get a segfault in the core setting compilation 20:04
jnthn I can't think of a situation where having a type that was both a scalar container AND a bigint container makes sense :) 20:05
timotimo ah, i was trying to get the 4th argument even for neg_I and abs_I 20:06
dalek arVM: 89658cb | (Timo Paulssen)++ | src/spesh/facts.c:
know type and containerness information for bigint ops
20:08
timotimo this ought to be correct 20:09
i suppose it's not a gigantic win yet; it would be if we could *ahem* remove redundant set instructions :)
jnthn It's to darn hot in here for me to contemplate debugging that one. 20:10
timotimo aye, you should do something simple instead, like escape analysis :D 20:12
20:12 Ven joined
jnthn Well, currently looking at handler table merging :) 20:12
timotimo ah, good
jnthn BOOM SEGV 20:13
timotimo that's what keeps spesh from handling almost all perl6 frames, eh?
jnthn Hm
Well, lexotic will still be an issue in those I guess 20:14
timotimo that's whenever we throw exceptions or return or do stuff like that?
jnthn return in particular
timotimo that'd happen quite frequently, i suppose 20:15
we do have a little optimization in there that removes redundant returns at the end of functions, thanks to froggs
jnthn What we do inline so far is due to an optimization in Perl6::Optimizer that tosses lexotic entirely...
ah yay, latest version of my patch builds Rakudo and NQP, and passes sanity tests in both 20:16
Should spectest this I guess :)
aww, a fail 20:17
oh wait, it's Mouq++'s recent push
(as in, I don't have it)
timotimo oh, that sounds lovely! 20:19
jnthn I thought one a case I didn't handle too...
timotimo as long as we can safely bail in that one case it should be fine, no? 20:20
jnthn Oh, I handled it.
jnthn waits on the next spectest run 20:24
timotimo hum. 20:28
well, we have a bogus pointer in a register
in a frame that has been spesh'd
oh great! 20:30
when i'm attached to the process with gdb, it runs fine
jnthn :/
carlin gdb is really good at fixing bugs, everyone should just run everything inside it 20:31
timotimo aye 20:32
dalek arVM: 54a4961 | jnthn++ | src/spesh/codegen.c:
Use handlers from spesh graph at code-gen time.
20:34
arVM: 028d7a7 | jnthn++ | src/spesh/inline.c:
Support inlining of frames with handlers.
timotimo jnthn: should i look into running a new benchmark with this?
jnthn Not sure if it'll make a hgue difference tbh 20:35
Well, maybe all the chagnes we've done together will
timotimo hm, so inlining these frames won't do much good?
jnthn Well, it will, but not sure how many more it gets us without the lexotic stuff
timotimo OK 20:36
got a clue how much work that is going to be?
jnthn Lemme remember how lexotic works these days...
timotimo i never knew :)
Ven "gdb is really good at fixing bugs, everyone should just run everything inside it" <- quote of the year :) 20:40
jnthn OK, I really dunno why lexotic inlines won't work 20:43
I'm probably missing something
jnthn takes :noinline off them to find out :)
timotimo %)
:noinline means "if we see this in a frame, don't dare inline it", right?
jnthn Right 20:44
Oh...
Just remembered that I re-did lexotic a bit. 20:45
So maybe that makes it OK 20:47
timotimo that's why we can now inline lexotic safely?
jnthn Yeah, that's what I@m wondering. 20:48
Darn, not so simple 20:50
NQP build and worked out OK
But in Rakudo's CORE.setting: Stage parse : Label with no handler passed to newlexotic
timotimo well, d'oh 20:51
jnthn wtf, 453 basic blocks... 20:53
timotimo a long cascade of ifs? :) 20:55
jnthn No 20:58
a complicated token
or rule
oh... 20:59
I see
timotimo i'm still wondering if we're missing anything special that'd make our parsing faster thanks to spesh 21:00
special/specific
21:21 Ven joined
timotimo just run a nqp-moar vs nqp-moar-jit and it doesn't seem to give big differences :( 21:36
charrange 556/s 219094/s 21:37
393.8x 1.0x
charrange_ignorecase 22890104/s 13288/s
1.0x 1722.6x
what now? o_O
japhb or japhb_, are you here? 21:38
jnthn Yeah, I don't think the OSR kicks in really on NQP, though
As brrt noted a few days back 21:39
timotimo we don't emit osrpoint instructions there yet?
jnthn We do
But the mainline is varargs or something
Which upsets OSR
timotimo oh? damn.
hm, actually, no need to bother japhb about this i guess 21:41
i wonder what the F is up with my measurements of the charrange benchs
dalek arVM: 6f20346 | jnthn++ | tools/update_ops.p6:
Fix missing MVM_PUBLIC in update_ops code-gen.
21:44
arVM: 2ce6988 | jnthn++ | src/ (5 files):
Enable inlining of lexotic.
timotimo should i run benchmarks with a rakudo after the inlining of lexotics patch? 21:47
jnthn Can try it :) 21:48
Also with what I pushed to Rakudo itself just now
timotimo will you bump the revision? 21:49
that'll also make facts discovery for rakudo's extops actuall yhappen
nqp/2014.07 seems to win score-wise against the current nqp with or without jit :\ 21:50
jnthn: if the proto can't .soft, shouldn't that be taken as the same as .soft == 0? 21:51
jnthn It pretty much always can, iirc 21:55
It's just guarding agaisnt a crash
timotimo OK
dalek arVM/esc: 76a6bfa | masak++ | tools/update_ops.p6:
[tools/update_ups.p6] factor out some repetition into sub
21:59
arVM/esc: 03ac282 | masak++ | tools/update_ops.p6:
[tools/update_ops.p6] introduce grammar for ops
arVM/esc: 439efca | masak++ | tools/update_ops.p6:
[tools/update_ops.p6] integrate two grammars
jnthn Nice :) 22:02
masak++
masak well, it's a start.
jnthn Fixes the spaces in adverbs thing, at least :) 22:04
masak hm, not quite yet :)
working on that one now ;)
jnthn oh... :)
jnthn bbi10 22:05
dalek arVM/esc: b436429 | masak++ | tools/update_ops.p6:
[tools/update_ops.p6] integrate :esc parsing into main parser

This kills off another re-parse of the contents of :esc(...) and, as a side bonus, allows us to use spaces between the arguments.
22:21
arVM/esc: 96ec3fe | masak++ | src/core/oplist:
[src/core/oplist] add some spaces

The parser in tools/update_ops.p6 can handle it now.
arVM/esc: 6a4d07a | masak++ | tools/update_ops.p6:
[tools/update_ups.p6] remove empty line
22:24
jnthn update_ups? :) 22:30
masak uups.
I made that typo a number of times, and caught it in time. apparently not this time :) 22:31
22:31 raiph joined
timotimo i wonder if we can optimize the random functions in rakudo by knowing when we don't have to do bigint at all ... 23:03
but maybe we already do that properly?
jnthn Do we know they're a hot spot, or slow? 23:04
timotimo we do have a rand benchmark 23:05
Ć­'ll see if it's slow or fast soon :)
it's a bit annoying that the speed benefits are hiding behind these silly reasons, so that we can't get to measure them properly with our benchmarks 23:07
like the slurpy args for the mainline
how can the mainline even have arguments; does it have an implicit *@ARGV signature? 23:08
jnthn I think it's that, yeah
In Rakudo we've got it arranged a bit differently so that doesn't happen.
timotimo do we have a solution coming up soon-ish?
jnthn I can probably figure something out without too much trouble. 23:09
timotimo would be neat 23:12
performance scores look quite good for current rakudo vs the 2 previous releases 23:14
jnthn ooh
jnthn awiats les graphicales 23:15
timotimo oh
i thought i'd get a rakudo master in first
jnthn Oh...I thought "current rakudo" meant "master" :) 23:16
timotimo ah
current rakudo release* :)
jnthn ah, ok
timotimo jnthn: t.h8.lv/p6bench/2014-07-27-long-time-rakudo.html 23:49
jnthn Hm. Some minor improvements. 23:55
Curious. We got worse at visit_2d_indices_while_native 23:56
In every relesae since 2014.06
timotimo wtf happened with the charrange benchmarks %) 23:58
jnthn no idea
something's up there
timotimo "up" is the right term 23:59