diff options
author | Alan Wu <[email protected]> | 2020-11-25 16:35:40 -0500 |
---|---|---|
committer | Aaron Patterson <[email protected]> | 2021-01-26 16:24:01 -0800 |
commit | 216e6605a47fccbbadcb6b0b7e81dcf21547e14c (patch) | |
tree | e7fe7a5e5c3f65ef1a5dc20af394c09885ddceae | |
parent | 646131448eea616dfb388cfea84e34358caa7b47 (diff) |
Add compaction notes for class/module creation C APIs
Notes
Notes:
Merged: https://github.com/ruby/ruby/pull/3885
-rw-r--r-- | class.c | 8 | ||||
-rw-r--r-- | include/ruby/internal/module.h | 4 |
2 files changed, 12 insertions, 0 deletions
@@ -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); |