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);