| Index: src/arm/lithium-codegen-arm.cc
|
| diff --git a/src/arm/lithium-codegen-arm.cc b/src/arm/lithium-codegen-arm.cc
|
| index 49124497fba7dc5566a77950321e6858ff40f0df..790e71a6ecf47816ceccd36ad8a21d4a40dcdb68 100644
|
| --- a/src/arm/lithium-codegen-arm.cc
|
| +++ b/src/arm/lithium-codegen-arm.cc
|
| @@ -91,7 +91,7 @@ bool LCodeGen::GenerateCode() {
|
|
|
| void LCodeGen::FinishCode(Handle<Code> code) {
|
| ASSERT(is_done());
|
| - code->set_stack_slots(StackSlotCount());
|
| + code->set_stack_slots(GetStackSlotCount());
|
| code->set_safepoint_table_offset(safepoints_.GetCodeOffset());
|
| PopulateDeoptimizationData(code);
|
| Deoptimizer::EnsureRelocSpaceForLazyDeoptimization(code);
|
| @@ -149,7 +149,7 @@ bool LCodeGen::GeneratePrologue() {
|
| __ add(fp, sp, Operand(2 * kPointerSize)); // Adjust FP to point to saved FP.
|
|
|
| // Reserve space for the stack slots needed by the code.
|
| - int slots = StackSlotCount();
|
| + int slots = GetStackSlotCount();
|
| if (slots > 0) {
|
| if (FLAG_debug_code) {
|
| __ mov(r0, Operand(slots));
|
| @@ -263,7 +263,7 @@ bool LCodeGen::GenerateDeferredCode() {
|
|
|
| bool LCodeGen::GenerateSafepointTable() {
|
| ASSERT(is_done());
|
| - safepoints_.Emit(masm(), StackSlotCount());
|
| + safepoints_.Emit(masm(), GetStackSlotCount());
|
| return !is_aborted();
|
| }
|
|
|
| @@ -459,7 +459,7 @@ void LCodeGen::AddToTranslation(Translation* translation,
|
| translation->StoreDoubleStackSlot(op->index());
|
| } else if (op->IsArgument()) {
|
| ASSERT(is_tagged);
|
| - int src_index = StackSlotCount() + op->index();
|
| + int src_index = GetStackSlotCount() + op->index();
|
| translation->StoreStackSlot(src_index);
|
| } else if (op->IsRegister()) {
|
| Register reg = ToRegister(op);
|
| @@ -2180,7 +2180,7 @@ void LCodeGen::DoReturn(LReturn* instr) {
|
| __ push(r0);
|
| __ CallRuntime(Runtime::kTraceExit, 1);
|
| }
|
| - int32_t sp_delta = (ParameterCount() + 1) * kPointerSize;
|
| + int32_t sp_delta = (GetParameterCount() + 1) * kPointerSize;
|
| __ mov(sp, fp);
|
| __ ldm(ia_w, sp, fp.bit() | lr.bit());
|
| __ add(sp, sp, Operand(sp_delta));
|
| @@ -3025,6 +3025,21 @@ void LCodeGen::DoUnaryMathOperation(LUnaryMathOperation* instr) {
|
| }
|
|
|
|
|
| +void LCodeGen::DoInvokeFunction(LInvokeFunction* instr) {
|
| + ASSERT(ToRegister(instr->function()).is(r1));
|
| + ASSERT(instr->HasPointerMap());
|
| + ASSERT(instr->HasDeoptimizationEnvironment());
|
| + LPointerMap* pointers = instr->pointer_map();
|
| + LEnvironment* env = instr->deoptimization_environment();
|
| + RecordPosition(pointers->position());
|
| + RegisterEnvironmentForDeoptimization(env);
|
| + SafepointGenerator generator(this, pointers, env->deoptimization_index());
|
| + ParameterCount count(instr->arity());
|
| + __ InvokeFunction(r1, count, CALL_FUNCTION, &generator);
|
| + __ ldr(cp, MemOperand(fp, StandardFrameConstants::kContextOffset));
|
| +}
|
| +
|
| +
|
| void LCodeGen::DoCallKeyed(LCallKeyed* instr) {
|
| ASSERT(ToRegister(instr->result()).is(r0));
|
|
|
|
|