ruby-changes:74067
From: Jemma <ko1@a...>
Date: Tue, 18 Oct 2022 06:48:01 +0900 (JST)
Subject: [ruby-changes:74067] b54c8ba8fc (master): Simplified rb_obj_copy_ivar implementation
https://git.ruby-lang.org/ruby.git/commit/?id=b54c8ba8fc From b54c8ba8fc1a03446fa9ecfd7995ba8fafd20a3e Mon Sep 17 00:00:00 2001 From: Jemma Issroff <jemmaissroff@g...> Date: Mon, 17 Oct 2022 14:31:24 -0400 Subject: Simplified rb_obj_copy_ivar implementation --- object.c | 32 ++++++++------------------------ 1 file changed, 8 insertions(+), 24 deletions(-) diff --git a/object.c b/object.c index 929968c4cb..d0c0e34f82 100644 --- a/object.c +++ b/object.c @@ -268,37 +268,21 @@ rb_obj_singleton_class(VALUE obj) https://github.com/ruby/ruby/blob/trunk/object.c#L268 MJIT_FUNC_EXPORTED void rb_obj_copy_ivar(VALUE dest, VALUE obj) { - VALUE *dest_buf = ROBJECT_IVPTR(dest); - VALUE *src_buf = ROBJECT_IVPTR(obj); uint32_t dest_len = ROBJECT_NUMIV(dest); uint32_t src_len = ROBJECT_NUMIV(obj); - uint32_t max_len = dest_len < src_len ? src_len : dest_len; - rb_ensure_iv_list_size(dest, dest_len, max_len); - - dest_len = ROBJECT_NUMIV(dest); - uint32_t min_len = dest_len > src_len ? src_len : dest_len; - - if (RBASIC(obj)->flags & ROBJECT_EMBED) { - src_buf = ROBJECT(obj)->as.ary; - - // embedded -> embedded - if (RBASIC(dest)->flags & ROBJECT_EMBED) { - dest_buf = ROBJECT(dest)->as.ary; - } - // embedded -> extended - else { - dest_buf = ROBJECT(dest)->as.heap.ivptr; - } + if (dest_len < src_len) { + rb_ensure_iv_list_size(dest, dest_len, src_len); + RUBY_ASSERT(!(RBASIC(dest)->flags & ROBJECT_EMBED)); } - // extended -> extended else { - RUBY_ASSERT(!(RBASIC(dest)->flags & ROBJECT_EMBED)); - dest_buf = ROBJECT(dest)->as.heap.ivptr; - src_buf = ROBJECT(obj)->as.heap.ivptr; + RUBY_ASSERT((RBASIC(dest)->flags & ROBJECT_EMBED)); } - MEMCPY(dest_buf, src_buf, VALUE, min_len); + VALUE * dest_buf = ROBJECT_IVPTR(dest); + VALUE * src_buf = ROBJECT_IVPTR(obj); + + MEMCPY(dest_buf, src_buf, VALUE, ROBJECT_IV_COUNT(obj)); } static void -- cgit v1.2.3 -- ML: ruby-changes@q... Info: http://www.atdot.net/~ko1/quickml/