Extract rb_shape_get_parent
helper
Extract an `rb_shape_get_parent` method instead of continually calling `rb_shape_get_shape_by_id(shape->parent_id)`
This commit is contained in:
parent
354791c248
commit
7ee1cacb84
Notes:
git
2022-11-10 18:03:09 +00:00
2
object.c
2
object.c
@ -284,7 +284,7 @@ rb_obj_copy_ivar(VALUE dest, VALUE obj)
|
|||||||
|
|
||||||
// The copy should be mutable, so we don't want the frozen shape
|
// The copy should be mutable, so we don't want the frozen shape
|
||||||
if (rb_shape_frozen_shape_p(src_shape)) {
|
if (rb_shape_frozen_shape_p(src_shape)) {
|
||||||
shape_to_set_on_dest = rb_shape_get_shape_by_id(src_shape->parent_id);
|
shape_to_set_on_dest = rb_shape_get_parent(src_shape);
|
||||||
}
|
}
|
||||||
|
|
||||||
src_buf = ROBJECT_IVPTR(obj);
|
src_buf = ROBJECT_IVPTR(obj);
|
||||||
|
16
shape.c
16
shape.c
@ -51,6 +51,12 @@ rb_shape_get_shape_by_id_without_assertion(shape_id_t shape_id)
|
|||||||
return shape;
|
return shape;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
rb_shape_t *
|
||||||
|
rb_shape_get_parent(rb_shape_t * shape)
|
||||||
|
{
|
||||||
|
return rb_shape_get_shape_by_id(shape->parent_id);
|
||||||
|
}
|
||||||
|
|
||||||
#if !SHAPE_IN_BASIC_FLAGS
|
#if !SHAPE_IN_BASIC_FLAGS
|
||||||
shape_id_t
|
shape_id_t
|
||||||
rb_rclass_shape_id(VALUE obj)
|
rb_rclass_shape_id(VALUE obj)
|
||||||
@ -105,7 +111,7 @@ rb_shape_lookup_id(rb_shape_t* shape, ID id, enum shape_type shape_type)
|
|||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
shape = rb_shape_get_shape_by_id(shape->parent_id);
|
shape = rb_shape_get_parent(shape);
|
||||||
}
|
}
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
@ -273,7 +279,7 @@ rb_shape_get_iv_index(rb_shape_t * shape, ID id, attr_index_t *value)
|
|||||||
rb_bug("Ivar should not exist on transition\n");
|
rb_bug("Ivar should not exist on transition\n");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
shape = rb_shape_get_shape_by_id(shape->parent_id);
|
shape = rb_shape_get_parent(shape);
|
||||||
}
|
}
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
@ -338,7 +344,7 @@ rb_shape_rebuild_shape(rb_shape_t * initial_shape, rb_shape_t * dest_shape)
|
|||||||
rb_shape_t * midway_shape;
|
rb_shape_t * midway_shape;
|
||||||
|
|
||||||
if (dest_shape->type != SHAPE_ROOT) {
|
if (dest_shape->type != SHAPE_ROOT) {
|
||||||
midway_shape = rb_shape_rebuild_shape(initial_shape, rb_shape_get_shape_by_id(dest_shape->parent_id));
|
midway_shape = rb_shape_rebuild_shape(initial_shape, rb_shape_get_parent(dest_shape));
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
midway_shape = initial_shape;
|
midway_shape = initial_shape;
|
||||||
@ -504,7 +510,7 @@ rb_shape_export_depth(VALUE self)
|
|||||||
unsigned int depth = 0;
|
unsigned int depth = 0;
|
||||||
while (shape->parent_id != INVALID_SHAPE_ID) {
|
while (shape->parent_id != INVALID_SHAPE_ID) {
|
||||||
depth++;
|
depth++;
|
||||||
shape = rb_shape_get_shape_by_id(shape->parent_id);
|
shape = rb_shape_get_parent(shape);
|
||||||
}
|
}
|
||||||
return INT2NUM(depth);
|
return INT2NUM(depth);
|
||||||
}
|
}
|
||||||
@ -515,7 +521,7 @@ rb_shape_parent(VALUE self)
|
|||||||
rb_shape_t * shape;
|
rb_shape_t * shape;
|
||||||
TypedData_Get_Struct(self, rb_shape_t, &shape_data_type, shape);
|
TypedData_Get_Struct(self, rb_shape_t, &shape_data_type, shape);
|
||||||
if (shape->parent_id != INVALID_SHAPE_ID) {
|
if (shape->parent_id != INVALID_SHAPE_ID) {
|
||||||
return rb_shape_t_to_rb_cShape(rb_shape_get_shape_by_id(shape->parent_id));
|
return rb_shape_t_to_rb_cShape(rb_shape_get_parent(shape));
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
return Qnil;
|
return Qnil;
|
||||||
|
1
shape.h
1
shape.h
@ -133,6 +133,7 @@ bool rb_shape_root_shape_p(rb_shape_t* shape);
|
|||||||
rb_shape_t * rb_shape_get_root_shape(void);
|
rb_shape_t * rb_shape_get_root_shape(void);
|
||||||
|
|
||||||
rb_shape_t* rb_shape_get_shape_by_id_without_assertion(shape_id_t shape_id);
|
rb_shape_t* rb_shape_get_shape_by_id_without_assertion(shape_id_t shape_id);
|
||||||
|
rb_shape_t * rb_shape_get_parent(rb_shape_t * shape);
|
||||||
|
|
||||||
MJIT_SYMBOL_EXPORT_BEGIN
|
MJIT_SYMBOL_EXPORT_BEGIN
|
||||||
rb_shape_t* rb_shape_get_shape_by_id(shape_id_t shape_id);
|
rb_shape_t* rb_shape_get_shape_by_id(shape_id_t shape_id);
|
||||||
|
@ -1583,7 +1583,7 @@ iterate_over_shapes_with_callback(rb_shape_t *shape, rb_ivar_foreach_callback_fu
|
|||||||
case SHAPE_ROOT:
|
case SHAPE_ROOT:
|
||||||
return;
|
return;
|
||||||
case SHAPE_IVAR:
|
case SHAPE_IVAR:
|
||||||
iterate_over_shapes_with_callback(rb_shape_get_shape_by_id(shape->parent_id), callback, itr_data);
|
iterate_over_shapes_with_callback(rb_shape_get_parent(shape), callback, itr_data);
|
||||||
VALUE * iv_list;
|
VALUE * iv_list;
|
||||||
switch (BUILTIN_TYPE(itr_data->obj)) {
|
switch (BUILTIN_TYPE(itr_data->obj)) {
|
||||||
case T_OBJECT:
|
case T_OBJECT:
|
||||||
@ -1606,7 +1606,7 @@ iterate_over_shapes_with_callback(rb_shape_t *shape, rb_ivar_foreach_callback_fu
|
|||||||
case SHAPE_CAPACITY_CHANGE:
|
case SHAPE_CAPACITY_CHANGE:
|
||||||
case SHAPE_FROZEN:
|
case SHAPE_FROZEN:
|
||||||
case SHAPE_IVAR_UNDEF:
|
case SHAPE_IVAR_UNDEF:
|
||||||
iterate_over_shapes_with_callback(rb_shape_get_shape_by_id(shape->parent_id), callback, itr_data);
|
iterate_over_shapes_with_callback(rb_shape_get_parent(shape), callback, itr_data);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user