CAMLprim value caml_gc_major(value v) { Assert (v == Val_unit); caml_gc_message (0x1, "Major GC cycle requested\n", 0); caml_empty_minor_heap (); caml_finish_major_cycle (); test_and_compact (); caml_final_do_calls (); return Val_unit; }
CAMLprim value caml_gc_compaction(value v) { Assert (v == Val_unit); caml_empty_minor_heap (); caml_finish_major_cycle (); caml_finish_major_cycle (); caml_compact_heap (); caml_final_do_calls (); return Val_unit; }
CAMLprim value caml_gc_major(value v) { Assert (v == Val_unit); caml_gc_log ("Major GC cycle requested"); caml_ev_pause(EV_PAUSE_GC); caml_empty_minor_heap (); caml_finish_major_cycle(); caml_final_do_calls (); caml_ev_resume(); return Val_unit; }
/* Do a minor collection and a slice of major collection, call finalisation functions, etc. Leave the minor heap empty. */ CAMLexport void caml_minor_collection (void) { caml_empty_minor_heap (); caml_major_collection_slice (0); caml_force_major_slice = 0; caml_final_do_calls (); caml_empty_minor_heap (); }
CAMLprim value caml_gc_major(value v) { CAML_INSTR_SETUP (tmr, ""); Assert (v == Val_unit); caml_gc_message (0x1, "Major GC cycle requested\n", 0); caml_empty_minor_heap (); caml_finish_major_cycle (); test_and_compact (); caml_final_do_calls (); CAML_INSTR_TIME (tmr, "explicit/gc_major"); return Val_unit; }
/* Do a minor collection and a slice of major collection, call finalisation functions, etc. Leave the minor heap empty. */ CAMLexport void caml_minor_collection (void) { caml_empty_minor_heap (); caml_major_collection_slice (0); caml_force_major_slice = 0; if (caml_finalise_begin_hook != NULL) (*caml_finalise_begin_hook) (); caml_final_do_calls (); if (caml_finalise_end_hook != NULL) (*caml_finalise_end_hook) (); caml_empty_minor_heap (); }
/* Do a minor collection and a slice of major collection, call finalisation functions, etc. Leave the minor heap empty. */ CAMLexport void caml_minor_collection (void) { intnat prev_alloc_words = caml_allocated_words; caml_empty_minor_heap (); caml_stat_promoted_words += caml_allocated_words - prev_alloc_words; ++ caml_stat_minor_collections; caml_major_collection_slice (0); caml_force_major_slice = 0; caml_final_do_calls (); caml_empty_minor_heap (); }
CAMLprim value caml_gc_full_major(value v) { int i; caml_gc_log ("Full Major GC requested"); caml_ev_pause(EV_PAUSE_GC); /* In general, it can require up to 3 GC cycles for a currently-unreachable object to be collected. */ for (i = 0; i < 3; i++) { caml_empty_minor_heap(); caml_finish_major_cycle(); caml_final_do_calls (); } caml_ev_resume(); return Val_unit; }
/* Do a minor collection and a slice of major collection, call finalisation functions, etc. Leave the minor heap empty. */ CAMLexport void caml_minor_collection (void) { caml_ev_pause(EV_PAUSE_GC); caml_handle_incoming_interrupts (); caml_empty_minor_heap (); caml_handle_incoming_interrupts (); caml_major_collection_slice (0, 0); caml_final_do_calls(); caml_ev_resume(); /* If the major slice triggered a STW, do that now */ caml_handle_gc_interrupt(); }