12typedef struct MMTk_Builder MMTk_Builder;
13typedef struct MMTk_Mutator MMTk_Mutator;
18typedef void *MMTk_Address;
19typedef void *MMTk_ObjectReference;
20typedef void *MMTk_NullableObjectReference;
21typedef uint32_t MMTk_AllocationSemantics;
29#define MMTk_OBJREF_OFFSET 8
31#define MMTk_MIN_OBJ_ALIGN 8
33#define MMTk_GC_THREAD_KIND_WORKER 1
36 bool ractor_check_mode;
40typedef MMTk_ObjectReference (*MMTk_ObjectClosureFunction)(
void*,
void*, MMTk_ObjectReference, bool);
61 bool (*is_mutator)(void);
62 void (*stop_the_world)(void);
63 void (*resume_mutators)(
bool gc_may_move);
65 void (*before_updating_jit_code)(void);
66 void (*after_updating_jit_code)(void);
67 size_t (*number_of_mutators)(void);
68 void (*get_mutators)(void (*visit_mutator)(MMTk_Mutator*,
void*),
void *data);
69 void (*scan_gc_roots)(void);
70 void (*scan_objspace)(void);
71 void (*move_obj_during_marking)(MMTk_ObjectReference from, MMTk_ObjectReference to);
72 void (*update_object_references)(MMTk_ObjectReference object);
73 void (*call_gc_mark_children)(MMTk_ObjectReference object);
74 void (*handle_weak_references)(MMTk_ObjectReference object,
bool moving);
75 void (*call_obj_free)(MMTk_ObjectReference object);
76 size_t (*vm_live_bytes)(void);
77 void (*update_global_tables)(
int tbl_idx,
bool moving);
78 int (*global_tables_count)(void);
79 void (*update_finalizer_table)(void);
80 bool (*special_const_p)(MMTk_ObjectReference object);
81 void (*mutator_thread_panic_handler)(void);
82 void (*gc_thread_panic_handler)(void);
86 MMTk_ObjectReference *ptr;
91bool mmtk_is_live_object(MMTk_ObjectReference
object);
93bool mmtk_is_reachable(MMTk_ObjectReference
object);
95MMTk_Builder *mmtk_builder_default(
void);
97void mmtk_init_binding(MMTk_Builder *builder,
107void mmtk_destroy_mutator(MMTk_Mutator *mutator);
111void mmtk_set_gc_enabled(
bool enable);
113bool mmtk_gc_enabled_p(
void);
115MMTk_Address mmtk_alloc(MMTk_Mutator *mutator,
119 MMTk_AllocationSemantics semantics);
121void mmtk_post_alloc(MMTk_Mutator *mutator,
122 MMTk_ObjectReference refer,
124 MMTk_AllocationSemantics semantics);
126void mmtk_add_obj_free_candidates(
const MMTk_ObjectReference *objects,
128 bool can_parallel_free);
130void mmtk_declare_weak_references(MMTk_ObjectReference
object);
132bool mmtk_weak_references_alive_p(MMTk_ObjectReference
object);
134size_t mmtk_weak_references_count(
void);
136void mmtk_register_pinning_obj(MMTk_ObjectReference obj);
138void mmtk_object_reference_write_post(MMTk_Mutator *mutator, MMTk_ObjectReference
object);
140void mmtk_register_wb_unprotected_object(MMTk_ObjectReference
object);
142bool mmtk_object_wb_unprotected_p(MMTk_ObjectReference
object);
144void mmtk_enumerate_objects(
void (*callback)(MMTk_ObjectReference,
void*),
void *data);
150void mmtk_before_fork(
void);
154size_t mmtk_total_bytes(
void);
156size_t mmtk_used_bytes(
void);
158size_t mmtk_free_bytes(
void);
160MMTk_Address mmtk_starting_heap_address(
void);
162MMTk_Address mmtk_last_heap_address(
void);
164size_t mmtk_worker_count(
void);
166const uint8_t *mmtk_plan(
void);
168const uint8_t *mmtk_heap_mode(
void);
170size_t mmtk_heap_min(
void);
172size_t mmtk_heap_max(
void);
174bool mmtk_is_mmtk_object(MMTk_Address addr);
void * rust_closure
The pointer to the Rust-level closure object.
MMTk_ObjectClosureFunction c_function
The function to be called from C.