diff options
author | Jean Boussier <[email protected]> | 2025-05-08 17:38:39 +0200 |
---|---|---|
committer | Jean Boussier <[email protected]> | 2025-05-09 10:22:51 +0200 |
commit | 7116b0a7f1398f18346ad6f9ba805e3877d45944 () | |
tree | 32110f3153bcd01121b5c437ff9a87f7889f3ee8 | |
parent | 30ef0f180b396314521d1309e7732ce921cd2fab (diff) |
Extract `rb_shape_free_all`
Notes: Merged: https://.com/ruby/ruby/pull/13283
-rw-r--r-- | shape.c | 15 | ||||
-rw-r--r-- | shape.h | 1 | ||||
-rw-r--r-- | vm.c | 11 |
3 files changed, 17 insertions, 10 deletions
@@ -1432,6 +1432,21 @@ Init_default_shapes(void) } void Init_shape(void) { #if SHAPE_DEBUG @@ -175,6 +175,7 @@ rb_shape_t *rb_shape_get_next_no_warnings(rb_shape_t *shape, VALUE obj, ID id); rb_shape_t *rb_shape_object_id_shape(VALUE obj); bool rb_shape_has_object_id(rb_shape_t *shape); attr_index_t rb_shape_object_id_index(rb_shape_t *shape); rb_shape_t *rb_shape_rebuild_shape(rb_shape_t *initial_shape, rb_shape_t *dest_shape); @@ -3115,16 +3115,7 @@ ruby_vm_destruct(rb_vm_t *vm) rb_id_table_free(RCLASS(rb_mRubyVMFrozenCore)->m_tbl); - rb_shape_t *cursor = rb_shape_get_root_shape(); - rb_shape_t *end = rb_shape_get_shape_by_id(GET_SHAPE_TREE()->next_shape_id); - while (cursor < end) { - // 0x1 == SINGLE_CHILD_P - if (cursor->edges && !(((uintptr_t)cursor->edges) & 0x1)) - rb_id_table_free(cursor->edges); - cursor += 1; - } - - xfree(GET_SHAPE_TREE()); st_free_table(vm->static_ext_inits); |