From 7b6e07ea93cfc42bfb8bdf875555d2c8c7d5e507 Mon Sep 17 00:00:00 2001 From: Peter Zhu Date: Tue, 18 Feb 2025 12:58:40 -0500 Subject: 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. --- internal/gc.h | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) (limited to 'internal') 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); -- cgit v1.2.3