diff options
Diffstat (limited to 'deps/v8/src/arm/virtual-frame-arm.cc')
-rw-r--r-- | deps/v8/src/arm/virtual-frame-arm.cc | 101 |
1 files changed, 6 insertions, 95 deletions
diff --git a/deps/v8/src/arm/virtual-frame-arm.cc b/deps/v8/src/arm/virtual-frame-arm.cc index a33ebd420..7a8ac7266 100644 --- a/deps/v8/src/arm/virtual-frame-arm.cc +++ b/deps/v8/src/arm/virtual-frame-arm.cc @@ -219,36 +219,15 @@ void VirtualFrame::PushTryHandler(HandlerType type) { } -void VirtualFrame::RawCallStub(CodeStub* stub) { - ASSERT(cgen()->HasValidEntryRegisters()); - __ CallStub(stub); -} - - -void VirtualFrame::CallStub(CodeStub* stub, Result* arg) { - PrepareForCall(0, 0); - arg->Unuse(); - RawCallStub(stub); -} - - -void VirtualFrame::CallStub(CodeStub* stub, Result* arg0, Result* arg1) { - PrepareForCall(0, 0); - arg0->Unuse(); - arg1->Unuse(); - RawCallStub(stub); -} - - void VirtualFrame::CallRuntime(Runtime::Function* f, int arg_count) { - PrepareForCall(arg_count, arg_count); + Forget(arg_count); ASSERT(cgen()->HasValidEntryRegisters()); __ CallRuntime(f, arg_count); } void VirtualFrame::CallRuntime(Runtime::FunctionId id, int arg_count) { - PrepareForCall(arg_count, arg_count); + Forget(arg_count); ASSERT(cgen()->HasValidEntryRegisters()); __ CallRuntime(id, arg_count); } @@ -257,102 +236,34 @@ void VirtualFrame::CallRuntime(Runtime::FunctionId id, int arg_count) { void VirtualFrame::InvokeBuiltin(Builtins::JavaScript id, InvokeJSFlags flags, int arg_count) { - PrepareForCall(arg_count, arg_count); + Forget(arg_count); __ InvokeBuiltin(id, flags); } -void VirtualFrame::RawCallCodeObject(Handle<Code> code, - RelocInfo::Mode rmode) { - ASSERT(cgen()->HasValidEntryRegisters()); - __ Call(code, rmode); -} - - void VirtualFrame::CallCodeObject(Handle<Code> code, RelocInfo::Mode rmode, int dropped_args) { - int spilled_args = 0; switch (code->kind()) { case Code::CALL_IC: - spilled_args = dropped_args + 1; - break; case Code::FUNCTION: - spilled_args = dropped_args + 1; break; case Code::KEYED_LOAD_IC: - ASSERT(dropped_args == 0); - spilled_args = 2; - break; - default: - // The other types of code objects are called with values - // in specific registers, and are handled in functions with - // a different signature. - UNREACHABLE(); - break; - } - PrepareForCall(spilled_args, dropped_args); - RawCallCodeObject(code, rmode); -} - - -void VirtualFrame::CallCodeObject(Handle<Code> code, - RelocInfo::Mode rmode, - Result* arg, - int dropped_args) { - int spilled_args = 0; - switch (code->kind()) { case Code::LOAD_IC: - ASSERT(arg->reg().is(r2)); - ASSERT(dropped_args == 0); - spilled_args = 1; - break; case Code::KEYED_STORE_IC: - ASSERT(arg->reg().is(r0)); - ASSERT(dropped_args == 0); - spilled_args = 2; - break; - default: - // No other types of code objects are called with values - // in exactly one register. - UNREACHABLE(); - break; - } - PrepareForCall(spilled_args, dropped_args); - arg->Unuse(); - RawCallCodeObject(code, rmode); -} - - -void VirtualFrame::CallCodeObject(Handle<Code> code, - RelocInfo::Mode rmode, - Result* arg0, - Result* arg1, - int dropped_args) { - int spilled_args = 1; - switch (code->kind()) { case Code::STORE_IC: - ASSERT(arg0->reg().is(r0)); - ASSERT(arg1->reg().is(r2)); ASSERT(dropped_args == 0); - spilled_args = 1; break; case Code::BUILTIN: ASSERT(*code == Builtins::builtin(Builtins::JSConstructCall)); - ASSERT(arg0->reg().is(r0)); - ASSERT(arg1->reg().is(r1)); - spilled_args = dropped_args + 1; break; default: - // No other types of code objects are called with values - // in exactly two registers. UNREACHABLE(); break; } - PrepareForCall(spilled_args, dropped_args); - arg0->Unuse(); - arg1->Unuse(); - RawCallCodeObject(code, rmode); + Forget(dropped_args); + ASSERT(cgen()->HasValidEntryRegisters()); + __ Call(code, rmode); } |