summaryrefslogtreecommitdiff
path: root/include
diff options
context:
space:
mode:
Diffstat (limited to 'include')
-rw-r--r--include/ruby/internal/core/rtypeddata.h9
-rw-r--r--include/ruby/internal/gc.h6
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()