Ruby  3.1.0dev(2021-09-10revisionb76ad15ed0da636161de0243c547ee1e6fc95681)
Macros | Functions | Variables
gc.h File Reference

(b76ad15ed0da636161de0243c547ee1e6fc95681)

#include "ruby/ruby.h"
Include dependency graph for gc.h:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Macros

#define SET_MACHINE_STACK_END(p)   rb_gc_set_stack_end(p)
 
#define USE_CONSERVATIVE_STACK_END
 
#define RB_GC_SAVE_MACHINE_CONTEXT(th)
 
#define RUBY_MARK_FREE_DEBUG   0
 
#define RUBY_MARK_ENTER(msg)
 
#define RUBY_MARK_LEAVE(msg)
 
#define RUBY_FREE_ENTER(msg)
 
#define RUBY_FREE_LEAVE(msg)
 
#define RUBY_GC_INFO   if(0)printf
 
#define RUBY_MARK_MOVABLE_UNLESS_NULL(ptr)
 
#define RUBY_MARK_UNLESS_NULL(ptr)
 
#define RUBY_FREE_UNLESS_NULL(ptr)   if(ptr){ruby_xfree(ptr);(ptr)=NULL;}
 
#define stack_growup_p(x)
 
#define STACK_UPPER(x, a, b)   (stack_growup_p(x) ? (a) : (b))
 
#define STACK_GROW_DIR_DETECTION   VALUE stack_grow_dir_detection
 
#define STACK_DIR_UPPER(a, b)   STACK_UPPER(&stack_grow_dir_detection, (a), (b))
 
#define IS_STACK_DIR_UPPER()   STACK_DIR_UPPER(1,0)
 

Functions

 NOINLINE (void rb_gc_set_stack_end(VALUE **stack_end_p))
 
int ruby_get_stack_grow_direction (volatile VALUE *addr)
 
const char * rb_obj_info (VALUE obj)
 
const char * rb_raw_obj_info (char *buff, const int buff_size, VALUE obj)
 
VALUE rb_gc_disable_no_rest (void)
 
size_t rb_objspace_data_type_memsize (VALUE obj)
 
void rb_objspace_reachable_objects_from (VALUE obj, void(func)(VALUE, void *), void *data)
 
void rb_objspace_reachable_objects_from_root (void(func)(const char *category, VALUE, void *), void *data)
 
int rb_objspace_markable_object_p (VALUE obj)
 
int rb_objspace_internal_object_p (VALUE obj)
 
int rb_objspace_marked_object_p (VALUE obj)
 
int rb_objspace_garbage_object_p (VALUE obj)
 
void rb_objspace_each_objects (int(*callback)(void *start, void *end, size_t stride, void *data), void *data)
 
void rb_objspace_each_objects_without_setup (int(*callback)(void *, void *, size_t, void *), void *data)
 

Variables

RUBY_EXTERN int ruby_stack_grow_direction
 

Macro Definition Documentation

◆ IS_STACK_DIR_UPPER

#define IS_STACK_DIR_UPPER ( )    STACK_DIR_UPPER(1,0)

Definition at line 110 of file gc.h.

◆ RB_GC_SAVE_MACHINE_CONTEXT

#define RB_GC_SAVE_MACHINE_CONTEXT (   th)
Value:
do { \
FLUSH_REGISTER_WINDOWS; \
setjmp((th)->ec->machine.regs); \
SET_MACHINE_STACK_END(&(th)->ec->machine.stack_end); \
} while (0)

Definition at line 19 of file gc.h.

◆ RUBY_FREE_ENTER

#define RUBY_FREE_ENTER (   msg)

Definition at line 66 of file gc.h.

◆ RUBY_FREE_LEAVE

#define RUBY_FREE_LEAVE (   msg)

Definition at line 67 of file gc.h.

◆ RUBY_FREE_UNLESS_NULL

#define RUBY_FREE_UNLESS_NULL (   ptr)    if(ptr){ruby_xfree(ptr);(ptr)=NULL;}

Definition at line 79 of file gc.h.

◆ RUBY_GC_INFO

#define RUBY_GC_INFO   if(0)printf

Definition at line 68 of file gc.h.

◆ RUBY_MARK_ENTER

#define RUBY_MARK_ENTER (   msg)

Definition at line 64 of file gc.h.

◆ RUBY_MARK_FREE_DEBUG

#define RUBY_MARK_FREE_DEBUG   0

Definition at line 29 of file gc.h.

◆ RUBY_MARK_LEAVE

#define RUBY_MARK_LEAVE (   msg)

Definition at line 65 of file gc.h.

◆ RUBY_MARK_MOVABLE_UNLESS_NULL

#define RUBY_MARK_MOVABLE_UNLESS_NULL (   ptr)
Value:
do { \
VALUE markobj = (ptr); \
if (RTEST(markobj)) {rb_gc_mark_movable(markobj);} \
} while (0)

