github.com/moarvm/moarvm | IRC logs at colabti.org/irclogger/irclogger_logs/moarvm
Set by AlexDaniel on 12 June 2018.
00:42 moon-child joined 01:02 leont left 01:44 raku-bridge left 05:06 Kaiepi left, Kaiepi joined 06:15 sena_kun joined 06:17 Kaiepi left, Kaiepi joined 07:24 Altai-man joined 07:25 kawaii left 07:26 sena_kun left
nine timotimo: in ye olden days the preprocessor was actually distinct from the compiler. Maybe one of gcc's gazillion switches makes it write out preprocessed C files (maybe even without expanding includes)? 07:27
07:28 kawaii joined
nwc10 -E 07:28
I don't think that you can avoid includes
good *, #moarvm
timotimo: does the debugging option -g3 enable you to single-step macros? 07:29
timotimo nope, macro invocations are always considered "a single line" or whatever :( 07:58
08:13 mst left
timotimo i wonder if the biggest problems i used to have were due to having to please the "initialization only at start of block" rule when rewriting mvmroot macros? 08:48
08:49 domidumont joined
MasterDuke github.com/MoarVM/MoarVM/pull/1344 updated with all latest fixes. current situation is that nqp builds, but rakudo reliably panics or segfaults 09:23
timotimo: have you tried the `macro` command in gdb? 09:26
timotimo i have not! 09:29
hm, that looks more like i can input a macro in gdb and have it tell me the expansion of a value i type in the command prompt 09:30
09:48 MasterDuke left 11:19 leont joined 11:25 sena_kun joined 11:27 Altai-man left 11:31 MasterDuke joined 14:26 zakharyas joined 15:00 zakharyas left 15:04 zakharyas joined 15:24 Altai-man joined 15:26 sena_kun left 15:56 mst joined, ChanServ sets mode: +o mst
MasterDuke timotimo: btw, was this for something you're working on? or helping to debug my PR? 16:06
timotimo it was something i stumbled upon again in your PR 16:08
but just in general
MasterDuke ah. but speaking of, any further thoughts? 16:10
timotimo not yet 16:11
you didn't post the entire results of the find missing roots script, did you?
MasterDuke i can 16:14
gist.github.com/MasterDuke17/618ff...b3da0afded 16:16
18:27 brrt joined 19:03 zakharyas left
MasterDuke does MVM_spesh_candidate_add still belong in the list of allocators in check-roots.py? 19:09
timotimo it does allocate, doesn't it?
MasterDuke forget i asked that... 19:10
19:11 zakharyas joined 19:15 zakharyas left
MasterDuke does github.com/MoarVM/MoarVM/blob/mast.../osr.c#L92 need to be an MVM_ASSIGN_REF? 19:21
19:24 sena_kun joined 19:26 Altai-man left
timotimo that could be a good idea! 19:28
that could explain why looking up dynamic lexicals breaks so often? because it goes via this pointer? 19:29
i finally got my desk chair back 19:30
MasterDuke it had run off? 19:31
timotimo not quite
MasterDuke still panics in the rakudo build 19:32
19:34 zakharyas joined 19:38 sena_kun left
MasterDuke does this look correct? github.com/MoarVM/MoarVM/blob/mast...#L398-L406 the comment is worrying 19:39
what about the couple places where `*->spesh_cand = NULL`? should it be marked before set to null? 19:42
timotimo setting to null shouldn't need any specific handling 19:53
i wonder if you've got a misconception about how the GC works when you say it should "be marked"? 19:55
MasterDuke could be. how does it work? 19:56
timotimo marking is kind of a phase that in moar's gc happens all at once 19:58
you wouldn't "mark an object" or "mark a pointer" at a random point in the code
when you root a pointer, we put it in a list of pointers that marking should start at
MasterDuke MVM_gc_worklist_add puts something on the list to be collected, right? 19:59
timotimo and if the root is still in the list (remember, we pop things off all the time as well) when gc starts, it'll cause the target of the pointer to be marked, i.e. whatever lives at its end has its repr looked up and the gc_mark function called 20:00
worklist_add is for use during marking, it's a simple datastructure that you can push stuff onto and pull stuff off of
and marking will pop stuff off the worklist until it's empty, and everything it pops off will again have its gc_mark invoked 20:01
whenever we have code that does worklist_add, we're in one spot responsible for one kind of datastructure and the GC wants us to tell it all pointers that it needs to care about
we have stuff like add_frame_roots and add_instance_roots because some of our objects aren't proper collectables; threadcontext and instance for one, but there's also frames that live on a "stack" where no headers exist, so they get marked differently, too 20:03
MasterDuke good to know 20:04
timotimo i hope more clarity can help think about how the code should be more clearly? 20:05
MasterDuke let's hope
timotimo also, explaining stuff also helps the explainer understand 20:13
lizmat that's why rubberducking works :-) 20:17
timotimo i can also ask for something and almost immediately find the solution myself 20:18
don't have a good name for it, it'd be something like "shame-driven discovery"?
20:36 domidumont left 21:00 brrt left 21:27 zakharyas left
timotimo let's see if a 2 years past due bottle of blackberry cider is still okay 21:51
it seems okay 22:08
22:09 leont left