From d9dcb4461ed90b2e006e2120f3dad180f8045814 Mon Sep 17 00:00:00 2001 From: Leonardo de Moura Date: Tue, 21 Feb 2017 15:29:55 -0800 Subject: [PATCH] perf(library/vm/vm_array): minor optimization --- src/library/vm/vm_array.cpp | 26 +++++++++++++------------- 1 file changed, 13 insertions(+), 13 deletions(-) diff --git a/src/library/vm/vm_array.cpp b/src/library/vm/vm_array.cpp index b0341d2d30..d5377c0eaf 100644 --- a/src/library/vm/vm_array.cpp +++ b/src/library/vm/vm_array.cpp @@ -74,37 +74,37 @@ vm_obj array_read(vm_obj const &, vm_obj const &, vm_obj const & a, vm_obj const vm_obj array_write(vm_obj const &, vm_obj const &, vm_obj const & a, vm_obj const & i, vm_obj const & v) { /* TODO(Leo): handle case where n is too big */ unsigned idx = force_to_unsigned(i); - lean_vm_check(idx < to_array(a).size()); + parray const & p = to_array(a); + lean_vm_check(idx < p.size()); if (a.raw()->get_rc() == 1) { - parray & new_a = const_cast &>(to_array(a)); - new_a.set(idx, v); - return to_obj(new_a); + const_cast &>(p).set(idx, v); + return a; } else { - parray new_a = to_array(a); + parray new_a = p; new_a.set(idx, v); return to_obj(new_a); } } vm_obj array_push_back(vm_obj const &, vm_obj const &, vm_obj const & a, vm_obj const & v) { + parray const & p = to_array(a); if (a.raw()->get_rc() == 1) { - parray & new_a = const_cast &>(to_array(a)); - new_a.push_back(v); - return to_obj(new_a); + const_cast &>(p).push_back(v); + return a; } else { - parray new_a = to_array(a); + parray new_a = p; new_a.push_back(v); return to_obj(new_a); } } vm_obj array_pop_back(vm_obj const &, vm_obj const &, vm_obj const & a) { + parray const & p = to_array(a); if (a.raw()->get_rc() == 1) { - parray & new_a = const_cast &>(to_array(a)); - new_a.pop_back(); - return to_obj(new_a); + const_cast &>(p).pop_back(); + return a; } else { - parray new_a = to_array(a); + parray new_a = p; new_a.pop_back(); return to_obj(new_a); }