|
#define | USE_RGENGC 1 |
|
#define | USE_RINCGC 1 |
| This is a compile-time flag to enable/disable incremental GC feature. More...
|
|
#define | RGENGC_WB_PROTECTED_ARRAY 1 |
| This is a compile-time flag to enable/disable write barrier for struct RArray. More...
|
|
#define | RGENGC_WB_PROTECTED_HASH 1 |
| This is a compile-time flag to enable/disable write barrier for struct RHash. More...
|
|
#define | RGENGC_WB_PROTECTED_STRUCT 1 |
| This is a compile-time flag to enable/disable write barrier for struct RStruct. More...
|
|
#define | RGENGC_WB_PROTECTED_STRING 1 |
| This is a compile-time flag to enable/disable write barrier for struct RString. More...
|
|
#define | RGENGC_WB_PROTECTED_OBJECT 1 |
| This is a compile-time flag to enable/disable write barrier for struct RObject. More...
|
|
#define | RGENGC_WB_PROTECTED_REGEXP 1 |
| This is a compile-time flag to enable/disable write barrier for struct RRegexp. More...
|
|
#define | RGENGC_WB_PROTECTED_MATCH 1 |
| This is a compile-time flag to enable/disable write barrier for struct RMatch. More...
|
|
#define | RGENGC_WB_PROTECTED_CLASS 1 |
| This is a compile-time flag to enable/disable write barrier for struct RClass. More...
|
|
#define | RGENGC_WB_PROTECTED_FLOAT 1 |
| This is a compile-time flag to enable/disable write barrier for struct RFloat. More...
|
|
#define | RGENGC_WB_PROTECTED_COMPLEX 1 |
| This is a compile-time flag to enable/disable write barrier for struct RComplex. More...
|
|
#define | RGENGC_WB_PROTECTED_RATIONAL 1 |
| This is a compile-time flag to enable/disable write barrier for struct RRational. More...
|
|
#define | RGENGC_WB_PROTECTED_BIGNUM 1 |
| This is a compile-time flag to enable/disable write barrier for struct RBignum. More...
|
|
#define | RGENGC_WB_PROTECTED_NODE_CREF 1 |
|
#define | RB_OBJ_WRITE(old, slot, young) RBIMPL_CAST(rb_obj_write((VALUE)(old), (VALUE *)(slot), (VALUE)(young), __FILE__, __LINE__)) |
| Declaration of a "back" pointer. More...
|
|
#define | RB_OBJ_WRITTEN(old, oldv, young) RBIMPL_CAST(rb_obj_written((VALUE)(old), (VALUE)(oldv), (VALUE)(young), __FILE__, __LINE__)) |
| Identical to RB_OBJ_WRITE(), except it doesn't write any values, but only a WB declaration. More...
|
|
#define | OBJ_PROMOTED_RAW RB_OBJ_PROMOTED_RAW |
| Old name of RB_OBJ_PROMOTED_RAW. More...
|
|
#define | OBJ_PROMOTED RB_OBJ_PROMOTED |
| Old name of RB_OBJ_PROMOTED. More...
|
|
#define | OBJ_WB_UNPROTECT RB_OBJ_WB_UNPROTECT |
| Old name of RB_OBJ_WB_UNPROTECT. More...
|
|
#define | RB_OBJ_WB_UNPROTECT(x) rb_obj_wb_unprotect(x, __FILE__, __LINE__) |
| Asserts that the passed object is not fenced by write barriers. More...
|
|
#define | RB_OBJ_WB_UNPROTECT_FOR(type, obj) (RGENGC_WB_PROTECTED_##type ? OBJ_WB_UNPROTECT(obj) : obj) |
| Identical to RB_OBJ_WB_UNPROTECT(), except it can also assert that the given object is of given type. More...
|
|
#define | RGENGC_LOGGING_WB_UNPROTECT rb_gc_unprotect_logging |
| This is an implementation detail of rb_obj_wb_unprotect(). More...
|
|
#define | RGENGC_LOGGING_OBJ_WRITTEN rb_gc_obj_written_logging |
|
RGENGC write-barrier APIs.
- Author
- Ruby developers ruby-.nosp@m.core.nosp@m.@ruby.nosp@m.-lan.nosp@m.g.org
- Copyright
- This file is a part of the programming language Ruby. Permission is hereby granted, to either redistribute and/or modify this file, provided that the conditions mentioned in the file COPYING are met. Consult the file for details.
- Warning
- Symbols prefixed with either
RBIMPL
or rbimpl
are implementation details. Don't take them as canon. They could rapidly appear then vanish. The name (path) of this header file is also an implementation detail. Do not expect it to persist at the place it is now. Developers are free to move it anywhere anytime at will.
- Note
- To ruby-core: remember that this header can be possibly recursively included from extension libraries written in C++. Do not expect for instance
__VA_ARGS__
is always available. We assume C99 for ruby itself but we don't assume languages of extension libraries. They could be written in C++98.
- See also
- Sasada, K., "Gradual write-barrier insertion into a Ruby
interpreter", in proceedings of the 2019 ACM SIGPLAN International Symposium on Memory Management (ISMM 2019), pp 115-121, 2019. https://doi.org/10.1145/3315573.3329986
Definition in file rgengc.h.