Commit b9e40ff3 authored by palfia@homejinni.com's avatar palfia@homejinni.com

MIPS: Cleanup in the CallStubCompiler.

Port r18131 (b49d9992)

BUG=
R=gergely@homejinni.com

Review URL: https://codereview.chromium.org/96053002

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@18143 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
parent 2c674d4c
...@@ -3728,7 +3728,7 @@ void MacroAssembler::InvokeFunction(Register function, ...@@ -3728,7 +3728,7 @@ void MacroAssembler::InvokeFunction(Register function,
} }
void MacroAssembler::InvokeFunction(Handle<JSFunction> function, void MacroAssembler::InvokeFunction(Register function,
const ParameterCount& expected, const ParameterCount& expected,
const ParameterCount& actual, const ParameterCount& actual,
InvokeFlag flag, InvokeFlag flag,
...@@ -3737,8 +3737,10 @@ void MacroAssembler::InvokeFunction(Handle<JSFunction> function, ...@@ -3737,8 +3737,10 @@ void MacroAssembler::InvokeFunction(Handle<JSFunction> function,
// You can't call a function without a valid frame. // You can't call a function without a valid frame.
ASSERT(flag == JUMP_FUNCTION || has_frame()); ASSERT(flag == JUMP_FUNCTION || has_frame());
// Contract with called JS functions requires that function is passed in a1.
ASSERT(function.is(a1));
// Get the function and setup the context. // Get the function and setup the context.
li(a1, function);
lw(cp, FieldMemOperand(a1, JSFunction::kContextOffset)); lw(cp, FieldMemOperand(a1, JSFunction::kContextOffset));
// We call indirectly through the code field in the function to // We call indirectly through the code field in the function to
...@@ -3749,6 +3751,17 @@ void MacroAssembler::InvokeFunction(Handle<JSFunction> function, ...@@ -3749,6 +3751,17 @@ void MacroAssembler::InvokeFunction(Handle<JSFunction> function,
} }
void MacroAssembler::InvokeFunction(Handle<JSFunction> function,
const ParameterCount& expected,
const ParameterCount& actual,
InvokeFlag flag,
const CallWrapper& call_wrapper,
CallKind call_kind) {
li(a1, function);
InvokeFunction(a1, expected, actual, flag, call_wrapper, call_kind);
}
void MacroAssembler::IsObjectJSObjectType(Register heap_object, void MacroAssembler::IsObjectJSObjectType(Register heap_object,
Register map, Register map,
Register scratch, Register scratch,
......
...@@ -917,6 +917,13 @@ class MacroAssembler: public Assembler { ...@@ -917,6 +917,13 @@ class MacroAssembler: public Assembler {
const CallWrapper& call_wrapper, const CallWrapper& call_wrapper,
CallKind call_kind); CallKind call_kind);
void InvokeFunction(Register function,
const ParameterCount& expected,
const ParameterCount& actual,
InvokeFlag flag,
const CallWrapper& call_wrapper,
CallKind call_kind);
void InvokeFunction(Handle<JSFunction> function, void InvokeFunction(Handle<JSFunction> function,
const ParameterCount& expected, const ParameterCount& expected,
const ParameterCount& actual, const ParameterCount& actual,
......
This diff is collapsed.
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment