summaryrefslogtreecommitdiff
path: root/include/ruby
diff options
context:
space:
mode:
Diffstat (limited to 'include/ruby')
-rw-r--r--include/ruby/internal/core/rtypeddata.h12
-rw-r--r--include/ruby/internal/fl_type.h4
2 files changed, 7 insertions, 9 deletions
diff --git a/include/ruby/internal/core/rtypeddata.h b/include/ruby/internal/core/rtypeddata.h
index 4d9fd4a6ac..8e16c31d99 100644
--- a/include/ruby/internal/core/rtypeddata.h
+++ b/include/ruby/internal/core/rtypeddata.h
@@ -115,10 +115,8 @@
#define RUBY_TYPED_PROMOTED1 RUBY_TYPED_PROMOTED1
/** @endcond */
-#define IS_TYPED_DATA ((VALUE)1)
-#define TYPED_DATA_EMBEDDED ((VALUE)2)
-#define TYPED_DATA_PTR_FLAGS ((VALUE)3)
-#define TYPED_DATA_PTR_MASK (~TYPED_DATA_PTR_FLAGS)
+#define TYPED_DATA_EMBEDDED ((VALUE)1)
+#define TYPED_DATA_PTR_MASK (~(TYPED_DATA_EMBEDDED))
/**
* @private
@@ -181,9 +179,9 @@ rbimpl_typeddata_flags {
RUBY_TYPED_WB_PROTECTED = RUBY_FL_WB_PROTECTED, /* THIS FLAG DEPENDS ON Ruby version */
/**
- * This flag no longer in use
+ * This flag is used to distinguish RTypedData from deprecated RData objects.
*/
- RUBY_TYPED_UNUSED = RUBY_FL_UNUSED6,
+ RUBY_TYPED_FL_IS_TYPED_DATA = RUBY_FL_USERPRIV0,
/**
* This flag determines whether marking and compaction should be carried out
@@ -569,7 +567,7 @@ RBIMPL_ATTR_ARTIFICIAL()
static inline bool
rbimpl_rtypeddata_p(VALUE obj)
{
- return RTYPEDDATA(obj)->type & IS_TYPED_DATA;
+ return FL_TEST_RAW(obj, RUBY_TYPED_FL_IS_TYPED_DATA);
}
RBIMPL_ATTR_PURE_UNLESS_DEBUG()
diff --git a/include/ruby/internal/fl_type.h b/include/ruby/internal/fl_type.h
index 9e1f3dd15c..da8670a808 100644
--- a/include/ruby/internal/fl_type.h
+++ b/include/ruby/internal/fl_type.h
@@ -217,11 +217,11 @@ ruby_fl_type {
RUBY_FL_PROMOTED = (1<<5),
/**
- * This flag is no longer in use
+ * This flag meaning is type dependent, currently only used by T_DATA.
*
* @internal
*/
- RUBY_FL_UNUSED6 = (1<<6),
+ RUBY_FL_USERPRIV0 = (1<<6),
/**
* This flag has something to do with finalisers. A ruby object can have