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.
This commit is contained in:
parent
5f95228c76
commit
09423876f9
Notes:
git
2022-11-21 16:26:52 +00:00
@ -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)))
|
# define RACTOR_BELONGING_ID(obj) (*(uint32_t *)(((uintptr_t)(obj)) + rb_gc_obj_slot_size(obj)))
|
||||||
|
|
||||||
uint32_t rb_ractor_current_id(void);
|
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
|
static inline void
|
||||||
rb_ractor_setup_belonging_to(VALUE obj, uint32_t rid)
|
rb_ractor_setup_belonging_to(VALUE obj, uint32_t rid)
|
||||||
|
14
shape.h
14
shape.h
@ -12,22 +12,12 @@ typedef uint16_t attr_index_t;
|
|||||||
|
|
||||||
#define MAX_IVARS (attr_index_t)(-1)
|
#define MAX_IVARS (attr_index_t)(-1)
|
||||||
|
|
||||||
#if RUBY_DEBUG || (defined(VM_CHECK_MODE) && VM_CHECK_MODE > 0)
|
#if SIZEOF_SHAPE_T == 4
|
||||||
# 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
|
|
||||||
typedef uint32_t shape_id_t;
|
typedef uint32_t shape_id_t;
|
||||||
# define SHAPE_ID_NUM_BITS 32
|
# define SHAPE_ID_NUM_BITS 32
|
||||||
# else
|
#else
|
||||||
typedef uint16_t shape_id_t;
|
typedef uint16_t shape_id_t;
|
||||||
# define SHAPE_ID_NUM_BITS 16
|
# define SHAPE_ID_NUM_BITS 16
|
||||||
# endif
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
# define SHAPE_MASK (((uintptr_t)1 << SHAPE_ID_NUM_BITS) - 1)
|
# define SHAPE_MASK (((uintptr_t)1 << SHAPE_ID_NUM_BITS) - 1)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user