| Index: src/ia32/macro-assembler-ia32.cc
|
| diff --git a/src/ia32/macro-assembler-ia32.cc b/src/ia32/macro-assembler-ia32.cc
|
| index b5cefdbc1a4e5ece50e6195410124d9c4fa4b5cd..f1c6a4810ad99cdf5706c59d3fb09ab857dc3ce6 100644
|
| --- a/src/ia32/macro-assembler-ia32.cc
|
| +++ b/src/ia32/macro-assembler-ia32.cc
|
| @@ -2634,7 +2634,7 @@ void MacroAssembler::InvokeFunction(Register fun,
|
| }
|
|
|
|
|
| -void MacroAssembler::InvokeFunction(Handle<JSFunction> function,
|
| +void MacroAssembler::InvokeFunction(Register fun,
|
| const ParameterCount& expected,
|
| const ParameterCount& actual,
|
| InvokeFlag flag,
|
| @@ -2643,18 +2643,25 @@ void MacroAssembler::InvokeFunction(Handle<JSFunction> function,
|
| // You can't call a function without a valid frame.
|
| ASSERT(flag == JUMP_FUNCTION || has_frame());
|
|
|
| - // Get the function and setup the context.
|
| - LoadHeapObject(edi, function);
|
| + ASSERT(fun.is(edi));
|
| mov(esi, FieldOperand(edi, JSFunction::kContextOffset));
|
|
|
| - // We call indirectly through the code field in the function to
|
| - // allow recompilation to take effect without changing any of the
|
| - // call sites.
|
| InvokeCode(FieldOperand(edi, JSFunction::kCodeEntryOffset),
|
| expected, actual, flag, call_wrapper, call_kind);
|
| }
|
|
|
|
|
| +void MacroAssembler::InvokeFunction(Handle<JSFunction> function,
|
| + const ParameterCount& expected,
|
| + const ParameterCount& actual,
|
| + InvokeFlag flag,
|
| + const CallWrapper& call_wrapper,
|
| + CallKind call_kind) {
|
| + LoadHeapObject(edi, function);
|
| + InvokeFunction(edi, expected, actual, flag, call_wrapper, call_kind);
|
| +}
|
| +
|
| +
|
| void MacroAssembler::InvokeBuiltin(Builtins::JavaScript id,
|
| InvokeFlag flag,
|
| const CallWrapper& call_wrapper) {
|
|
|