| Index: src/arm/macro-assembler-arm.cc
|
| diff --git a/src/arm/macro-assembler-arm.cc b/src/arm/macro-assembler-arm.cc
|
| index 31c3b194cecd5caa86202c0f19bff0b960656547..799a1bbdea8e3aa08f30e6344b85c49655c8ef6d 100644
|
| --- a/src/arm/macro-assembler-arm.cc
|
| +++ b/src/arm/macro-assembler-arm.cc
|
| @@ -545,6 +545,21 @@ void MacroAssembler::InvokeFunction(Register fun,
|
| }
|
|
|
|
|
| +void MacroAssembler::InvokeFunction(JSFunction* function,
|
| + const ParameterCount& actual) {
|
| + ASSERT(function->is_compiled());
|
| +
|
| + // Get the function and setup the context.
|
| + mov(r1, Operand(Handle<JSFunction>(function)));
|
| + ldr(cp, FieldMemOperand(r1, JSFunction::kContextOffset));
|
| +
|
| + // Jump to the cached code (tail call).
|
| + Handle<Code> code(function->code());
|
| + ParameterCount expected(function->shared()->formal_parameter_count());
|
| + InvokeCode(code, expected, actual,
|
| + RelocInfo::CODE_TARGET, JUMP_FUNCTION);
|
| +}
|
| +
|
| #ifdef ENABLE_DEBUGGER_SUPPORT
|
| void MacroAssembler::SaveRegistersToMemory(RegList regs) {
|
| ASSERT((regs & ~kJSCallerSaved) == 0);
|
| @@ -1209,6 +1224,16 @@ void MacroAssembler::CallRuntime(Runtime::FunctionId fid, int num_arguments) {
|
| }
|
|
|
|
|
| +void MacroAssembler::CallExternalReference(const ExternalReference& ext,
|
| + int num_arguments) {
|
| + mov(r0, Operand(num_arguments));
|
| + mov(r1, Operand(ext));
|
| +
|
| + CEntryStub stub(1);
|
| + CallStub(&stub);
|
| +}
|
| +
|
| +
|
| void MacroAssembler::TailCallRuntime(const ExternalReference& ext,
|
| int num_arguments,
|
| int result_size) {
|
|
|