diff options
author | Aaron Patterson <[email protected]> | 2022-11-17 15:57:11 -0800 |
---|---|---|
committer | Aaron Patterson <[email protected]> | 2022-11-18 08:31:56 -0800 |
commit | 10788166e7e568fdcd0b748e8d5dab442dcdc7ef (patch) | |
tree | ee195186a3fed8333bc1875f66ddab0c85c3d7db /shape.h | |
parent | f0ce1186620273a1182e6084559765143099eb88 (diff) |
Differentiate T_OBJECT shapes from other objects
We would like to differentiate types of objects via their shape. This
commit adds a special T_OBJECT shape when we allocate an instance of
T_OBJECT. This allows us to avoid testing whether an object is an
instance of a T_OBJECT or not, we can just check the shape.
Notes
Notes:
Merged: https://github.com/ruby/ruby/pull/6758
Diffstat (limited to 'shape.h')
-rw-r--r-- | shape.h | 3 |
1 files changed, 2 insertions, 1 deletions
@@ -42,7 +42,7 @@ typedef uint16_t shape_id_t; # define ROOT_SHAPE_ID 0x0 // We use SIZE_POOL_COUNT number of shape IDs for transitions out of different size pools // The next available shapd ID will be the SPECIAL_CONST_SHAPE_ID -# define SPECIAL_CONST_SHAPE_ID SIZE_POOL_COUNT +# define SPECIAL_CONST_SHAPE_ID (SIZE_POOL_COUNT * 2) struct rb_shape { struct rb_id_table * edges; // id_table from ID (ivar) to next shape @@ -63,6 +63,7 @@ enum shape_type { SHAPE_CAPACITY_CHANGE, SHAPE_IVAR_UNDEF, SHAPE_INITIAL_CAPACITY, + SHAPE_T_OBJECT, }; #if SHAPE_IN_BASIC_FLAGS |