diff options
author | Peter Zhu <[email protected]> | 2023-06-13 16:19:33 -0400 |
---|---|---|
committer | Peter Zhu <[email protected]> | 2023-07-13 09:27:33 -0400 |
commit | 1e7b67f73370056c7521306b9f037b6cbccf640d (patch) | |
tree | 288d284f69cea8935adf323da99f84eff2bb7707 /variable.c | |
parent | fff4773085bd70bf14ace146388dd0b9d80f244a (diff) |
[Feature #19730] Remove transient heap
Notes
Notes:
Merged: https://github.com/ruby/ruby/pull/7942
Diffstat (limited to 'variable.c')
-rw-r--r-- | variable.c | 61 |
1 files changed, 4 insertions, 57 deletions
diff --git a/variable.c b/variable.c index 750ff04e1d..5a7b2f4611 100644 --- a/variable.c +++ b/variable.c @@ -33,7 +33,6 @@ #include "ruby/encoding.h" #include "ruby/st.h" #include "ruby/util.h" -#include "transient_heap.h" #include "shape.h" #include "symbol.h" #include "variable.h" @@ -1399,67 +1398,18 @@ generic_ivar_set(VALUE obj, ID id, VALUE val) static VALUE * obj_ivar_heap_alloc(VALUE obj, size_t newsize) { - VALUE *newptr = rb_transient_heap_alloc(obj, sizeof(VALUE) * newsize); - - if (newptr != NULL) { - ROBJ_TRANSIENT_SET(obj); - } - else { - ROBJ_TRANSIENT_UNSET(obj); - newptr = ALLOC_N(VALUE, newsize); - } - return newptr; + return ALLOC_N(VALUE, newsize); } static VALUE * obj_ivar_heap_realloc(VALUE obj, int32_t len, size_t newsize) { - VALUE *newptr; - int i; - - if (ROBJ_TRANSIENT_P(obj)) { - const VALUE *orig_ptr = ROBJECT(obj)->as.heap.ivptr; - newptr = obj_ivar_heap_alloc(obj, newsize); - - assert(newptr); - ROBJECT(obj)->as.heap.ivptr = newptr; - for (i=0; i<(int)len; i++) { - newptr[i] = orig_ptr[i]; - } - } - else { - REALLOC_N(ROBJECT(obj)->as.heap.ivptr, VALUE, newsize); - newptr = ROBJECT(obj)->as.heap.ivptr; - } + REALLOC_N(ROBJECT(obj)->as.heap.ivptr, VALUE, newsize); + VALUE *newptr = ROBJECT(obj)->as.heap.ivptr; return newptr; } -#if USE_TRANSIENT_HEAP -void -rb_obj_transient_heap_evacuate(VALUE obj, int promote) -{ - if (ROBJ_TRANSIENT_P(obj)) { - assert(!RB_FL_TEST_RAW(obj, ROBJECT_EMBED)); - - uint32_t len = ROBJECT_IV_CAPACITY(obj); - RUBY_ASSERT(!rb_shape_obj_too_complex(obj)); - const VALUE *old_ptr = ROBJECT_IVPTR(obj); - VALUE *new_ptr; - - if (promote) { - new_ptr = ALLOC_N(VALUE, len); - ROBJ_TRANSIENT_UNSET(obj); - } - else { - new_ptr = obj_ivar_heap_alloc(obj, len); - } - MEMCPY(new_ptr, old_ptr, VALUE, len); - ROBJECT(obj)->as.heap.ivptr = new_ptr; - } -} -#endif - void rb_ensure_iv_list_size(VALUE obj, uint32_t current_capacity, uint32_t new_capacity) { @@ -1575,10 +1525,7 @@ rb_obj_ivar_set(VALUE obj, ID id, VALUE val) rb_shape_set_too_complex(obj); RUBY_ASSERT(rb_shape_obj_too_complex(obj)); - if (ROBJ_TRANSIENT_P(obj)) { - ROBJ_TRANSIENT_UNSET(obj); - } - else if (!(RBASIC(obj)->flags & ROBJECT_EMBED)) { + if (!(RBASIC(obj)->flags & ROBJECT_EMBED)) { xfree(ROBJECT(obj)->as.heap.ivptr); } |