|
01:49
ilbot3 joined
|
|||
| timotimo | not sure if sleep went well | 06:08 | |
| still getting an explosion when profiling this game i have | 06:13 | ||
| amazing. Mu's "item" method is being specialized into enterspesh, getarg, prof_allocated, set, set, takedispatcher, prof_exit, return | 06:15 | ||
| ah, it used to have a param_sn that got kicked out | 06:16 | ||
|
06:31
brrt joined
|
|||
| brrt | ohai #moarvm | 06:32 | |
| so interesting fact; when I do my infinite loop, i have a 'final entry' | 06:33 | ||
| timotimo | that feel when your rr session explodes with a malloc problem when trying to MVM_dump_bytecode(tc) ;( | 06:39 | |
|
06:47
domidumont joined
|
|||
| brrt | haha | 06:50 | |
| that feeling when a debugger crashes in general | |||
| okay, i'm seeing i officially don't understand | 06:51 | ||
| why compare an object with the flags of the other | 06:52 | ||
|
06:54
domidumont joined
|
|||
| timotimo | that seems wrong? | 06:54 | |
| though that ought to mean you know what the fix ought to be? | 06:58 | ||
| nwc10 | good *, #moarvm | 07:07 | |
| timotimo | yo nwc10 | ||
|
07:12
brrt joined
|
|||
| brrt | kind of wrong, yes | 07:13 | |
| timotimo | break adjusted to free malloc space - why does this happen? :\ | ||
| the ... f? | 07:14 | ||
| setting "unwindonsignal" off (so that i could debug what's going on) makes it suddenly work instead of crashing with a segfault | |||
| oh, now it dies again when i started it from a different place in the code | 07:16 | ||
| just fantastic | |||
| i can't reverse-step out of the function i called, so even though i was inside "rr replay" i have to restart the rr replay session :\ | 07:18 | ||
| something's not right with the bytecode dumper helpers i wrote; the place it shows my IP to be at doesn't match up with what the interpreter's doing | 07:25 | ||
| brrt | hmmm | 07:26 | |
| timotimo | 9 ops further up there's a findmeth, or 10 ops down there's one | 07:27 | |
| and the interpreter's currently doing a findmeth op | |||
| actually, what if it's looking at the wrong frame on the stack? | 07:28 | ||
| i do see the IP right after an invoke_o | |||
| well, it's most likely this frame's bytecode i'm looking at | 07:35 | ||
| i.e. the first few instructions match with the contents of the dump | |||
| aha i found where the instruction pointer's at | 07:36 | ||
| i wonder if it's sensible that decont on a low-level null just gives the object itself back rather than asploding | 07:42 | ||
|
08:53
robertle joined
09:43
Voldenet joined
|
|||
| jnthn | Since there haven't been any complaints yet about gist.github.com/jnthn/8ee6dc06edc7...7ffabb86b5 I figure I'll dig into it somehow :) | 10:05 | |
| brrt | i'm scared but very curious about its reult | 10:08 | |
| jnthn | brrt: What parts of it scare you? | 10:11 | |
| jnthn is all for trying to reduce risk :) | 10:12 | ||
| brrt | well, the multithreaded bit | 10:14 | |
| but i guess it should be mostly alright :-) | |||
| jnthn | Ah | 10:15 | |
| I actually thing it'll be less scary than today | |||
| brrt | i suppose it is | ||
| jnthn | In that today *every* thread running might be racing to produce specializations | ||
| brrt | true | ||
| jnthn | So every spesh data structure in MVMStaticFrame has to be desinged to cope with multiple writers | ||
| Whereas now it'll be single writer, multiple readers | |||
| brrt | but i mostly use single threaded applicaitons so i never see that | 10:16 | |
| jnthn | True | ||
| I think the scheme I suggested for getting predictability will give it, though? | 10:17 | ||
| I'm wondering a bit about taking on gist.github.com/jnthn/8ee6dc06edc7...pe-logging first | |||
| Since it's kinda orthogonal-ish to the rest | 10:18 | ||
| Hm, or maybe that's not so wise :) | |||
| Hah, no, it ain't | |||
| It'll increase the number of deopt points and hose up the recent argument handling changes, I fear | 10:19 | ||
| jnthn makes a branch, digs into the new bits | 10:20 | ||
| Geth | MoarVM/spesh-worker: 9c7e6edc7f | (Jonathan Worthington)++ | 6 files Add MVMSpeshLog representation. Holds a log to be passed from an executing thread to the spesh worker thread. |
11:01 | |
| jnthn | lunch & | 11:04 | |
| brrt nods, that scheme ought to work | 11:11 | ||
|
11:18
brrt1 joined
11:38
nebuchadnezzar joined
|
|||
| JimmyZ | jnthn: replied your gist.github.com/jnthn/95d0705d225e...aa337624b, though maybe I am wrong | 11:44 | |
| jnthn | That's somewhat orthogonal to box/unbox | 11:48 | |
| Though very much related to escape analysis | |||
| timotimo | wow, 32bit for used and alloc :) | 11:50 | |
| jnthn | Not sure how long the logs will want to be :) | 11:51 | |
| timotimo | it's 2x 64bit for every entry | ||
| m: ((2 ** 32 - 1) * 8) / 1024 / 1024 | |||
| camelia | WARNINGS for <tmp>: Useless use of "/" in expression "/ 1024 / 1024" in sink context (line 1) |
||
| jnthn | Really? :) | ||
| timotimo | m: say ((2 ** 32 - 1) * 8) / 1024 / 1024 | ||
| camelia | 32767.9999924 | ||
| jnthn | used/limit are in terms of entries, not in terms of bytes :) | 11:52 | |
| timotimo | so, 32 giga-entries? | ||
| yeah | |||
| 32 gigabytes in entries per log, i mean | |||
| m: say ((2 ** 16 - 1) * 8) / 1024 / 1024 | |||
| camelia | 0.4999924 | ||
| timotimo | or half a gigabyte of log data per thread if we went down to 16 | ||
| JimmyZ wonders what jnthn's thought about Allocation Sinking Optimization compare to other EA Algorithms :P | |||
| jnthn | We could, though given there's one log held per thread :P | 11:53 | |
| timotimo | though of course there's alignment that might force used + limit to be 64bit wide anyway | ||
| jnthn | JimmyZ: It's not clear that the AS thing isn't tied to tracing | ||
| timotimo: Yeah, it seems like an odd place to try and save a few bytes :) | |||
| JimmyZ | jnthn: oh, yea | ||
| timotimo | true that | ||
| JimmyZ | yeah | ||
| jnthn | On a 64-bit system an entry is actually 24 bytes | 11:54 | |
| kind is 4 (alignment makes it being less not worth it) | |||
| id is 4 | |||
| Then the biggest union branch is 16 | 11:55 | ||
| (entry, 2 pointers) | |||
| timotimo | wow, how'd i miscount that? | ||
| jnthn | Not enough lunch? Too much lunch? :) | ||
| timotimo | i've only had breakfast and a nap | 11:56 | |
| i think now the cat is demanding attention | 11:59 | ||
|
12:18
AlexDaniel joined
|
|||
| timotimo | okay that was almost an hour of neck-scratches and bellyrubs | 12:46 | |
| Geth | MoarVM/spesh-worker: 465451fab3 | (Jonathan Worthington)++ | src/core/instance.h Try to organize instance.h It has grown a huge amount of state over time. This attempts to group the related pieces in some way, to get a better sense of what's in there. |
12:47 | |
| timotimo | haha there was still a reference to APR in there | 12:48 | |
| jnthn | Yeah :P | 12:49 | |
| Finally I can see what state spesh actually has :) | |||
| heh, tempted to do a simialr thing for threadcontext.h too | 13:08 | ||
| Having just started to do it - yes, 'cus I think I found a dead field and code to go with it too :) | 13:13 | ||
| timotimo | the fun i'm having ATM is things asploding in a non-speshed frame, though of course the bad data could come from a wrong-speshed frame | 13:17 | |
| Geth | MoarVM/spesh-worker: 6ddfcffb12 | (Jonathan Worthington)++ | src/core/threadcontext.h Organize the mass of state in threadcontext.h some So it's easier to see what's in there and what key subsystems are using. |
13:20 | |
| MoarVM/spesh-worker: ac8450a6b5 | (Jonathan Worthington)++ | 3 files Add/mark spesh log queue and per-thread spesh log Currently these are not yet initialized. |
13:30 | ||
|
14:05
SourceBaby joined
14:26
colomon joined
|
|||
| Geth | MoarVM/spesh-worker: 0f1de2d36d | (Jonathan Worthington)++ | 4 files Remove now-unused cur_usecapture field. |
14:35 | |
| MoarVM/spesh-worker: 07b722958b | (Jonathan Worthington)++ | 6 files Start specialization worker thread at startup. |
|||
| timotimo | sigh, the internet connection here keeps dying | 14:49 | |
| interesting, we don't keep a handle on the spesh thread in the instance object after all? | 14:50 | ||
| i suppose we don't need any other handle than the queue | 14:53 | ||
| jnthn | timotimo: I was trying to think of what I'd need it for and couldn't :) | ||
| If we get a reason to ahve it we can add it :) | 14:54 | ||
| timotimo | yeah, i can't come up with anything either | ||
| Geth | MoarVM/spesh-worker: 3fb2d40d2c | (Jonathan Worthington)++ | 7 files Set up initial per-thread spesh log, if enabled. |
15:15 | |
| MoarVM/spesh-worker: 937dcb2cb0 | (Jonathan Worthington)++ | src/spesh/worker.c It helps to actually run the created thread. |
|||
| timotimo | heh. | 15:19 | |
| man you runed it! | |||
|
15:21
brrt joined
|
|||
| brrt | he wants to JIT compile a specialization selector | 15:26 | |
| okay, we can do that | |||
| but | |||
| if we're going to go that way | 15:27 | ||
| why not compile all specializations in a single frame | |||
| oh, i know why | |||
| because we might not be able to compile all specialized versions | |||
| timotimo | whenever we add another specialization, we'd have to recompile the whole thing, no? | 15:35 | |
| that could perhaps be expensive | |||
| and re-use of registers and such will have to be A Thing, as opposed to how we do inlining where we just put the whole work of the inlinee at the end of the inliner's work area | |||
| jnthn | It has occurred to me that we might be able to shortcut quite a lot of the invocation work, though :) | 15:37 | |
| brrt | i'm listening | ||
| jnthn | And have the selector end up just jumping into the JITted target code | ||
| Frame creation has quite a few conditionals and calculations and so on | |||
| timotimo | ah, yes, interesting | 15:38 | |
| making invocation cheaper is something we'll all benefit from | |||
| jnthn | Bump-the-pointer'ing the CallStackRegion for example should be easy to compile | ||
| And sometimes that's all we'll have to do | |||
|
15:56
brrt joined
|
|||
| brrt nods | 15:57 | ||
| and suggest that the expr jit should make this kind of thing easy | |||
| because it introduces a layer that the 'C' code can work with to make machine code | 15:58 | ||
| could also be done in dynasm, for sure | |||
| …. oh, wow | 16:25 | ||
| how even does this happen | |||
| my label is off by one.... | |||
|
16:47
AlexDaniel joined
17:03
robertle joined
|
|||
| timotimo | if i need to make a branch for advanced moarvm-under-gdb stepping functions (step in and out of moar-bytecode-level funcitons and such), i'll probably call it here_come_the_hotsteppa | 17:35 | |
| jnthn | :P | 17:39 | |
|
18:16
domidumont joined
18:29
zakharyas joined
19:09
buggable joined
|
|||
| samcv | \o/ yay it's working | 20:38 | |
| and seems to be working even when i dump all the data into it. not just a partial run | |||
| and also work when there's collation elements attached to a non-terminal node | |||
| HelpBot[perl6] | \o/ | 21:14 | |
|
21:16
lizmat joined
|
|||
| samcv | and luckily the code has less paths now as well. so that's a ++ as well :) whenever doing recursion the more code paths really can screw you over | 21:18 | |
| now it just has ternary operators and maybe one if condition period | 21:20 | ||
| for the code that creates the c code | |||
|
21:58
nebuchadnezzar joined
|
|||