|
02:34
vendethiel joined
03:16
kjs_ joined
05:46
TimToady_ joined
08:44
domidumont joined
08:49
domidumont joined
10:51
vendethiel joined
11:16
leont joined
11:27
18WABBFX8 joined
12:32
nebuchadnezzar joined
12:44
kjs_ joined
|
|||
| timotimo | jnthn: frame.c has the instrumentation level barrier check if the levels are unequal. if they are, it sets to the instances current instrumentation level and then only does a single instrumentation; is that correct? perhaps we want to make profiling, cross-thread-writing, and coverage reporting to be mutually exclusive | 12:55 | |
|
13:41
moritz_ joined,
arnsholt_ joined,
ashleydev joined
13:42
Util joined
13:45
vendethiel joined
|
|||
| timotimo | there seems to not be a precedent yet for allocating objects during a spesh or instrumentation phase. but i expect it'll be all right | 13:45 | |
|
13:55
kjs_ joined
13:57
ilmari joined
|
|||
| jnthn | timotimo: We assume during spesh that we won't allocate, fwiw | 14:21 | |
| (That's relied on in various places) | 14:22 | ||
| timotimo | oh, good to know | 14:24 | |
|
14:24
vendethiel joined
|
|||
| timotimo | how do i allocate a spesh slot that a later op can then allocate an object into? | 14:24 | |
| can i just set it to 0 and later change the effective_spesh_slots array? | 14:25 | ||
| jnthn | I...guess | 14:27 | |
| timotimo | i'm trying to give each spesh graph a little BOOTIntArray where it stores if a given line has already been reported | ||
| it feels icky; it looks like you agree :) | |||
| jnthn | On the instrumentation: yeah, we don't have a story on composing those yet. It's a hard problem, so I decided to just leave it :) | ||
| For when there's time :) | 14:28 | ||
| timotimo | right. i wasn't expecting it to be easy to just instrument one after the other | ||
| i could just go full insanity mode and use malloc to allocate that BOOTIntArray | |||
| jnthn | You usually only use one or the other anyway | ||
| timotimo | yeah, who would profile *and* coverage-analyze | ||
| jnthn | You're not actually doing anything with spesh, just writing an instrumentation? | 14:29 | |
| timotimo | and if you expect things to blow up because of threadedness trouble, you wouldn't run a coverage log either | ||
| that's right | |||
| jnthn | ah | ||
| Then at least if it busts it's low-impact :) | |||
| timotimo | it puts a reporting op after each bb's batch of PHI ops | ||
| hehe. | |||
| then i'll keep the current way until i find it breaks | |||
|
14:30
virtualsue joined
|
|||
| timotimo | it'll be running against the spec test suite, so it'll have plenty of work and opportunity to asplode | 14:30 | |
| if i pre-size that array at instrumentation time to hold all possible reportable numbers, it'll not be trouble to access the BOOTIntArray concurrently either! | |||
| i'm starting to think this isn't going to suck terribly :) | 14:32 | ||
| jnthn | :) | ||
| timotimo | cool. tc is null. that's new. | 14:43 | |
| timotimo builds with 0 optimization | |||
| huh. effective_spesh_slots is 0 | 14:44 | ||
| well, that's not so nice | 14:45 | ||
| dalek | arVM/line_based_coverage: 5795ee0 | timotimo++ | / (11 files): first prototype of a per-line coverage reporter |
14:46 | |
| timotimo | maybe it's something obvious that makes that happen. it occurs when the interpreter hits the coverage_log instruction | 14:47 | |
| or perhaps it's impossible to use spesh slots from instrumentation because it neglects to set up ... something? | 14:50 | ||
| perhaps because it kicks out all spesh candidates after instrumenting? and perhaps that makes the spesh slots disappear, too? :\ | 14:57 | ||
| jnthn: maybe you can figure something out, i'll be AFK for a bit | 14:59 | ||
|
15:20
ilmari joined
15:28
camelia joined
15:39
flussenc1 joined
15:55
flussence joined
16:07
kjs_ joined
|
|||
| JimmyZ | so jvm has less than 300 opcode and we have more than 750 opcode? ;) | 16:09 | |
|
16:36
dalek joined
|
|||
| jnthn | JimmyZ: Did you count all of their VM-implemented methods too? | 16:57 | |
| JimmyZ | jnthn: I didn't , but I know they have special VM-implemented methods | 17:02 | |
| jnthn | Right, so you need to count those too to get a fair comparison. | ||
| timotimo | jnthn: got a clue about the disappearing spesh slots? | 17:07 | |
| jnthn | Oh... I guess it's that instrumenation does not actually go through the full spesh pipeline. | 17:11 | |
| timotimo | right | ||
| jnthn | Otherwise we'd think instrumented frames were already specialized. | ||
| timotimo | but i can do it for this one? | ||
| jnthn | Um...not...easily... | 17:12 | |
| timotimo | OK, so i'll use malloc instead of the gc to alloc those arrays? :P | ||
| jnthn | Or I can't see an asy way :( | ||
| Yeah, that'd do it | |||
|
17:13
flussence joined,
vendethiel joined
|
|||
| timotimo | grmbl. we don't have a GET_I64 | 17:21 | |
| oh, we do | 17:23 | ||
| it's just named differently | |||
| hm. my MVMArray isn't being set up right, it seems | 17:38 | ||
| body->slots ends up being a null pointer | 17:40 | ||
| but body->elems is set to 1 | 17:41 | ||
| .o( if we only have 1 element, we could totally store that in the body pointer! what a fantastic space saving idea!!) | |||
| oh, i have to use zeroed alloc | 17:45 | ||
| malloc* | |||
| i forgot malloc doesn't do that for you :) | |||
| that's a silly mistake to make :) | 17:46 | ||
| ho-hum. a segfault in "goto NEXT" | 17:49 | ||
|
17:51
domidumont joined
|
|||
| timotimo | my instruction is defined to be str int32 int32 int64 and i do cur_op += 20; that should be right, right? | 17:52 | |
| haha. in my last commit i forgot to add the new files | 17:55 | ||
| dalek | arVM/line_based_coverage: 6a7c350 | timotimo++ | / (6 files): add missing files, adjust op to not use spesh slot since instrumented frames are actually not fully speshed, and can't easily be, we have to rely on a literal int64 as a pointer to the line report store and allocate it without involving the GC, so it won't move. |
17:57 | |
| timotimo | oh! it's because i'm corrupting jumplists! | 18:01 | |
| hum. | 18:08 | ||
| my jumplist detection code doesn't work here | 18:09 | ||
| there isn't actually a jumplist, so the bytecode itself must have been corrupted or something? | 18:10 | ||
| oh. my conclusion about jumplist not being there might well be wrong | 18:13 | ||
| as i used the spesh log, but that only triggers when frames get considered hot | |||
| whoa, ouch. num_preds is 0 for all those BBs? | 18:17 | ||
| jnthn | timotimo: I think we may compute those as part of SSA | ||
| And if you just copied the profiler code, it knows it doesn't need that analysis doing | 18:18 | ||
| timotimo | right, that'd make sense | ||
| :) | |||
| i did copy that! :) | |||
| jnthn | So simply asks for a CFG without SSA applying. | ||
| timotimo | if i can rely on all blocks following the jumplist to be chained in linear_next properly, i can just skip them that way | ||
| ho-hum. | 18:20 | ||
| now i just don't instrument bbs that have exactly one instruction which is a goto | |||
| and that gets me to ===SORRY!=== | |||
| No lexical found with name 'decints' | |||
| damn. const_iX NYI; so i'm creating bogus bytecode here | 18:22 | ||
| neato! i have something that survives a simple "say 'hi!!'" | 18:25 | ||
| next step is to throw out the BOOTIntArray and use a little chunk of memory instead, to make the impact a bit less severe | 18:31 | ||
| dalek | arVM/line_based_coverage: 479e645 | timotimo++ | src/instrument/line_coverage.c: properly skip over jumplists |
18:34 | |
| arVM/line_based_coverage: 0d94be2 | timotimo++ | src/ (3 files): use a blob of memory instead of BOOTIntArray this ought to make things a bit less expensive. |
18:56 | ||
| Heuristic branch merge: pushed 35 commits to MoarVM/even-moar-jit by bdw | 19:29 | ||
| timotimo | ohai brrt | ||
|
19:39
brrt joined
|
|||
| brrt | ohai timotiom | 19:40 | |
| i was actually just pushing something i'd merged earlier :-) | |||
| timotimo | oh, ok | 19:41 | |
| you know how happy i am every time i see you commit stuff ;) | |||
| i'll be afk for half an hour now, after that i'll teach spesh to kick out coverage reports that have already fired before we hit the spesh and that'll allow a few frames to be jitted again | 19:42 | ||
| but i'm running a full spec test run at the moment, collecting all coverage reports with tail -f on the one file and putting the result into another file | |||
| it's already 300 megabytes big :) | |||
| brrt | wow :-o | 19:45 | |
| anyway, i maybe get some work down on the tiler linearisation tomorrow | 19:47 | ||
| i hope :-) | |||
| see you! | |||
| jnthn | o/ brrt | ||
| timotimo | \o/ | 20:12 | |
|
20:37
JimmyZ joined
21:49
leont joined
|
|||