diff options
author | Nobuyoshi Nakada <nobu@ruby-lang.org> | 2023-03-24 18:07:02 +0900 |
---|---|---|
committer | Aaron Patterson <aaron.patterson@gmail.com> | 2023-03-24 13:52:55 -0700 |
commit | 27b1a2992f7bebd9db0b0779cc7fe9b9faf5dca4 (patch) | |
tree | 4bb23a586e9bc63d9bcab6d30362f272e7e4ba5c /shape.h | |
parent | 6c60006de5cfd75f10a1b4a3d822e2de41d22db6 (diff) |
Adjust SHAPE_BUFFER_SIZE with shape_id_t
On platforms where `shape_id_t` is 16-bits, 0x80000 is out of range of
this type.
```
../src/shape.c: In function ‘shape_alloc’:
../src/shape.c:129:18: warning: comparison is always false due to limited range of data type [-Wtype-limits]
129 | if (shape_id == MAX_SHAPE_ID) {
| ^~
```
Diffstat (limited to 'shape.h')
-rw-r--r-- | shape.h | 6 |
1 files changed, 3 insertions, 3 deletions
@@ -3,7 +3,7 @@ #include "internal/gc.h" -#if (SIZEOF_UINT64_T == SIZEOF_VALUE) +#if (SIZEOF_UINT64_T <= SIZEOF_VALUE) #define SIZEOF_SHAPE_T 4 #define SHAPE_IN_BASIC_FLAGS 1 typedef uint32_t attr_index_t; @@ -18,9 +18,11 @@ typedef uint16_t attr_index_t; #if SIZEOF_SHAPE_T == 4 typedef uint32_t shape_id_t; # define SHAPE_ID_NUM_BITS 32 +# define SHAPE_BUFFER_SIZE 0x80000 #else typedef uint16_t shape_id_t; # define SHAPE_ID_NUM_BITS 16 +# define SHAPE_BUFFER_SIZE 0x8000 #endif # define SHAPE_MASK (((uintptr_t)1 << SHAPE_ID_NUM_BITS) - 1) @@ -28,8 +30,6 @@ typedef uint16_t shape_id_t; # define SHAPE_FLAG_SHIFT ((SIZEOF_VALUE * 8) - SHAPE_ID_NUM_BITS) -# define SHAPE_BUFFER_SIZE 0x80000 - # define SHAPE_MAX_VARIATIONS 8 # define SHAPE_MAX_NUM_IVS 80 |