02:09
cognominal joined
03:30
colomon joined
03:47
japhb joined
05:10
flaviusb joined
07:25
domidumont joined
07:32
domidumont joined
07:42
FROGGS joined
09:43
leont joined
09:47
brrt joined
|
|||
brrt | good * #moarvm | 09:47 | |
timotimo | good brrt, brrt :) | 10:14 | |
brrt | good timotimo, timotimo | 10:26 | |
hey, good news, i hope to have finished my thesis report, or at least the first draft of it, by the end of this week; meaning that yes, i'll finally have some #moarvm time then :-) | 10:27 | ||
jnthn | \o/ | ||
FROGGS | \O7 | 10:31 | |
err | |||
\o/ | |||
such excited | |||
timotimo | ooooooooh | 10:34 | |
brrt | :-) | 10:46 | |
yeah, i'll be happy to start working on a real register allocator | |||
will still be slowish, but more than currently | |||
timotimo | not more slowish, though? | 10:47 | |
brrt | hopefully | 10:57 | |
timotimo | :D | ||
brrt | nah, stuff is way to exciting to let lie so long | ||
timotimo | well, our time spent in spesh and jit is superbly small in all the code i've run so far | ||
brrt | oh, i meant *my* progress, not the jits speed | ||
timotimo | oh! | 10:58 | |
brrt | it should be | ||
timotimo re-parses the discussion | |||
brrt | thinking ahead of time, as i usually do, i'm wondering how we can string together multiple expression trees / basic blocks to form loops which we can compile together | 10:59 | |
hmmm | |||
well, | |||
when put that way | 11:00 | ||
shouldn't be all that hard | |||
we 'just' create a MVMJitExprLoop structure to contain the relevant basic blocks, and we run register allocation on the whole set | |||
timotimo | it seems to me like you get a lot of mileage out of "rubber duck design" | ||
brrt | i do, yes :-) | ||
timotimo | if we have such a loop structure, that may be an interesting cornerstone for doing loop-invariant code motion and such? | 11:01 | |
brrt | i mean, it's loops we care most about | ||
hmmm... yes, to a degree | |||
although, i'd argue, we prefer.. that to be done in spesh | |||
hey, that *would* be a good idea | |||
question | 11:02 | ||
would this be hard to implement in spesh | |||
jnthn | Only to the degree it's hard to implement anyway :) | ||
timotimo | fair enough | ||
it's bothering me that i haven't started work on the deopt bridges stuff, but it's not bothering me enough to make me start work on it | 11:03 | ||
i've thought about adding a little bit of analysis for how useful that could be, but it seemed like adding just that analysis would already be three quarters of the actual implementation ... | 11:04 | ||
anyway, what's keeping spesh from kicking performance butt at the moment is, in my opinion, that we fail to inline a significant number of cases. and if there's lexicalrefs/localrefs involved, it straight up won't try | 11:05 | ||
brrt | if you need any motiviation, you have my assurance that deopt bridges will pay themselves handsomely in many cases, *especially* once the JIT becomes smarter | 11:06 | |
and especially-er if/when we start doing trace compilation | |||
but yeah, that might probably be an even more directly relevant bit :-) | |||
timotimo | there's also some things i'm worried about related to lifecycle management | 11:07 | |
as in: i'd like spesh to run over the same piece of code multiple times in some cases | |||
imagine a frame with multiple loops. the first loop is super simple, the other two not so much | |||
OSR kicks in, adds a logging phase, but only the log instructions in the first loop ever get hit | |||
then it's satisfied with the result and never touches that frame again, because the osrpoint instructions get kicked out (and i don't know if spesh won't get horribly confused if it hits osrpoints in an already-speshed frame) | 11:08 | ||
jnthn | I think we'll probably restructure things somewhat | ||
timotimo | i'm all ears (and a tiny amount of brain, too) | ||
jnthn | Around the same time spesh gets kicked off to run on a background thread | ||
I'd like to do something closer to PICs that collect data over time | 11:09 | ||
timotimo | PIC? i only know that acronym from the microprocessor company | ||
jnthn | Polymorphic Inline Cache | ||
timotimo | ah | ||
jnthn | They're an interpreter optimization but more usefully you can look at the data they collected | ||
So you get stats | 11:10 | ||
timotimo | oh, yes, i'd like to see that kind of thing :D | ||
say, i read recently that moar lets nursery collections happen individually per thread without stopping other threads, is that true? | 11:11 | ||
jnthn | No | 11:12 | |
Only finalization is concurrent | |||
We'll likely shove that off to a background thread also to cut down our overall pause times | 11:13 | ||
timotimo | right | ||
brrt | fwiw, spesh allocation is still awesome | 11:21 | |
it's the open-bar-party version of allocation | |||
take as much as you need, and somebody else pays for it, who doesn't want that | 11:22 | ||
timotimo | hm. will a polymorphic inline cache be just a bunch of data in the instruction stream and an instruction in front that says "jump over this many bytes"? | ||
jnthn | brrt: You, the next morning? :P | ||
timotimo | jnthn: that'd be more than "as much as you need" | ||
probably | |||
jnthn | Ah, point :P | ||
brrt | true enough | 11:23 | |
maybe i should have said, 'as much as you want' | |||
still, it is a pleasant experience after mucking about with malloc/calloc/free | 11:27 | ||
jnthn | Yeah, unsurprisingly there were not many spesh related leaks :) | 11:31 | |
(They were all about leaks of things that remain after we specialized) | 11:32 | ||
brrt | yeah, like the jitcode things | ||
i should merge that into even-moar-jit | |||
12:11
FROGGS joined
12:26
khagan joined
12:51
domidumont joined
|
|||
dalek | arVM: 3a38749 | timotimo++ | src/core/interp.c: check for NULL in exception payload and return VMNull in getexpayload |
14:37 | |
17:02
domidumont joined
17:43
leont joined
18:08
ggoebel16 joined
18:50
FROGGS joined
19:01
domidumont1 joined
19:18
leont joined
20:07
brrt joined
|
|||
diakopter | timotimo: probably also investigate how the payload could be NULL instead of VMNull? | 20:28 | |
timotimo | creating a vmexception without setting the payload, obviously ;) | 20:41 | |
20:46
[Coke] joined
21:58
brrt joined
|