38 lines
935 B
C
38 lines
935 B
C
/**
|
|
* \file
|
|
*/
|
|
|
|
#ifndef __MONO_MINI_GC_H__
|
|
#define __MONO_MINI_GC_H__
|
|
|
|
#include "mini.h"
|
|
|
|
/*
|
|
* The GC type of a stack slot or register.
|
|
* This can change through the method as follows:
|
|
* - a SLOT_REF can become SLOT_NOREF and vice-versa when it becomes live/dead.
|
|
* - a SLOT_PIN can become SLOT_REF after it has been definitely assigned.
|
|
*/
|
|
typedef enum {
|
|
/* Stack slot doesn't contain a reference */
|
|
SLOT_NOREF = 0,
|
|
/* Stack slot contains a reference */
|
|
SLOT_REF = 1,
|
|
/* No info or managed pointer, slot needs to be scanned conservatively */
|
|
SLOT_PIN = 2
|
|
} GCSlotType;
|
|
|
|
void mini_gc_init (void);
|
|
|
|
void mini_gc_init_cfg (MonoCompile *cfg);
|
|
|
|
void mini_gc_enable_gc_maps_for_aot (void);
|
|
|
|
void mini_gc_create_gc_map (MonoCompile *cfg);
|
|
|
|
void mini_gc_set_slot_type_from_fp (MonoCompile *cfg, int slot_offset, GCSlotType type);
|
|
|
|
void mini_gc_set_slot_type_from_cfa (MonoCompile *cfg, int slot_offset, GCSlotType type);
|
|
|
|
#endif
|