diff --git a/runtime/vm/native_arguments.h b/runtime/vm/native_arguments.h index d2df92c20d1..7b7360398f5 100644 --- a/runtime/vm/native_arguments.h +++ b/runtime/vm/native_arguments.h @@ -84,8 +84,7 @@ class NativeArguments { ObjectPtr ArgAt(int index) const { ASSERT((index >= 0) && (index < ArgCount())); - ObjectPtr* arg_ptr = - &(argv_[ReverseArgOrderBit::decode(argc_tag_) ? index : -index]); + ObjectPtr* arg_ptr = &(argv_[-index]); // Tell MemorySanitizer the ObjectPtr was initialized (by generated code). MSAN_UNPOISON(arg_ptr, kWordSize); return *arg_ptr; @@ -94,9 +93,7 @@ class NativeArguments { void SetArgAt(int index, const Object& value) const { ASSERT(thread_->execution_state() == Thread::kThreadInVM); ASSERT((index >= 0) && (index < ArgCount())); - ObjectPtr* arg_ptr = - &(argv_[ReverseArgOrderBit::decode(argc_tag_) ? index : -index]); - *arg_ptr = value.ptr(); + argv_[-index] = value.ptr(); } // Does not include hidden type arguments vector. @@ -224,29 +221,14 @@ class NativeArguments { kArgcSize = 24, kFunctionBit = kArgcBit + kArgcSize, kFunctionSize = 3, - kReverseArgOrderBit = kFunctionBit + kFunctionSize, - kReverseArgOrderSize = 1, }; class ArgcBits : public BitField {}; class FunctionBits : public BitField {}; - class ReverseArgOrderBit - : public BitField {}; friend class Api; friend class NativeEntry; friend class Simulator; - // Allow simulator to create NativeArguments in reverse order - // on the stack. - NativeArguments(Thread* thread, - int argc_tag, - ObjectPtr* argv, - ObjectPtr* retval) - : thread_(thread), - argc_tag_(ReverseArgOrderBit::update(true, argc_tag)), - argv_(argv), - retval_(retval) {} - // Since this function is passed a RawObject directly, we need to be // exceedingly careful when we use it. If there are any other side // effects in the statement that may cause GC, it could lead to diff --git a/runtime/vm/simulator_arm.cc b/runtime/vm/simulator_arm.cc index d52c9808d36..b714100b724 100644 --- a/runtime/vm/simulator_arm.cc +++ b/runtime/vm/simulator_arm.cc @@ -1419,7 +1419,7 @@ void Simulator::SupervisorCall(Instr* instr) { THR_Print("Call to host function at 0x%" Pd "\n", external); } if (redirection->call_kind() == kRuntimeCall) { - NativeArguments arguments(NULL, 0, NULL, NULL); + NativeArguments arguments; ASSERT(sizeof(NativeArguments) == 4 * kWordSize); arguments.thread_ = reinterpret_cast(get_register(R0)); arguments.argc_tag_ = get_register(R1);