github.com/moarvm/moarvm | IRC logs at colabti.org/irclogger/irclogger_logs/moarvm
Set by AlexDaniel on 12 June 2018.
06:12 domidumont joined 06:49 robertle joined 07:10 patrickb joined 08:19 zakharyas joined 09:56 domidumont left 11:21 Guest55475 left 11:34 zakharyas left 12:00 domidumont joined 12:39 lucasb joined 13:04 zakharyas joined 13:23 domidumont1 joined 13:25 domidumont left, domidumont joined 13:28 domidumont1 left 14:03 domidumont1 joined 14:07 domidumont left 14:22 domidumont joined 14:26 domidumont1 left 15:02 domidumont1 joined 15:04 domidumont left 15:09 domidumont1 left 15:24 patrickb left 15:38 zakharyas left 15:42 robertle left 16:44 robertle joined
tbrowder samcv: tbrowder on github is also tbrowder 16:51
samcv :) adding you now 17:29
oh nice you have have team discussions on github 17:30
17:32 domidumont joined, patrickb joined 17:38 domidumont left, domidumont joined
samcv tbrowder, sent 17:59
18:04 domidumont1 joined 18:06 domidumont left
timotimo nine: how does this moarvm bytecode look to you? 07 00 63 00 01 00 00 00 08 00 05 00 63 00 ef 01 05 00 18:09
18:36 brrt joined
brrt \o 18:45
18:49 sena_kun joined
timotimo nine: i'm now also a consumer of your %MAST::Ops::generators :) 18:56
nine timotimo: it does look kinda incomplete ;) 19:04
But nice to see that my work provides some value :)
19:06 domidumont1 left
timotimo yeah, it's for a much simplified language that also has its own simplified interpreter inside moarvm itself 19:09
it bends a rule or two
much easier to read the bytecode when you write it as 16 bit integers, hex and decimal in two lines 19:12
nine Between moar --dump and gist.github.com/niner/c24f4c2f8ae0...03669d6423 you hopefully don't need to read too much bytecode through hexdumps 19:13
timotimo i'm looking for one very particular hack right now ... i want an op that looks like bindattr_o, but takes the type as a string instead of a register :D
oh, yes! that thing! <3 19:14
oh, the only thing i have at the moment is the bytecode, nothing in the way of headers
which is also why moar --dump don't work :)
sorry, did i say bindattr 19:15
i meant getattr_o
i'm vaguely considering doing a getattr_o on A Very Special Register that the verifier spots and converts 19:16
it'll turn the getattr_o into noops and makes the next getattr_o the right "variant"
actually, const_s into a A Very Special Register could be more than enough
nine What's the goal of this thing?
timotimo why, world domination of course! 19:17
it'll allow throwing bytecode at spesh, the jit, and the profiler
nine ooooh
timotimo you'll be able to tell the profiler to "only start profiling starting on static frames named 'poodle'"
nothing specific figured out for spesh and jit yet, but you could totally turn on or off specific optimizations in spesh or prevent exprjit on just one BB inside of a specific frame 19:18
lizmat ++timotimo
timotimo and with proper care, it could allow a very simple subset of breakpoint conditions 19:19
but i'm stealing getattr now for Very Special Crap, will have to see how that'll cooperate :)
the very first thing it'll do is let you log when the program runs. which is why at the moment it can compile programs `log = "hello"` and `log = ~(99)` 19:20
brrt :-O timotimo++
timotimo a blog post will follow shortly, as my last progress report for my grant was at the end of march 19:21
this is related to the grant, at least.
in the mean time, please throw potential use cases/scenarios at me :) 19:22
lizmat being able to more closely profile the supervisor thread ? 19:36
and only that?
timotimo that'd be one example that'd work with the current design ideas already 19:47
lizmat cool
20:13 brrt left
timotimo pushed configurable-subsystems as a branch (so that even if my computer dies over night, the code is safe) 20:16
MasterDuke nine: around? 21:25
timotimo: what woud be the effect right now of calling MVM_profile_log_enter() and MVM_profile_log_exit() repeatedly, say at either the beginning or end of the program? is there currently a way to ignore some calls? 21:33
timotimo MasterDuke: i'm not sure if it cleans up the recorded data properly when doing proile_log_exit, or if the code just relies upon only being run once in total 21:37
but you can call enter and exit whenever you like and use the return value of profile_exit; it can be read by the compiler backend's dump profile data method 21:38
MasterDuke timotimo: hm, i'm just thinking of how to measure the overhead so it can be subtracted out in the report 21:42
timotimo ah 21:43
we can "just"ā„¢ have a function measure_overhead that gets run a few hundred thousand times and does nothing 21:44
and check it by name in the profiler
"the simplest thing that can possibly work" and such 21:45
not that i'm good at doing that
looking at my solution to "only some functions should trigger profiling"
MasterDuke well, *_(enter|exit) do actual work, we'd want to try to replicate that cost if possible 21:48
timotimo prof_exit doesn't include the time spent inside of it in the profile results 21:50
oh 21:51
*oh*
sorry, my dumb brain was thinking of profile_start and profile_finish
okay, so, the effect of calling profile_log_enter and profile_log_exit over and over would probably allocate a profiler data node at the root of the call graph of the current thread and give that a bunch of entries and some time 21:57
if it's the very first thing that happens (i.e. other threads don't race us) it'd probably even get the node id 0 21:58
MasterDuke do it right when the command line option is handled? 22:05
or would it be better to do it right before calling profile_finish? 22:06
timotimo i'd probably say at the start is better 22:08
are you thinking of putting it in moarvm as C code or nqp as nqp code?
22:41 patrickb left
MasterDuke i was thnking c 23:13
but i don't have a completely reasoned out why 23:14
so at the end of MVM_profile_start, if we're doing instrumented profiling, do 1k calls to MVM_profile_log_enter() and MVM_profile_log_exit() ? 23:18
23:25 sena_kun left
MasterDuke timotimo: hm, not seeing anything in a profile 23:30
timotimo i'm not sure what you'd pass to the functions when calling it yourself 23:39
MasterDuke MVM_profile_log_enter(tc, tc->cur_frame->static_info, MVM_PROFILE_ENTER_NORMAL); 23:43
cribbed from prof_enter in interp.c 23:44
timotimo i'm not actually entirely sure that's kosher 23:48
that's now the frame that started the profiler, which is not normally in the call graph 23:49
i don't know what effect it actually has
MasterDuke hm, got a better idea?
timotimo maybe instead of passing the data via the regular call graph, we should get the time before and after calling the function a lot and return that as part of the result dataset 23:52
which might be what you wanted to do from the start?
i seem to be in dire need of a sleep :D
MasterDuke sure, if there's a way to call it that doesn't create entries
timotimo ENTER_FAKE :D 23:54
that doesn't do the same amount of work of course :( 23:55