Definition at line 71 of file gc.h.

◆ RUBY_MARK_UNLESS_NULL

#define RUBY_MARK_UNLESS_NULL (   ptr)
Value:
do { \
VALUE markobj = (ptr); \
if (RTEST(markobj)) {rb_gc_mark(markobj);} \
} while (0)

Definition at line 75 of file gc.h.

◆ SET_MACHINE_STACK_END

#define SET_MACHINE_STACK_END (   p)    rb_gc_set_stack_end(p)

Definition at line 15 of file gc.h.

◆ STACK_DIR_UPPER

#define STACK_DIR_UPPER (   a,
 
)    STACK_UPPER(&stack_grow_dir_detection, (a), (b))

Definition at line 108 of file gc.h.

◆ STACK_GROW_DIR_DETECTION

#define STACK_GROW_DIR_DETECTION   VALUE stack_grow_dir_detection

Definition at line 107 of file gc.h.

◆ stack_growup_p

#define stack_growup_p (   x)
Value:
( \
ruby_stack_grow_direction : \
ruby_get_stack_grow_direction(x)) > 0)

Definition at line 88 of file gc.h.

◆ STACK_UPPER

#define STACK_UPPER (   x,
  a,
 
)    (stack_growup_p(x) ? (a) : (b))

Definition at line 92 of file gc.h.

◆ USE_CONSERVATIVE_STACK_END

#define USE_CONSERVATIVE_STACK_END

Definition at line 16 of file gc.h.

Function Documentation

◆ NOINLINE()

NOINLINE ( void   rb_gc_set_stack_endVALUE **stack_end_p)

◆ rb_gc_disable_no_rest()

VALUE rb_gc_disable_no_rest ( void  )

Definition at line 10741 of file gc.c.

References rb_objspace.

◆ rb_obj_info()

const char* rb_obj_info ( VALUE  obj)

Definition at line 13368 of file gc.c.

◆ rb_objspace_data_type_memsize()

size_t rb_objspace_data_type_memsize ( VALUE  obj)

Definition at line 2787 of file gc.c.

◆ rb_objspace_each_objects()

void rb_objspace_each_objects ( int(*)(void *start, void *end, size_t stride, void *data)  callback,
void *  data 
)

◆ rb_objspace_each_objects_without_setup()

void rb_objspace_each_objects_without_setup ( int(*)(void *, void *, size_t, void *)  callback,
void *  data 
)

◆ rb_objspace_garbage_object_p()

int rb_objspace_garbage_object_p ( VALUE  obj)

Definition at line 4306 of file gc.c.

References rb_objspace.

◆ rb_objspace_internal_object_p()

int rb_objspace_internal_object_p ( VALUE  obj)

Definition at line 3712 of file gc.c.

◆ rb_objspace_markable_object_p()

int rb_objspace_markable_object_p ( VALUE  obj)

Definition at line 4299 of file gc.c.

References rb_objspace.

◆ rb_objspace_marked_object_p()

int rb_objspace_marked_object_p ( VALUE  obj)

Definition at line 6846 of file gc.c.

◆ rb_objspace_reachable_objects_from()

void rb_objspace_reachable_objects_from ( VALUE  obj,
void(func)(VALUE, void *)  ,
void *  data 
)

Definition at line 11018 of file gc.c.

References during_gc, rb_bug(), and rb_objspace.

◆ rb_objspace_reachable_objects_from_root()

void rb_objspace_reachable_objects_from_root ( void(func)(const char *category, VALUE, void *)  ,
void *  data 
)

Definition at line 11051 of file gc.c.

References rb_objspace.

◆ rb_raw_obj_info()

const char* rb_raw_obj_info ( char *  buff,
const int  buff_size,
VALUE  obj 
)

Definition at line 13092 of file gc.c.

Referenced by rb_obj_info_dump(), rb_obj_info_dump_loc(), and ruby_debug_print_value().

◆ ruby_get_stack_grow_direction()

int ruby_get_stack_grow_direction ( volatile VALUE addr)

Definition at line 6197 of file gc.c.

References ruby_stack_grow_direction, and SET_MACHINE_STACK_END.

Variable Documentation

◆ ruby_stack_grow_direction

RUBY_EXTERN int ruby_stack_grow_direction

Definition at line 86 of file gc.h.

rb_gc_mark_movable
void rb_gc_mark_movable(VALUE)
Definition: gc.c:6830
ruby_stack_grow_direction
RUBY_EXTERN int ruby_stack_grow_direction
Definition: gc.h:86
ptr
struct RIMemo * ptr
Definition: debug.c:87
rb_gc_mark
void rb_gc_mark(VALUE)
Definition: gc.c:6836
RTEST
#define RTEST
Definition: special_consts.h:42