Back to index

lightning-sunbird  0.9+nobinonly
Classes | Defines | Typedefs | Functions | Variables
gc_mark.h File Reference
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Classes

struct  ms_entry

Defines

#define PROC_BYTES   100
#define DS_TAG_BITS   2
#define DS_TAGS   ((1 << DS_TAG_BITS) - 1)
#define DS_LENGTH   0 /* The entire word is a length in bytes that */
#define DS_BITMAP   1 /* 30 bits are a bitmap describing pointer */
#define BITMAP_BITS   (WORDSZ - DS_TAG_BITS)
#define DS_PROC   2
#define PROC(descr)   (GC_mark_procs[((descr) >> DS_TAG_BITS) & (MAX_MARK_PROCS-1)])
#define ENV(descr)   ((descr) >> (DS_TAG_BITS + LOG_MAX_MARK_PROCS))
#define MAX_ENV   (((word)1 << (WORDSZ - DS_TAG_BITS - LOG_MAX_MARK_PROCS)) - 1)
#define MAKE_PROC(proc_index, env)
#define DS_PER_OBJECT   3 /* The real descriptor is at the */
#define ADD_TO_ATOMIC(sz)
#define ADD_TO_COMPOSITE(sz)
#define PUSH_OBJ(obj, hhdr, mark_stack_top, mark_stack_limit)
#define GC_FIND_START(current, hhdr, source)   GC_find_start(current, hhdr)
#define PUSH_CONTENTS(current, mark_stack_top, mark_stack_limit, source, exit_label)
#define PUSH_ONE_CHECKED(p, ip, source)   GC_push_one_checked(p, ip)
#define GC_PUSH_ONE_STACK(p, source)
#define AIP   FALSE
#define GC_PUSH_ONE_HEAP(p, source)
#define GC_MARK_FO(real_ptr, mark_proc)
#define MS_NONE   0 /* No marking in progress. I holds. */
#define MS_PUSH_RESCUERS   1 /* Rescuing objects are currently */
#define MS_PUSH_UNCOLLECTABLE   2
#define MS_ROOTS_PUSHED   3 /* I holds, mark stack may be nonempty */
#define MS_PARTIALLY_INVALID   4 /* I may not hold, e.g. because of M.S. */
#define MS_INVALID   5 /* I may not hold. */

Typedefs

typedef struct ms_entry mse
typedef int mark_state_t

Functions

word GC_find_start ()
mseGC_signal_mark_stack_overflow ()

Variables

word GC_n_mark_procs
word GC_mark_stack_size
mseGC_mark_stack_top
mseGC_mark_stack
GC_bool GC_mark_stack_too_small
mark_state_t GC_mark_state

Class Documentation

struct ms_entry

Definition at line 88 of file gc_mark.h.

Class Members
word mse_descr
word * mse_start

Define Documentation

#define ADD_TO_ATOMIC (   sz)

Definition at line 109 of file gc_mark.h.

Definition at line 110 of file gc_mark.h.

#define AIP   FALSE

Definition at line 208 of file gc_mark.h.

Definition at line 69 of file gc_mark.h.

#define DS_BITMAP   1 /* 30 bits are a bitmap describing pointer */

Definition at line 61 of file gc_mark.h.

#define DS_LENGTH   0 /* The entire word is a length in bytes that */

Definition at line 59 of file gc_mark.h.

#define DS_PER_OBJECT   3 /* The real descriptor is at the */

Definition at line 84 of file gc_mark.h.

#define DS_PROC   2

Definition at line 70 of file gc_mark.h.

Definition at line 57 of file gc_mark.h.

#define DS_TAGS   ((1 << DS_TAG_BITS) - 1)

Definition at line 58 of file gc_mark.h.

#define ENV (   descr)    ((descr) >> (DS_TAG_BITS + LOG_MAX_MARK_PROCS))

Definition at line 77 of file gc_mark.h.

