From 403f44ec2c5047367271f5ec7a07b0460631321b Mon Sep 17 00:00:00 2001 From: Peter Zhu Date: Tue, 16 Jul 2024 15:38:48 -0400 Subject: Make OBJ_ID_INCREMENT == RUBY_IMMEDIATE_MASK + 1 All the non-GC objects (i.e. immediates) have addresses such that `obj % RUBY_IMMEDIATE_MASK != 0` (except for `Qfalse`, which is 0). We can define `OBJ_ID_INCREMENT` as `RUBY_IMMEDIATE_MASK + 1` which should guarantee that GC objects never have conflicting object IDs with immediates. --- gc/default.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gc/default.c b/gc/default.c index 67f1c7dde2..560da7388b 100644 --- a/gc/default.c +++ b/gc/default.c @@ -1629,7 +1629,7 @@ object_id_hash(st_data_t n) return FIX2LONG(rb_hash((VALUE)n)); } -#define OBJ_ID_INCREMENT (BASE_SLOT_SIZE) +#define OBJ_ID_INCREMENT (RUBY_IMMEDIATE_MASK + 1) #define OBJ_ID_INITIAL (OBJ_ID_INCREMENT) static const struct st_hash_type object_id_hash_type = { -- cgit v1.2.3