Perl 6 - the future is here, just unevenly distributed

IRC log for #moarvm, 2015-01-08

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

All times shown according to UTC.

Time Nick Message
04:44 ggoebel111111118 joined #moarvm
07:24 ggoebel111111119 joined #moarvm
07:29 ggoebel111111111 joined #moarvm
07:53 FROGGS joined #moarvm
07:56 zakharyas joined #moarvm
08:51 ggoebel111111111 joined #moarvm
08:52 brrt joined #moarvm
09:03 ggoebel111111112 joined #moarvm
09:21 rurban joined #moarvm
09:28 dalek joined #moarvm
09:37 kjs_ joined #moarvm
09:56 timo joined #moarvm
14:57 brrt joined #moarvm
16:14 rurban joined #moarvm
17:07 zakharyas joined #moarvm
17:14 rurban joined #moarvm
17:37 vendethiel- joined #moarvm
17:41 vendethiel joined #moarvm
17:42 danaj joined #moarvm
17:56 rurban joined #moarvm
18:13 FROGGS_ joined #moarvm
18:55 brrt joined #moarvm
19:25 kjs_ joined #moarvm
19:47 vendethiel joined #moarvm
19:49 tgt joined #moarvm
20:04 brrt joined #moarvm
20:30 dalek MoarVM: f570450 | jnthn++ | src/core/interp.c:
20:30 dalek MoarVM: Avoid handing back real NULL from getwho op.
20:30 dalek MoarVM: review: https://github.com/MoarVM/MoarVM/commit/f570450186
20:38 kjs_ joined #moarvm
20:48 * brrt checks if we need a JIT fix for that
20:48 brrt wait
20:49 jnthn ooh, point.
20:49 brrt why does the interpreter call MVM_6model_gethow and why would the JIT just get STABLE->HOW
20:49 jnthn Um...
20:49 jnthn I think the JIT should call the latter
20:49 jnthn But the thing I just patched was WHO, not HOW.
20:49 jnthn Maybe that op body wants to move into a function also
20:50 jnthn and the JIT calls it.
20:50 brrt hmm
20:50 brrt i'm not at all against getting things in a fast JIT Path
20:50 brrt it's just something i'm seeing as i'm looking at the code and thinkning 'hey that's funny'
20:51 jnthn Well, gethow became a function because it may need to trigger lazy deserialization.
20:51 brrt that's.. annoying
20:52 jnthn It's a notable win
20:53 jnthn Also note that for a spesh-time known type, we can actually turn .HOW into a spesh slot access, which may in turn JIT into a static memory address if the thing is already in gen2
20:53 jnthn So I think I'd just make gethow call the late-bound thing and spesh it.
20:53 * brrt nods
20:54 jnthn That'd also let us resolve meta-methods and even inline them.
20:54 jnthn Note, we may already be doing this :)
20:54 timotimo .o( i wonder on how many hot paths that ends up happening )
20:54 jnthn I don't remember implementing it.
20:54 jnthn timotimo: Not a load, but I know that some things in enums, for example, end up hitting meta-methods.
20:54 timotimo oh, yeah
20:55 timotimo i wonder if you have a cool idea for attribute accesors that get auto-generated
20:55 timotimo because these
20:55 timotimo go through an indirect name that comes in through a closure
20:56 jnthn Yes, been pondering that in my hindbrane. :)
20:56 timotimo and i'm still wondering about how to properly turn the BUILDPLAN and BUILDALLPLAN into code objects
20:56 timotimo (also wondering if that could cause a billion compunits to appear if i do it wrong)
20:56 jnthn Those two feel like related problems to me
20:57 timotimo much possible
20:57 jnthn My idea was to look into providing MOP code with a "compiler services" API that it can use to request any active compiler do some code-gen for it
20:57 timotimo ah yes
20:57 timotimo that way i don't have to getcomp or EVAL
20:57 jnthn So normal declarative code ends up with the MOP able to call into an API saying "please generate this method"
20:57 jnthn Yeah
20:58 jnthn I didn't quite settle on how we want that to look yet.
20:58 jnthn But I think it's the right kind of directin.
20:58 dalek MoarVM: a296a21 | brrt++ | src/jit/ (2 files):
20:58 dalek MoarVM: Also return VMNull from JIT getwho
20:58 dalek MoarVM: review: https://github.com/MoarVM/MoarVM/commit/a296a213c4
20:58 timotimo does that mean the MOP knows about several "templates" for methods?
20:58 * brrt is afk, and hoping that patch does what i mean
20:58 jnthn Well, that's the API to expose really.
20:59 jnthn Something like try_generate_accessor and try_generate_BUILDALL
20:59 brrt ok, wait, it doesn't really
20:59 jnthn And if we're not in a context where we can...fall back to the existing mechanism.
20:59 timotimo mhm, okay
21:00 jnthn But yeah, once we do that, all the accessors become inlinable and le cheap. :)
21:00 timotimo my first instinct was to go for generating my own QAST and plugging that into what getcomp for perl6 gives me
21:00 timotimo but i didn't see any way to build "a method" with the right signature at that stage
21:00 * brrt really likes gcc speed after dealing with clang for a day
21:00 timotimo because i don't have access to the $*W that's relevant
21:00 jnthn Yeah, well, the $*W should not be exposed per se
21:01 timotimo right, but that's the only place where i could think of finding something that'd let me build an actual method object and attach a signature
21:01 jnthn But hidden away behind the API I'm talking about :)
21:01 timotimo yes
21:01 jnthn Yes, that is the right mechanism.
21:01 jnthn It may even be something on the actions we want to expose.
21:01 timotimo SGTM, and TGIF ;)
21:01 timotimo also, i'll fall into bed now (but not from terribly far up or away)
21:02 jnthn It's...only Thursday?!
21:02 timotimo only 2 hours 'til midnight
21:02 timotimo what kind of timezone are you in?
21:02 jnthn Yeah, but midnight Thursday means 3 days of vacatin left, and midnight Friday means only 2 :P
21:03 timotimo oh :S
21:03 timotimo OK
21:03 timotimo enjoy your vacation in that case! :)
21:03 jnthn :)
21:03 jnthn Not much timezone difference from you. :)
21:04 timotimo i assume it's liberating to not be stuck behind TGFWOC
21:04 nwc10 but is the food as interesting?
21:05 jnthn Yes, the firewall is a pest, but also slows everything down...
21:05 jnthn nwc10: I found the food was interesting for the first weeks, and then I wanted, like, pizza...cheeseburger... :)
21:05 brrt pizzaburger
21:06 * jnthn did find pizza in the end :)
21:06 brrt (note, this is a real thing)
21:06 timotimo "but also"?
21:06 jnthn timotimo: It's most immediately annoying because of what it blocks.
21:06 brrt does ssh work
21:06 timotimo ISTR every encrypted connection just gets way slowed down
21:06 jnthn Yes, and so you can tunnel HTTP and so forth over it by doing a SOCKS proxy.
21:07 jnthn But...what timotimo said.
21:07 brrt (hang on, spectest is clean, patch is ok)
21:07 brrt i'll take a look at getwho tomorrow :-)
21:07 jnthn ++brrt
21:08 brrt :-)
21:08 brrt http://www.pizzaburger.nl/ for you to amaze yourself
21:08 brrt i'm off
21:08 jnthn BTW, Sweden has a plentiful supply of kebab pizza, if we're crossing the fast food streams... :)
21:08 brrt have fun on vacation
21:08 brrt oh, yes, i've seen that here too, but only at kebab places
21:09 jnthn Oh wow, I have to try a pizzaburger next time I'm in .nl. Just for the novelty. :P
21:10 timotimo jnthn: if the method name of something that gets called was part of the callsite (potentially), spesh could handle the accessor specialization, but that could very well be problematic for inlining callsites and such
21:10 timotimo or is there a better way to do this?
21:10 jnthn I think we should just code-gen accessor methods :)
21:10 jnthn I had pondered closure specialization
21:10 jnthn But it gets...a bit hairy :)
21:11 TimToady we might want that for GLR though, since the results of negotiations are likely "call this function I generated for you"
21:12 jnthn (Need to write-barrier lexical re-binds and trigger de-opt and invalidate specializations.)
21:12 timotimo TimToady: is that really generating functions or simply configuring a code object with closure'd variables?
21:13 TimToady depends on how hairy the crossbar gets
21:13 jnthn :P
21:13 jnthn We can look into implementing it, it's just some fun.
21:13 jnthn But for accessors there's a much more lightweight solution to hand.
21:13 TimToady at some point you abandon a complete crossbar implementation and do a double-conversion with a star topology
21:14 jnthn And we can see how the GLR works out in reality and see if we need such a thing.
21:15 TimToady the hotpath for strictly lazy will be a set of dynamically nested closures that give you just one more value, I suspect
21:15 TimToady for other modalities, depends on how much re-buffering is required
21:17 TimToady the point, I think, is that we want to make sure we have code that doesn't introspect or ask-to-ask, but just knows implicitly how it's in and out interfaces work
21:18 TimToady *its
21:18 timotimo yes, pretty please
21:18 jnthn The other thing to keep in mind is that working with lists implies loops
21:18 jnthn And trace JIT is a good strategy for loops
21:19 jnthn I can see us adopting it in the places we apply OSR and standard method inlining to optimize hot loops today.
21:19 TimToady "You keep using that loop.  I'm not sure that loop means what you think it means..."
21:21 jnthn It also kinda sweeps closure specialization up with it, to some degree.
21:40 jnthn Sleep time; 'night
21:49 kjs_ joined #moarvm
21:59 kjs_ joined #moarvm
22:56 rurban joined #moarvm

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