1 #ifndef RBIMPL_RGENGC_H                               
    2 #define RBIMPL_RGENGC_H 
   65 #ifndef RGENGC_WB_PROTECTED_ARRAY 
   66 # define RGENGC_WB_PROTECTED_ARRAY 1 
   76 #ifndef RGENGC_WB_PROTECTED_HASH 
   77 # define RGENGC_WB_PROTECTED_HASH 1 
   87 #ifndef RGENGC_WB_PROTECTED_STRUCT 
   88 # define RGENGC_WB_PROTECTED_STRUCT 1 
   98 #ifndef RGENGC_WB_PROTECTED_STRING 
   99 # define RGENGC_WB_PROTECTED_STRING 1 
  109 #ifndef RGENGC_WB_PROTECTED_OBJECT 
  110 # define RGENGC_WB_PROTECTED_OBJECT 1 
  120 #ifndef RGENGC_WB_PROTECTED_REGEXP 
  121 # define RGENGC_WB_PROTECTED_REGEXP 1 
  131 #ifndef RGENGC_WB_PROTECTED_MATCH 
  132 # define RGENGC_WB_PROTECTED_MATCH 1 
  142 #ifndef RGENGC_WB_PROTECTED_CLASS 
  143 # define RGENGC_WB_PROTECTED_CLASS 1 
  153 #ifndef RGENGC_WB_PROTECTED_FLOAT 
  154 # define RGENGC_WB_PROTECTED_FLOAT 1 
  164 #ifndef RGENGC_WB_PROTECTED_COMPLEX 
  165 # define RGENGC_WB_PROTECTED_COMPLEX 1 
  175 #ifndef RGENGC_WB_PROTECTED_RATIONAL 
  176 # define RGENGC_WB_PROTECTED_RATIONAL 1 
  186 #ifndef RGENGC_WB_PROTECTED_BIGNUM 
  187 # define RGENGC_WB_PROTECTED_BIGNUM 1 
  201 #ifndef RGENGC_WB_PROTECTED_NODE_CREF 
  202 # define RGENGC_WB_PROTECTED_NODE_CREF 1 
  223 #define RB_OBJ_WRITE(old, slot, young) \ 
  224     RBIMPL_CAST(rb_obj_write((VALUE)(old), (VALUE *)(slot), (VALUE)(young), __FILE__, __LINE__)) 
  235 #define RB_OBJ_WRITTEN(old, oldv, young) \ 
  236     RBIMPL_CAST(rb_obj_written((VALUE)(old), (VALUE)(oldv), (VALUE)(young), __FILE__, __LINE__)) 
  239 #define OBJ_PROMOTED_RAW RB_OBJ_PROMOTED_RAW  
  240 #define OBJ_PROMOTED     RB_OBJ_PROMOTED      
  241 #define OBJ_WB_UNPROTECT RB_OBJ_WB_UNPROTECT  
  250 #define RB_OBJ_WB_UNPROTECT(x) rb_obj_wb_unprotect(x, __FILE__, __LINE__) 
  263 #define RB_OBJ_WB_UNPROTECT_FOR(type, obj) \ 
  264     (RGENGC_WB_PROTECTED_##type ? OBJ_WB_UNPROTECT(obj) : obj) 
  272 #define RGENGC_LOGGING_WB_UNPROTECT rb_gc_unprotect_logging 
  275 #define RB_OBJ_PROMOTED_RAW RB_OBJ_PROMOTED_RAW 
  276 #define RB_OBJ_PROMOTED     RB_OBJ_PROMOTED 
  353     const char *filename,
 
  361 #define RGENGC_LOGGING_OBJ_WRITTEN rb_gc_obj_written_logging 
  383     const char *filename,
 
  411     const char *filename,
 
  415 #ifdef RGENGC_LOGGING_WRITE 
  416     RGENGC_LOGGING_WRITE(a, slot, b, filename, line);
 
  421     rb_obj_written(a, 
RUBY_Qundef , b, filename, line);
 
Defines RBIMPL_ATTR_ARTIFICIAL.
#define RBIMPL_ATTR_ARTIFICIAL()
Wraps (or simulates) __attribute__((artificial))
#define RBIMPL_ASSERT_OR_ASSUME(expr)
This is either RUBY_ASSERT or RBIMPL_ASSUME, depending on RUBY_DEBUG.
Tweaking visibility of C variables/functions.
#define RBIMPL_SYMBOL_EXPORT_END()
Counterpart of RBIMPL_SYMBOL_EXPORT_BEGIN.
#define RBIMPL_SYMBOL_EXPORT_BEGIN()
Shortcut macro equivalent to RUBY_SYMBOL_EXPORT_BEGIN extern "C" {.
static bool RB_FL_ABLE(VALUE obj)
Checks if the object is flaggable.
static bool RB_FL_ANY_RAW(VALUE obj, VALUE flags)
This is an implenentation detail of RB_FL_ANY().
@ RUBY_FL_PROMOTED
This flag has something to do with our garbage collector.
Defines RBIMPL_ATTR_MAYBE_UNUSED.
#define RBIMPL_ATTR_MAYBE_UNUSED()
Wraps (or simulates) [[maybe_unused]]
Defines RBIMPL_ATTR_PURE.
#define RBIMPL_ATTR_PURE_UNLESS_DEBUG()
Enables RBIMPL_ATTR_PURE if and only if.
static VALUE rb_obj_wb_unprotect(VALUE x, const char *filename, int line)
This is the implementation of RB_OBJ_WB_UNPROTECT().
void rb_gc_writebarrier(VALUE old, VALUE young)
This is the implementation of RB_OBJ_WRITE().
void rb_gc_writebarrier_unprotect(VALUE obj)
This is the implementation of RB_OBJ_WB_UNPROTECT().
static bool RB_OBJ_PROMOTED(VALUE obj)
Tests if the object is "promoted" – that is, whether the object experienced one or more GC marks.
static bool RB_OBJ_PROMOTED_RAW(VALUE obj)
This is the implementation of RB_OBJ_PROMOTED().
Defines enum ruby_special_consts.
static bool RB_SPECIAL_CONST_P(VALUE obj)
Checks if the given object is of enum ruby_special_consts.
@ RUBY_Qundef
Represents so-called undef.
uintptr_t VALUE
Type that represents a Ruby object.