diff options
Diffstat (limited to 'include')
-rw-r--r-- | include/ruby/internal/core/rtypeddata.h | 9 | ||||
-rw-r--r-- | include/ruby/internal/gc.h | 6 |
2 files changed, 14 insertions, 1 deletions
diff --git a/include/ruby/internal/core/rtypeddata.h b/include/ruby/internal/core/rtypeddata.h index bbf208867d..9d91a3e3f1 100644 --- a/include/ruby/internal/core/rtypeddata.h +++ b/include/ruby/internal/core/rtypeddata.h @@ -176,7 +176,14 @@ rbimpl_typeddata_flags { * This flag is mysterious. It seems nobody is currently using it. The * intention of this flag is also unclear. We need further investigations. */ - RUBY_TYPED_PROMOTED1 = RUBY_FL_PROMOTED1 /* THIS FLAG DEPENDS ON Ruby version */ + RUBY_TYPED_PROMOTED1 = RUBY_FL_PROMOTED1, /* THIS FLAG DEPENDS ON Ruby version */ + + /** + * This flag determines whether marking and compaction should be carried out + * using the dmark/dcompact callback functions or whether we should mark + * declaratively using a list of references defined inside the data struct we're wrapping + */ + RUBY_TYPED_DECL_MARKING = RUBY_FL_USER2 }; /** diff --git a/include/ruby/internal/gc.h b/include/ruby/internal/gc.h index fb14b34211..bc81883e0e 100644 --- a/include/ruby/internal/gc.h +++ b/include/ruby/internal/gc.h @@ -44,6 +44,12 @@ RBIMPL_SYMBOL_EXPORT_BEGIN() +#define REF_EDGE(s, p) (offsetof(struct s, p)) +#define REFS_LIST_PTR(l) ((RUBY_DATA_FUNC)l) +#define RUBY_REF_END SIZE_MAX +#define RUBY_REFERENCES_START(t) static size_t t[] = { +#define RUBY_REFERENCES_END RUBY_REF_END, }; + /* gc.c */ RBIMPL_ATTR_COLD() |