diff options
author | Jean Boussier <[email protected]> | 2025-06-12 13:55:05 +0200 |
---|---|---|
committer | Jean Boussier <[email protected]> | 2025-06-12 17:08:22 +0200 |
commit | 0292b702c4296f7dde2a05a7a027c3395fbd0f78 (patch) | |
tree | 224379956d2c541d99e66dae64a76520b8c07904 | |
parent | d55c463d563800311d6dab23edeec16abd45068d (diff) |
shape.h: make RSHAPE static inline
Since the shape_tree_ptr is `extern` it should be possible to
fully inline `RSHAPE`.
Notes
Notes:
Merged: https://github.com/ruby/ruby/pull/13596
-rw-r--r-- | shape.c | 5 | ||||
-rw-r--r-- | shape.h | 12 |
2 files changed, 12 insertions, 5 deletions
@@ -383,10 +383,7 @@ rb_shape_each_shape_id(each_shape_callback callback, void *data) RUBY_FUNC_EXPORTED rb_shape_t * rb_shape_lookup(shape_id_t shape_id) { - uint32_t offset = (shape_id & SHAPE_ID_OFFSET_MASK); - RUBY_ASSERT(offset != INVALID_SHAPE_ID); - - return &GET_SHAPE_TREE()->shape_list[offset]; + return RSHAPE(shape_id); } RUBY_FUNC_EXPORTED shape_id_t @@ -92,7 +92,10 @@ typedef struct { redblack_node_t *shape_cache; unsigned int cache_size; } rb_shape_tree_t; + +RUBY_SYMBOL_EXPORT_BEGIN RUBY_EXTERN rb_shape_tree_t *rb_shape_tree_ptr; +RUBY_SYMBOL_EXPORT_END union rb_attr_index_cache { uint64_t pack; @@ -149,7 +152,14 @@ RBASIC_SET_SHAPE_ID(VALUE obj, shape_id_t shape_id) #endif } -#define RSHAPE rb_shape_lookup +static inline rb_shape_t * +RSHAPE(shape_id_t shape_id) +{ + uint32_t offset = (shape_id & SHAPE_ID_OFFSET_MASK); + RUBY_ASSERT(offset != INVALID_SHAPE_ID); + + return &GET_SHAPE_TREE()->shape_list[offset]; +} int32_t rb_shape_id_offset(void); |