#include <stdio.h>
#include "gc_private.h"
Go to the source code of this file.
Data Structures | |
struct | roots |
Defines | |
#define | MAX_ROOT_SETS 64 |
#define | RT_SIZE 64 |
#define | LOG_RT_SIZE 6 |
Functions | |
static int | rt_hash (char *addr) |
static bool | roots_present (char *b, char *e) |
static void | add_roots_to_index (struct roots *p) |
void | GC_add_roots (char *b, char *e) |
void | GC_add_roots_inner (char *b, char *e) |
void | GC_clear_roots () |
ptr_t | GC_approx_sp () |
GC_mark_roots () | |
void | GC_tl_mark (word p) |
Variables | |
static struct roots | static_roots [MAX_ROOT_SETS] |
static | n_root_sets = 0 |
static struct roots * | root_index [RT_SIZE] |
word | GC_root_size = 0 |
#define LOG_RT_SIZE 6 |
#define MAX_ROOT_SETS 64 |
#define RT_SIZE 64 |
static void add_roots_to_index | ( | struct roots * | p | ) | [static] |
Definition at line 65 of file mark_roots.c.
References roots::r_next, roots::r_start, and rt_hash().
Referenced by GC_add_roots_inner().
void GC_add_roots | ( | char * | b, | |
char * | e | |||
) |
Definition at line 77 of file mark_roots.c.
References DCL_LOCK_STATE, DISABLE_SIGNALS, ENABLE_SIGNALS, GC_add_roots_inner(), LOCK, and UNLOCK.
void GC_add_roots_inner | ( | char * | b, | |
char * | e | |||
) |
Definition at line 94 of file mark_roots.c.
References ABORT, add_roots_to_index(), beginGC_arrays, endGC_arrays, GC_add_roots_inner(), GC_root_size, MAX_ROOT_SETS, n_root_sets, roots::r_end, roots::r_next, roots::r_start, roots_present(), and static_roots.
ptr_t GC_approx_sp | ( | ) |
void GC_clear_roots | ( | ) |
Definition at line 122 of file mark_roots.c.
References DCL_LOCK_STATE, DISABLE_SIGNALS, ENABLE_SIGNALS, GC_root_size, LOCK, n_root_sets, and UNLOCK.
GC_mark_roots | ( | ) |
Definition at line 166 of file mark_roots.c.
References ABORT, GC_add_roots_inner(), GC_approx_sp(), GC_mark_all(), GC_mark_all_stack(), GC_mark_regs(), GC_register_dynamic_libraries(), GC_stackbottom, n_root_sets, NIL, and static_roots.
Referenced by GC_gcollect_inner().
void GC_tl_mark | ( | word | p | ) |
static bool roots_present | ( | char * | b, | |
char * | e | |||
) | [static] |
Definition at line 51 of file mark_roots.c.
References FALSE, roots::r_end, roots::r_next, roots::r_start, rt_hash(), and TRUE.
Referenced by GC_add_roots_inner().
static int rt_hash | ( | char * | addr | ) | [static] |
Definition at line 34 of file mark_roots.c.
References LOG_RT_SIZE, and RT_SIZE.
Referenced by add_roots_to_index(), and roots_present().
word GC_root_size = 0 |
Definition at line 75 of file mark_roots.c.
Referenced by GC_add_roots_inner(), GC_clear_roots(), and min_words_allocd().
n_root_sets = 0 [static] |
Definition at line 23 of file mark_roots.c.
Referenced by GC_add_roots_inner(), GC_clear_roots(), and GC_mark_roots().
struct roots* root_index[RT_SIZE] [static] |
Definition at line 30 of file mark_roots.c.
struct roots static_roots[MAX_ROOT_SETS] [static] |
Definition at line 21 of file mark_roots.c.
Referenced by GC_add_roots_inner(), and GC_mark_roots().