Perl 6 - the future is here, just unevenly distributed

IRC log for #moarvm, 2014-06-26

| Channels | #moarvm index | Today | | Search | Google Search | Plain-Text | summary

All times shown according to UTC.

Time Nick Message
00:54 jnap1 joined #moarvm
00:54 odc joined #moarvm
01:11 odc joined #moarvm
01:17 FROGGS_ joined #moarvm
02:25 xiaomiao joined #moarvm
03:25 vendethiel joined #moarvm
03:35 btyler joined #moarvm
05:38 vendethiel joined #moarvm
05:53 woolfy joined #moarvm
07:09 FROGGS joined #moarvm
07:09 zakharyas joined #moarvm
07:57 brrt joined #moarvm
07:58 brrt hi #moarvm :-)
07:58 FROGGS hi brrt
08:07 brrt hi FROGGS
08:11 brrt i figured out what i did wrong wrt to string indexing
08:18 brrt when in doubt, draw pointer diagrams :-)
08:21 brrt hmm..... i'm wondering if a generalized 'access node' is another case of overzealous generalisation from my part
08:24 brrt kind of looks like the latter
08:30 brrt oh, .tell jnthn that i can get (from dynasm) all the offsets of the basic blocks
08:31 brrt so that should help dealing with invocations
08:41 brrt i also wonder if it is worth it to keep CU arround
08:42 brrt long story short, i may need to up the complexity of the jit graph
08:43 brrt (i still hope to extend the complexity of the jit graph to one day do full codegen)
09:21 jnthn morning o/
09:21 jnthn Turns out flight + cold = earache :/
09:21 nwc10 but your flight flew, and at roughly the right time?
09:21 jnthn Yeah, though it coulda been an hour late and I'd still make my connection.
09:22 jnthn But it was early.
09:22 nwc10 good
09:22 jnthn So, even more time here in Stockholm airport.
09:22 nwc10 ours was 2 hours late yesterday. But we were happy that it flew at all
09:22 jnthn ugh
09:22 jnthn but yeah.
09:22 nwc10 yes, but the ETA on info kept changing, and one round of "please wait" lasted for 15 minutes on the departure board
09:23 nwc10 ultimately problem seemed to be that it's all very well having a plane, but you need a crew with enough hours remaining to fly it
09:23 jnthn ah, yes.
09:23 nwc10 pleasing discovery - at one point when I looked at the departure board, of the flights, 18 were easyJet, 16 were norwegian.com
09:24 nwc10 I hope Ryanair and easyJet are worried.
09:24 jnthn Norwegian are really quite good compared to those two. :)
09:24 nwc10 the vikings are coming.
09:24 nwc10 I've not yet had a chance to fly with them. I'm hoping that their route network expands in directions that are useful to me
09:25 jnthn As a temporary viking, I find their current route network quite useful :)
09:27 brrt morning jnthn
09:30 jnthn o/ brrt
09:30 jnthn What jiteth we today? :)
09:30 brrt wval
09:30 nwc10 jnthn: because I was on the wrong end of massive amounts of bufferbloat and other stupid, I left t/spec/S17-promise/allof.t
09:30 brrt or, at least, we jitteth that this morning :-)
09:30 nwc10 running under valgrind, in a loop, until it hit a problem
09:31 nwc10 24 hours later it still has not :-(
09:31 nwc10 [OK, there's a sleep 30 in the loop too]
09:33 jnthn Aww
09:33 jnthn But it sometimes fails with ASAN?
09:33 jnthn Curious...
09:34 dalek MoarVM/moar-jit: 11899f4 | (Bart Wiegmans)++ | src/jit/emit_x64.dasc:
09:34 dalek MoarVM/moar-jit: Lookup strings at runtime if necessary
09:34 dalek MoarVM/moar-jit: review: https://github.com/MoarVM/MoarVM/commit/11899f43bb
09:34 dalek MoarVM/moar-jit: a12a375 | (Bart Wiegmans)++ | / (8 files):
09:34 dalek MoarVM/moar-jit: Added support for wval, fix bug in sp_p6oget_*
09:34 dalek MoarVM/moar-jit: review: https://github.com/MoarVM/MoarVM/commit/a12a3753f9
09:34 brrt i was busy adding support for a 'deep access' then it hit me that many of these are condtiional
09:35 brrt it also occurs to me that i might want different interpreter variables into scope at different times
09:35 jnthn +    if (!(obj->header.flags & MVM_CF_SECOND_GEN) || 1)
09:35 jnthn um... :)
09:37 brrt i've removed that
09:37 brrt (In the next commit :-))
09:37 brrt i had to hit that path to test it, no? :-)
09:37 jnthn yeah, just saw that :)
09:39 * jnthn suspects the write barrier might want factoring out, fwiw
09:39 jnthn (as in, maybe use a dynasm macro for it)
09:40 jnthn Also that wval can have the same gen2 trick done as the string. :)
09:40 jnthn brrt++ # progress
09:42 brrt oh, thats true (the wval thing)
09:43 brrt i'm not sure how to insert code into a dynasm macro
09:43 nwc10 jnthn: seemed to be 100% reliable SEGV with ASAN
09:43 jnthn brrt: C code?
09:44 jnthn I think ||
09:44 brrt dynasm code, i.e. the pushes of TMP1 and TMP2
09:44 jnthn no, I meant a dynasm macro
09:44 jnthn Not a C one
09:45 brrt basically, the push TMP1, pop TMP2; is only necessary in the context where TMP1, TMP2 mean anything
09:45 brrt so ideally i'd 'insert that' into the macro
09:45 brrt but i don't know if that is possible
09:45 jnthn ah, I see...
09:45 jnthn Yeah, that's trickier.
09:52 brrt another option is to simple create a macro check_wb that returns a 0 or 1 to a specified register
09:53 brrt and then do the jump part in between
09:53 brrt (or perhaps directly to flags)
09:54 brrt and.. i really should find some way to number-or-name jit code segments
09:54 brrt because i'm already creating many different segments and i've only got the chance to inspect the latest
09:55 brrt btw, am i wrong in supposing that getwhere is (on asm level) just set
09:56 brrt i.e. copying a pointer to an integer field, the CPU doesn't make a difference :-)
09:56 jnthn Sounds reasonable :)
09:56 jnthn Right
09:57 timotimo brrt: are you already targeting any specific piece of nqp code? or just following your instincts?
09:58 brrt timotimo, in fact i'm running foo.nqp, and looking at the log where it bails
09:58 brrt jnthn helpfully suggested to make a script that counts the bailout lines
09:58 timotimo aye
09:59 brrt and i will, it's just that working on the asm level of specific ops is rather addicting
09:59 timotimo :)
09:59 timotimo so when you're running foo.nqp, you also get lots of attempts to jit stuff from inside the nqp compiler itself? :)
10:00 brrt and eqaddr is identical to eq_i afaik
10:00 brrt yes
10:00 timotimo when you get the data, i'd be interested to see it :)
10:01 brrt on the bailout points?
10:01 timotimo yes
10:01 brrt ok, if there is n>1 people of interest in it, it becomes higher priority :-)
10:02 timotimo it should also tell us, what callsites/methods/subs it's looking to jit, right?
10:02 brrt it works on the op level
10:02 timotimo then it could also say "bailed out at instruction N of M" so we can have something like a percentage of implementation
10:02 brrt and i haven't figured out how to translate between speshgraph and high-level-subs correctly yet
10:02 timotimo hold on, i'll have a look at that
10:02 brrt that... would be ideal, yes
10:02 timotimo append_str(tc, &ds, g->sf->body.name);
10:03 timotimo append_str(tc, &ds, g->sf->body.cuuid);
10:03 timotimo these pieces would be what you'd want to output
10:10 dalek MoarVM/osr: 154a2dc | jonathan++ | / (8 files):
10:10 dalek MoarVM/osr: Add osrpoint opcode for hot loop detection.
10:10 dalek MoarVM/osr: review: https://github.com/MoarVM/MoarVM/commit/154a2dc9e4
10:10 dalek MoarVM/osr: 5bbad46 | jonathan++ | / (5 files):
10:10 dalek MoarVM/osr: Trigger OSR; just stub the procedure for now.
10:10 dalek MoarVM/osr: review: https://github.com/MoarVM/MoarVM/commit/5bbad463df
10:11 jnthn bbl, or maybe at home...depends how long security etc takes.
10:11 jnthn &
10:11 timotimo good luck, jnthn :)
10:23 FROGGS joined #moarvm
10:26 carlin joined #moarvm
10:47 brrt ok, that will help
10:47 brrt timotimo++ :-)
11:17 dalek MoarVM/osr: 42d571b | jonathan++ | src/spesh/osr.c:
11:17 dalek MoarVM/osr: Start sketching out OSR handling.
11:17 dalek MoarVM/osr: review: https://github.com/MoarVM/MoarVM/commit/42d571bd74
12:20 woolfy joined #moarvm
12:20 lizmat joined #moarvm
12:38 brrt joined #moarvm
12:48 jnap joined #moarvm
13:14 LLamaRider joined #moarvm
13:27 brrt hmm, i think getlex together with MVM_frame_vivify_lexical are being weird
13:35 brrt that is to say, being weird wrt to inlining
13:40 timotimo we can already jit getlex?
13:41 brrt no, not yet
13:41 brrt i'm looking at getlex right now
13:41 brrt and i'm seeing weird-ish behavior in vivication
13:41 brrt i.e.
13:42 timotimo hm, ok
13:42 timotimo getlex will probably make a whole class of things jitable :)
13:42 brrt getlex checks the spesh_cands' lexical_types array for finding out if the lexical ought to be an object
13:42 * brrt thinks invocation is really the 'tricky bit'  :-)
13:43 timotimo we'll be happiest with inlined things rather than invoked things, though :)
13:43 brrt true enough
13:43 brrt but at any rate, it only checks that array if it exists, otherwise it uses the static frames lexical type array
13:45 brrt anyway, i thought i had the luminous idea of moving that check up to frame invocation time, i.e. add a field 'effective lexical types'
13:45 brrt however.... MVM_frame_vivify_lexical only ever looks at the static frame lexical type array
13:45 brrt (is this making any sense?)
13:46 brrt so why bother looking at the spesh cand's lexical type array anyway, if it isn't used?
13:46 brrt is this a speshbug?
13:46 brrt what is more
13:46 timotimo i didn't look deeply at lexicals at all yet
13:46 brrt hmm
13:47 brrt can i create a 'not an issue but it seems questionable' thing at github?]
13:47 brrt or better mail jnthn directly
13:47 timotimo issues are for everything, really
13:47 brrt ok, i'll put it up there then
13:47 brrt :-)
13:47 brrt thanks
13:48 timotimo the only occasion where i looked at lexicals was when i was trying to build the "turn lexicals into locals" optimization
13:48 timotimo i succeeded for nqp (after lots of help from jnthn) and ended up having to let jnthn do/finish it for rakudo itself
13:50 brrt if we could do that for all possible code i'd be so happy :-)
13:51 timotimo impossible, sadly
13:51 timotimo but we can be good at lexicals, too
13:52 btyler joined #moarvm
13:59 brrt true
13:59 brrt but we can be better yet
14:01 * jnthn home
14:01 jnthn brrt: Feel free to create an issue ont he questionable code; sounds like something I should look at
14:01 nwc10 jnthn: did past jnthn remember future jnthn, and re-prime the beer fridge?
14:01 * brrt is doing so
14:01 brrt :-)
14:02 jnthn nwc10: I *think* so...
14:02 brrt jnthn - if you could just look-and-advice https://github.com/MoarVM/MoarVM/issues/107
14:02 brrt i think i know how to fix it (if you agree it's weird / broken)
14:10 jnthn nwc10: Confirmed. The fridge can supply a choice of 4 different styles of beer this evening. :)
14:10 jnthn However, I'm full of cold, so should probably go easy on it...
14:11 jnthn Can't believe I went all winter/spring without really having a cold, then get one in summer. :/
14:24 * brrt wishes jnthn speedy recovery :-)
14:24 * timotimo too
14:25 brrt also, don't be too surprised. there are over 90 different cold viruses, and infection with any one of them has more to do with exposure to them than with heat or cold
14:25 brrt i.e. regular travel is a sure way to acquire a new one :-)
14:26 jnthn Yeah
14:26 * jnthn hopes next week's potential travel doesn't actually happen
14:29 brrt where does your potential travel go to?
14:36 jnthn Norway
14:38 jnthn (Which is a nice place to go, just wouldn't mind being at home more than 2 days. :))
14:40 jnthn brrt: I don't immediately see a problem in MVM_frame_vivify_lexical
14:40 jnthn brrt: It does this:
14:40 jnthn if (idx < f->static_info->body.num_lexicals) {
14:40 jnthn Which sees if it's a non-inlined lexical
14:40 brrt uhuh
14:41 brrt ok, what's the meaning of the spesh_cand->lexical_type array then :-)
14:41 jnthn If it's an inlined one, then the "else if (f->spesh_cand) {" comes into play
14:41 jnthn Well, we could find the *flags* from the spesh_cand->lexical_type array.
14:41 jnthn uh, wait
14:41 jnthn We can't
14:41 jnthn We're not after the typehere
14:41 jnthn *type
14:41 jnthn We already know it's an object
14:42 jnthn We're after the static environment flags
14:42 jnthn flags      = f->static_info->body.static_env_flags;
14:42 jnthn static_env = f->static_info->body.static_env;
14:42 jnthn The flags indicate if we vivify an object and if it's a state var.
14:42 jnthn The static_env provides the thing to vivify from.
14:42 brrt ok, thats right
14:43 brrt so this is all ok? :_)
14:43 brrt :-)
14:43 jnthn We could in theory compute merged flags and static env.
14:43 jnthn But I didn't do that in the end
14:43 jnthn One thing that is worth noting is that the flags and static env never actually change
14:43 jnthn Meaning from a JIT point of view you could actually resolve all of this statically.
14:44 brrt oh... yes
14:44 brrt hmmmm
14:44 * brrt makes a note of that
14:44 jnthn Though arguably you could ask me to make a spesh op and do the identification of this opt at that point :)
14:45 brrt wait, i'm looking at how the lexical type array is constructed
14:45 brrt and more importantly
14:45 brrt if i have access to that at jit-level
14:46 brrt because that'd mean moving the check to jit level and removing it from the emitted level
14:48 jnthn Yes, you can get at it.
14:48 brrt i do indeed
14:49 brrt ok, great
14:49 brrt that simplifies things
14:53 brrt oh, did you know that (using dynasm / asm) you can use a interupt for setting a breakpoint?
14:54 jnthn No? :)
14:54 jnthn Sounds useful
14:55 brrt it is useful
14:55 brrt i didn't know either
14:56 brrt i used to add a idiv r9 or something to trigger a floating-point exception
14:56 brrt (which distinguishes it from a segfault)
14:56 brrt but not anymore
15:01 brrt what, a segfault that isn't in generated code
15:01 brrt what is the world coming to
15:02 jnthn broken code-gen, apparently :P
15:03 brrt hmmm
15:03 brrt is it usual for lexical_types to be 0
15:03 brrt ?
15:03 brrt oh... wait
15:03 brrt i see
15:03 brrt ahum
15:04 brrt wrong static frame
15:05 jnthn :)
15:11 brrt ok, no crash, but value isn't right either
15:28 woolfy left #moarvm
15:28 hoelzro if MoarVM is crashing on some weird piece of code, is it easy to dump a human-readable version of the currently executing frame's bytecode to assist in debugging?
15:29 FROGGS hoelzro: moar --dump
15:30 hoelzro thanks FROGGS
15:30 FROGGS for that you perhaps want to 'cat /path/to/perl6-m' to get the --libpath flags etc
15:32 lizmat joined #moarvm
15:36 hoelzro hmm
15:36 hoelzro well, I can try and look at the output later (I have to ask early, because no one's here when I'm actually working on stuff =/), but here's the buggy code in case someone knows what's wrong right away:
15:37 hoelzro https://gist.github.com/hoelzro/540f92e81823e5e89c8e
15:50 moritz hoelzro: [] is Array, not Array of Str
15:50 hoelzro hmm
15:50 hoelzro I see
15:50 moritz (avoid typed arrays)
15:50 * hoelzro tweaks and tries
15:51 hoelzro huh
15:52 hoelzro well, that solves that, I guess
15:52 hoelzro thanks moritz
15:52 brrt getlex works again :-)
16:03 dalek MoarVM/moar-jit: 97ff5e0 | (Bart Wiegmans)++ | / (5 files):
16:03 dalek MoarVM/moar-jit: Add getlex support. Object getlex isn't tested yet.
16:03 dalek MoarVM/moar-jit: review: https://github.com/MoarVM/MoarVM/commit/97ff5e0d9e
16:04 timotimo and how hard is bindlex now? :)
16:04 brrt not hard at all
16:04 brrt bindlex is much simpler
16:04 timotimo neato
16:04 brrt but i'm off for dinner
16:04 timotimo bon appetit
16:04 brrt bye!
17:00 lizmat joined #moarvm
17:02 dalek MoarVM/moar-jit: 0e0ea79 | (Bart Wiegmans)++ | / (5 files):
17:02 dalek MoarVM/moar-jit: Bindlex also works.
17:02 dalek MoarVM/moar-jit: review: https://github.com/MoarVM/MoarVM/commit/0e0ea798e1
17:26 carlin joined #moarvm
17:27 timotimo i'm kinda sad we need OSR for almost all the benchmarks in the perl6-bench suite
17:27 timotimo and the bigger benchmarks are probably "too big" for the jit as of yet
18:02 FROGGS joined #moarvm
18:03 FROGGS o/
18:05 FROGGS what was OSR again?
18:06 FROGGS ahh, On-Stack-Replacement
18:09 FROGGS http://stackoverflow.com/questions/9105505/differences-between-just-in-time-compilation-and-on-stack-replacement
18:09 FROGGS ( this link is better http://stackoverflow.com/a/9105846 )
18:47 FROGGS joined #moarvm
18:47 carlin joined #moarvm
18:47 lizmat joined #moarvm
18:47 btyler joined #moarvm
18:47 jnap joined #moarvm
18:47 vendethiel joined #moarvm
18:47 xiaomiao joined #moarvm
18:47 cognominal joined #moarvm
18:47 colomon joined #moarvm
18:47 woosley joined #moarvm
18:47 oetiker joined #moarvm
18:47 hoelzro joined #moarvm
18:47 dalek joined #moarvm
18:47 lue joined #moarvm
18:47 jnthn joined #moarvm
18:47 camelia joined #moarvm
18:47 rurban_ joined #moarvm
18:47 flussence joined #moarvm
18:47 harrow joined #moarvm
18:47 avar joined #moarvm
18:47 japhb_ joined #moarvm
18:47 tadzik joined #moarvm
18:47 japhb joined #moarvm
18:47 bcode joined #moarvm
18:47 Util joined #moarvm
18:47 ashleydev joined #moarvm
18:47 krunen joined #moarvm
18:47 daxim joined #moarvm
18:47 betterworld joined #moarvm
18:47 _sri joined #moarvm
18:47 synopsebot joined #moarvm
18:47 sergot joined #moarvm
18:47 masak joined #moarvm
18:47 cxreg joined #moarvm
18:47 nwc10 joined #moarvm
18:47 lee__ joined #moarvm
18:47 brother joined #moarvm
18:47 ingy joined #moarvm
18:47 ChanServ joined #moarvm
18:47 [Coke] joined #moarvm
18:47 BinGOs joined #moarvm
18:47 moritz joined #moarvm
18:48 [Coke] joined #moarvm
18:51 LLamaRid1r joined #moarvm
18:58 donaldh joined #moarvm
19:19 ggoebel111116 joined #moarvm
19:23 nebuchadnezzar joined #moarvm
20:05 brrt joined #moarvm
20:15 brrt timotimo: ain't nuttin's too big for jit in due course
20:16 jnthn .oO( must...not...make...your mom joke... )
20:18 brrt lol
20:20 FROGGS hehe
20:20 FROGGS that is where one can see that jnthn is damn young :o)
20:20 * FROGGS .oO( When I was your age Pluto was a planet! )
20:22 brrt when i was my age pluto was a planet!
20:23 * brrt is off again for a bit
20:39 dalek MoarVM/osr: e38be93 | jnthn++ | / (5 files):
20:39 dalek MoarVM/osr: Add sp_osrfinalize spesh op.
20:39 dalek MoarVM/osr:
20:39 dalek MoarVM/osr: Used to handle logging runs through the loop, and will trigger the
20:39 dalek MoarVM/osr: final optimization afterwards.
20:39 dalek MoarVM/osr: review: https://github.com/MoarVM/MoarVM/commit/e38be93509
20:39 dalek MoarVM/osr: 76958c3 | jnthn++ | src/ (5 files):
20:39 dalek MoarVM/osr: Convey "are we doing OSR" deeper into spesh.
20:39 dalek MoarVM/osr: review: https://github.com/MoarVM/MoarVM/commit/76958c3402
21:11 dalek MoarVM/osr: c4d4ce6 | jnthn++ | src/spesh/log.c:
21:11 dalek MoarVM/osr: Handle osrpoint in spesh logging setup.
21:11 dalek MoarVM/osr:
21:11 dalek MoarVM/osr: If we are doing OSR, turn it into sp_osrfinalize; otherwise, toss it.
21:11 dalek MoarVM/osr: review: https://github.com/MoarVM/MoarVM/commit/c4d4ce6987
21:11 dalek MoarVM/osr: af345ed | jnthn++ | src/ (6 files):
21:11 dalek MoarVM/osr: First pass at making OSR work.
21:11 dalek MoarVM/osr:
21:11 dalek MoarVM/osr: Handles the basic cases, though doesn't always work out yet, and does
21:11 dalek MoarVM/osr: not yet handle the inlining case.
21:11 dalek MoarVM/osr: review: https://github.com/MoarVM/MoarVM/commit/af345edbd8
21:28 jnthn Ugh...headache :/
21:28 jnthn Well, enough for today.
21:33 japhb_ Feel better soon, jnthn!
21:33 jnthn Hopefully.
21:33 jnthn At least it's nothing serious.
21:33 japhb_ Definitely.
21:34 japhb_ Do you have a second before sleep?
21:34 jnthn Sure
21:34 japhb_ Is there anything you'd like me to add or change about perl6-bench to help you with the MoarVM (or general Rakudo optimization) work?
21:35 japhb_ I'm doing things that I *assume* are useful, but ... it would be nice to have a few of your top wishlist items on my list for when I get hack time.
21:35 jnthn At this point, I'd mostly like to see better benchmark coverage.
21:35 jnthn For example, I'm told Rat performance is sucky, but there's no benchmarks exercising it.
21:35 japhb_ What areas are most important?
21:36 japhb_ Last hack day I was adding more minibenchmarks (the ones of 5-100 lines, rather than the micros, which are 1-4 lines)
21:36 japhb_ OK, Rat, I assume more string stuff.
21:36 jnthn Also, while we've made a lot of progress on various of the benchmarks, forest fire is still horribly slow in Rakudo.
21:36 jnthn I guess it's not an easy thing, but any microbenchmarks that can be extracted from it that might explain why would be great.
21:36 japhb_ I've only got the one parsing example (JSON).  Would you mind if I made one with your weather data code from your "What can you do now in Perl 6?" slides?
21:37 japhb_ OK, I'll see what I can do for that.
21:37 jnthn Parsing could be good, yes. Another one is just some simple regex matching ones.
21:37 jnthn Also, some basic file I/O ones.
21:38 japhb_ By "simple regex matching ones" you mean stuff like non-matching substrings in long strings, near-matches, multiple matches, that sort of thing?
21:38 jnthn Well, and just simple "blahblahblah42blahblah" ~~ /\d+/ style things.
21:39 japhb_ Yeah, gotcha.
21:40 japhb_ Any intuitions of things that might be especially both important and slow-prone?  (My gut is to really test things like '(' ~ ')' and % ',' and such)
21:41 japhb_ Can I use the weather data parser?
21:41 jnthn Well, backtracking is worth exercising a bit, for sure.
21:42 jnthn 'cus grammars with rules/tokens don't really do that
21:42 jnthn And a lot of what's driven optimizing the grammar engine has been parsing grammars.
21:43 japhb_ Does spesh ever try to re-optimize after de-optimizing?  Meaning, could a certain evil type pattern cause it to re-attempt spesh and then go back to unoptimized over and over?
21:43 japhb_ OK, backtracking, got it.
21:43 jnthn It doesn't re-do the spesh, but it will use the optimized code again next time.
21:43 jnthn But deopt isn't especially costly.
21:43 japhb_ What about TypeA xx 20, TypeB xx 20, TypeC xx 20, etc.?
21:43 jnthn You may be able to find something that makes it be
21:44 jnthn It won't generate infinite specializations.
21:44 jnthn If it sees the thing is megamorphic it just gives up.
21:44 japhb_ OK, good.  OOC, what is the "megamorphic" limit?
21:44 jnthn There's some places doing polyvariant stuff would be desirable...
21:45 jnthn At present:
21:45 jnthn #define MVM_SPESH_LIMIT 4
21:45 jnthn oops
21:45 jnthn /* The number of specializations we'll allow per static frame. */
21:46 jnthn Though that could easily want to be more like 8
21:46 jnthn That's for argument-based variation.
21:46 jnthn Inside each of those the logging stuff wants no variance over 4 samples.
21:47 jnthn Since those are the things that can lead to deopt
21:48 jnthn For something like infix:<+>(Int, Int) then the 4 can easily be swallowed up by (scalar->Int, scalar->Int), (Int, Int), (Scalar->Int, Int), (Int, Scalar->Int)...
21:48 jnthn But that's all we can get, I guess. :)
21:48 japhb_ Oh, interesting.  Yes, I see that.
21:48 jnthn (It does optimize away a bunch of decontainerizations that are not needed.)
21:50 japhb_ Makes me wonder if a future optimization area for the user-programmer is "Avoid scalar containers that you don't actually need for writeability"
21:50 jnthn I'm hoping the lexical nature of variables will allow some of that to be done by the Perl 6 optimizer.
21:51 jnthn I also expect many Scalar containers will be excellent candidates for escape analysis.
21:55 japhb_ OK, thanks, jnthn!  Sleep well ....
21:56 brrt joined #moarvm
21:57 jnthn Thanks :-)
21:58 jnthn 'night, all o/
22:05 brrt gnight
22:36 brrt japhb_ : i'm actually quite interested in the benchmark suite
22:36 brrt that will be a great help in identifiying jit compilation blockers'
22:37 timotimo well, mostly the nqp benchmarks so far :)
22:39 * brrt should up his tooling a bit
22:39 vendethiel- joined #moarvm
22:40 brrt hmm
22:40 brrt i think i'm going to try and do sp_guardconc - and with that,  deopt - either tonight or tomorrow
22:41 brrt deopt, iirc, should be relatively easy
22:52 lizmat joined #moarvm
23:12 tadzik joined #moarvm
23:16 brrt left #moarvm
23:24 brrt joined #moarvm

| Channels | #moarvm index | Today | | Search | Google Search | Plain-Text | summary