summaryrefslogtreecommitdiff
path: root/variable.c
diff options
context:
space:
mode:
authorJean Boussier <jean.boussier@gmail.com>2025-08-26 17:43:11 +0200
committerJean Boussier <jean.boussier@gmail.com>2025-08-27 12:41:07 +0200
commit5257e1298c4dc4e854eaa0a9fe5e6dc5c1495c91 (patch)
tree1423a3e9ae3e754d04db17754b8454d6724b6d9f /variable.c
parent5ff7b2c582a56fe7d92248adf093fd278a334066 (diff)
Replace ROBJECT_EMBED by ROBJECT_HEAP
The embed layout is way more common than the heap one, especially since WVA. I think it makes for more readable code to inverse the flag.
Diffstat (limited to 'variable.c')
-rw-r--r--variable.c20
1 files changed, 10 insertions, 10 deletions
diff --git a/variable.c b/variable.c
index b5620af27b..b0c364af59 100644
--- a/variable.c
+++ b/variable.c
@@ -1480,11 +1480,11 @@ obj_transition_too_complex(VALUE obj, st_table *table)
case T_OBJECT:
{
VALUE *old_fields = NULL;
- if (FL_TEST_RAW(obj, ROBJECT_EMBED)) {
- FL_UNSET_RAW(obj, ROBJECT_EMBED);
+ if (FL_TEST_RAW(obj, ROBJECT_HEAP)) {
+ old_fields = ROBJECT_FIELDS(obj);
}
else {
- old_fields = ROBJECT_FIELDS(obj);
+ FL_SET_RAW(obj, ROBJECT_HEAP);
}
RBASIC_SET_SHAPE_ID(obj, shape_id);
ROBJECT_SET_FIELDS_HASH(obj, table);
@@ -1614,12 +1614,12 @@ rb_ivar_delete(VALUE obj, ID id, VALUE undef)
}
if (RB_TYPE_P(obj, T_OBJECT) &&
- !RB_FL_TEST_RAW(obj, ROBJECT_EMBED) &&
+ FL_TEST_RAW(obj, ROBJECT_HEAP) &&
rb_obj_embedded_size(new_fields_count) <= rb_gc_obj_slot_size(obj)) {
// Re-embed objects when instances become small enough
// This is necessary because YJIT assumes that objects with the same shape
// have the same embeddedness for efficiency (avoid extra checks)
- RB_FL_SET_RAW(obj, ROBJECT_EMBED);
+ FL_UNSET_RAW(obj, ROBJECT_HEAP);
MEMCPY(ROBJECT_FIELDS(obj), fields, VALUE, new_fields_count);
xfree(fields);
}
@@ -1813,16 +1813,16 @@ rb_ensure_iv_list_size(VALUE obj, uint32_t current_len, uint32_t new_capacity)
{
RUBY_ASSERT(!rb_shape_obj_too_complex_p(obj));
- if (RBASIC(obj)->flags & ROBJECT_EMBED) {
+ if (FL_TEST_RAW(obj, ROBJECT_HEAP)) {
+ REALLOC_N(ROBJECT(obj)->as.heap.fields, VALUE, new_capacity);
+ }
+ else {
VALUE *ptr = ROBJECT_FIELDS(obj);
VALUE *newptr = ALLOC_N(VALUE, new_capacity);
MEMCPY(newptr, ptr, VALUE, current_len);
- RB_FL_UNSET_RAW(obj, ROBJECT_EMBED);
+ FL_SET_RAW(obj, ROBJECT_HEAP);
ROBJECT(obj)->as.heap.fields = newptr;
}
- else {
- REALLOC_N(ROBJECT(obj)->as.heap.fields, VALUE, new_capacity);
- }
}
static int