diff options
| author | Peter Zhu <peter@peterzhu.ca> | 2022-11-18 10:39:09 -0500 |
|---|---|---|
| committer | Peter Zhu <peter@peterzhu.ca> | 2022-11-21 11:26:26 -0500 |
| commit | 09423876f9191a73ab428dc27eb5c436105048db (patch) | |
| tree | e1a5a717bd66cc3d9b6725da938ad9791af8a10f | |
| parent | 5f95228c76e6f6994eb4149217fe3e38f9ff8a27 (diff) | |
Let SHAPE_BITS take 32 bits on debug builds
The ractor_belonging_id has been moved out of the headers, so object
shapes can take the top 32 bits of the flags on debug builds.
Notes
Notes:
Merged: https://github.com/ruby/ruby/pull/6763
| -rw-r--r-- | ractor_core.h | 2 | ||||
| -rw-r--r-- | shape.h | 14 |
2 files changed, 2 insertions, 14 deletions
diff --git a/ractor_core.h b/ractor_core.h index d6b4a21e8d..968c12d291 100644 --- a/ractor_core.h +++ b/ractor_core.h @@ -291,8 +291,6 @@ rb_ractor_id(const rb_ractor_t *r) # define RACTOR_BELONGING_ID(obj) (*(uint32_t *)(((uintptr_t)(obj)) + rb_gc_obj_slot_size(obj))) uint32_t rb_ractor_current_id(void); -// If ractor check mode is enabled, shape bits needs to be smaller -STATIC_ASSERT(shape_bits, SHAPE_ID_NUM_BITS == 16); static inline void rb_ractor_setup_belonging_to(VALUE obj, uint32_t rid) @@ -12,22 +12,12 @@ typedef uint16_t attr_index_t; #define MAX_IVARS (attr_index_t)(-1) -#if RUBY_DEBUG || (defined(VM_CHECK_MODE) && VM_CHECK_MODE > 0) -# if SIZEOF_SHAPE_T == 4 -typedef uint32_t shape_id_t; -# define SHAPE_ID_NUM_BITS 16 -# else -typedef uint16_t shape_id_t; -# define SHAPE_ID_NUM_BITS 16 -# endif -#else -# if SIZEOF_SHAPE_T == 4 +#if SIZEOF_SHAPE_T == 4 typedef uint32_t shape_id_t; # define SHAPE_ID_NUM_BITS 32 -# else +#else typedef uint16_t shape_id_t; # define SHAPE_ID_NUM_BITS 16 -# endif #endif # define SHAPE_MASK (((uintptr_t)1 << SHAPE_ID_NUM_BITS) - 1) |