#define GC_FIND_START (   current,
  hhdr,
  source 
)    GC_find_start(current, hhdr)

Definition at line 136 of file gc_mark.h.

#define GC_MARK_FO (   real_ptr,
  mark_proc 
)
Value:
{ \
    (*(mark_proc))(real_ptr); \
    while (!GC_mark_stack_empty()) GC_mark_from_mark_stack(); \
    if (GC_mark_state != MS_NONE) { \
        GC_set_mark_bit(real_ptr); \
        while (!GC_mark_some((ptr_t)0)); \
    } \
}

Definition at line 221 of file gc_mark.h.

Value:
if ((ptr_t)(p) >= GC_least_plausible_heap_addr   \
        && (ptr_t)(p) < GC_greatest_plausible_heap_addr) {     \
        PUSH_ONE_CHECKED(p,AIP,source);   \
    }

Definition at line 210 of file gc_mark.h.

Value:
if ((ptr_t)(p) >= GC_least_plausible_heap_addr   \
        && (ptr_t)(p) < GC_greatest_plausible_heap_addr) {     \
        PUSH_ONE_CHECKED(p, TRUE, source);       \
    }

Definition at line 195 of file gc_mark.h.

#define MAKE_PROC (   proc_index,
  env 
)
Value:
(((((env) << LOG_MAX_MARK_PROCS) | (proc_index)) << DS_TAG_BITS) \
           | DS_PROC)

Definition at line 81 of file gc_mark.h.

Definition at line 79 of file gc_mark.h.

#define MS_INVALID   5 /* I may not hold. */

Definition at line 273 of file gc_mark.h.

#define MS_NONE   0 /* No marking in progress. I holds. */

Definition at line 251 of file gc_mark.h.

#define MS_PARTIALLY_INVALID   4 /* I may not hold, e.g. because of M.S. */

Definition at line 268 of file gc_mark.h.

#define MS_PUSH_RESCUERS   1 /* Rescuing objects are currently */

Definition at line 254 of file gc_mark.h.

Definition at line 260 of file gc_mark.h.

#define MS_ROOTS_PUSHED   3 /* I holds, mark stack may be nonempty */

Definition at line 266 of file gc_mark.h.

#define PROC (   descr)    (GC_mark_procs[((descr) >> DS_TAG_BITS) & (MAX_MARK_PROCS-1)])

Definition at line 75 of file gc_mark.h.

#define PROC_BYTES   100

Definition at line 40 of file gc_mark.h.

#define PUSH_CONTENTS (   current,
  mark_stack_top,
  mark_stack_limit,
  source,
  exit_label 
)

Definition at line 144 of file gc_mark.h.

#define PUSH_OBJ (   obj,
  hhdr,
  mark_stack_top,
  mark_stack_limit 
)
Value:
{ \
    register word _descr = (hhdr) -> hb_descr; \
        \
    if (_descr == 0) { \
       ADD_TO_ATOMIC((hhdr) -> hb_sz); \
    } else { \
        ADD_TO_COMPOSITE((hhdr) -> hb_sz); \
        mark_stack_top++; \
        if (mark_stack_top >= mark_stack_limit) { \
          mark_stack_top = GC_signal_mark_stack_overflow(mark_stack_top); \
        } \
        mark_stack_top -> mse_start = (obj); \
        mark_stack_top -> mse_descr = _descr; \
    } \
}

Definition at line 115 of file gc_mark.h.

Definition at line 185 of file gc_mark.h.


Typedef Documentation

typedef int mark_state_t

Definition at line 235 of file gc_mark.h.

typedef struct ms_entry mse

Function Documentation

Here is the caller graph for this function:


Variable Documentation

Definition at line 101 of file mark.c.

Definition at line 103 of file mark.c.

Definition at line 111 of file mark.c.

Definition at line 105 of file mark.c.

Definition at line 109 of file mark.c.

Definition at line 41 of file mark.c.