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