void caml_finish_marking () { caml_save_stack_gc(); caml_do_local_roots(&caml_darken, caml_domain_self()); caml_scan_global_roots(&caml_darken); caml_empty_mark_stack(); caml_domain_state->allocated_words = 0; caml_restore_stack_gc(); }
void caml_finish_marking_domain (struct domain* domain) { //caml_gc_log("caml_finish_marking_domain(0): domain=%d", domain->id); caml_save_stack_gc(); caml_do_local_roots(&caml_darken, domain); caml_empty_mark_stack_domain(domain); /* Previous step might have pushed values into our mark stack. Hence, * empty our mark stack */ caml_empty_mark_stack(); caml_domain_state->allocated_words = 0; caml_restore_stack_gc(); //caml_gc_log("caml_finish_marking_domain(1): domain=%d", domain->id); }