diff options
| author | Peter Zhu <peter@peterzhu.ca> | 2025-02-18 12:58:40 -0500 |
|---|---|---|
| committer | Peter Zhu <peter@peterzhu.ca> | 2025-02-19 09:47:28 -0500 |
| commit | 7b6e07ea93cfc42bfb8bdf875555d2c8c7d5e507 (patch) | |
| tree | b798642d9ecae2c2355a96339f6f2c6f7b329fa4 /internal | |
| parent | 273e35cdcc04c6c68066a963157896472a2d1eb3 (diff) | |
Add rb_gc_object_metadata API
This function replaces the internal rb_obj_gc_flags API. rb_gc_object_metadata
returns an array of name and value pairs, with the last element having
0 for the name.
Notes
Notes:
Merged: https://github.com/ruby/ruby/pull/12777
Diffstat (limited to 'internal')
| -rw-r--r-- | internal/gc.h | 10 |
1 files changed, 8 insertions, 2 deletions
diff --git a/internal/gc.h b/internal/gc.h index 1407f4b988..4e9b4554e8 100644 --- a/internal/gc.h +++ b/internal/gc.h @@ -127,7 +127,13 @@ struct rb_objspace; /* in vm_core.h */ rb_wb_protected_newobj_of((ec ? ec : GET_EC()), (c), (f) & ~FL_WB_PROTECTED, s) : \ rb_wb_unprotected_newobj_of((c), (f), s)) -#define RB_OBJ_GC_FLAGS_MAX 6 /* used in ext/objspace */ +#ifndef RB_GC_OBJECT_METADATA_ENTRY_DEFINED +# define RB_GC_OBJECT_METADATA_ENTRY_DEFINED +struct rb_gc_object_metadata_entry { + ID name; + VALUE val; +}; +#endif #ifndef USE_UNALIGNED_MEMBER_ACCESS # define UNALIGNED_MEMBER_ACCESS(expr) (expr) @@ -244,7 +250,7 @@ const char *rb_objspace_data_type_name(VALUE obj); VALUE rb_wb_protected_newobj_of(struct rb_execution_context_struct *, VALUE, VALUE, size_t); VALUE rb_wb_unprotected_newobj_of(VALUE, VALUE, size_t); size_t rb_obj_memsize_of(VALUE); -size_t rb_obj_gc_flags(VALUE, ID[], size_t); +struct rb_gc_object_metadata_entry *rb_gc_object_metadata(VALUE obj); void rb_gc_mark_values(long n, const VALUE *values); void rb_gc_mark_vm_stack_values(long n, const VALUE *values); void rb_gc_update_values(long n, VALUE *values); |
