summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--class.c8
-rw-r--r--include/ruby/internal/module.h4
2 files changed, 12 insertions, 0 deletions
diff --git a/class.c b/class.c
index 56185b4cf2..8cd96f6346 100644
--- a/class.c
+++ b/class.c
@@ -791,6 +791,7 @@ rb_define_class(const char *name, VALUE super)
*
* \note if a class named \a name is already defined and its superclass is
* \a super, the function just returns the defined class.
+ * \note the compaction GC does not move classes returned by this function.
*/
VALUE
rb_define_class_under(VALUE outer, const char *name, VALUE super)
@@ -814,6 +815,7 @@ rb_define_class_under(VALUE outer, const char *name, VALUE super)
*
* \note if a class named \a name is already defined and its superclass is
* \a super, the function just returns the defined class.
+ * \note the compaction GC does not move classes returned by this function.
*/
VALUE
rb_define_class_id_under(VALUE outer, ID id, VALUE super)
@@ -866,6 +868,9 @@ rb_define_module_id(ID id)
return rb_module_new();
}
+/*!
+ * \note the compaction GC does not move modules returned by this function.
+ */
VALUE
rb_define_module(const char *name)
{
@@ -890,6 +895,9 @@ rb_define_module(const char *name)
return module;
}
+/*!
+ * \note the compaction GC does not move modules returned by this function.
+ */
VALUE
rb_define_module_under(VALUE outer, const char *name)
{
diff --git a/include/ruby/internal/module.h b/include/ruby/internal/module.h
index 0f2dfdb1be..1dc6b820cc 100644
--- a/include/ruby/internal/module.h
+++ b/include/ruby/internal/module.h
@@ -25,6 +25,10 @@
RBIMPL_SYMBOL_EXPORT_BEGIN()
+/**
+ * GC compaction note: class and modules returned by these four functions
+ * do not move.
+ */
VALUE rb_define_class(const char*,VALUE);
VALUE rb_define_module(const char*);
VALUE rb_define_class_under(VALUE, const char*, VALUE);