| Index: src/ia32/lithium-codegen-ia32.cc
|
| diff --git a/src/ia32/lithium-codegen-ia32.cc b/src/ia32/lithium-codegen-ia32.cc
|
| index bcb7286f5ce2d3b4e0c03d75fc33f9e41d9bad04..d45c353d068b8ce8010481130d2a1fedb1d5065d 100644
|
| --- a/src/ia32/lithium-codegen-ia32.cc
|
| +++ b/src/ia32/lithium-codegen-ia32.cc
|
| @@ -77,7 +77,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);
|
| @@ -132,7 +132,7 @@ bool LCodeGen::GeneratePrologue() {
|
| __ push(edi); // Callee's JS function.
|
|
|
| // Reserve space for the stack slots needed by the code.
|
| - int slots = StackSlotCount();
|
| + int slots = GetStackSlotCount();
|
| if (slots > 0) {
|
| if (FLAG_debug_code) {
|
| __ mov(Operand(eax), Immediate(slots));
|
| @@ -254,7 +254,7 @@ bool LCodeGen::GenerateDeferredCode() {
|
|
|
| bool LCodeGen::GenerateSafepointTable() {
|
| ASSERT(is_done());
|
| - safepoints_.Emit(masm(), StackSlotCount());
|
| + safepoints_.Emit(masm(), GetStackSlotCount());
|
| return !is_aborted();
|
| }
|
|
|
| @@ -386,7 +386,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);
|
| @@ -2057,7 +2057,7 @@ void LCodeGen::DoReturn(LReturn* instr) {
|
| }
|
| __ mov(esp, ebp);
|
| __ pop(ebp);
|
| - __ Ret((ParameterCount() + 1) * kPointerSize, ecx);
|
| + __ Ret((GetParameterCount() + 1) * kPointerSize, ecx);
|
| }
|
|
|
|
|
| @@ -2493,7 +2493,7 @@ void LCodeGen::DoApplyArguments(LApplyArguments* instr) {
|
| SafepointGenerator safepoint_generator(this,
|
| pointers,
|
| env->deoptimization_index());
|
| - v8::internal::ParameterCount actual(eax);
|
| + ParameterCount actual(eax);
|
| __ InvokeFunction(function, actual, CALL_FUNCTION, &safepoint_generator);
|
| }
|
|
|
| @@ -2905,6 +2905,21 @@ void LCodeGen::DoUnaryMathOperation(LUnaryMathOperation* instr) {
|
| }
|
|
|
|
|
| +void LCodeGen::DoInvokeFunction(LInvokeFunction* instr) {
|
| + ASSERT(ToRegister(instr->context()).is(esi));
|
| + ASSERT(ToRegister(instr->function()).is(edi));
|
| + 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(edi, count, CALL_FUNCTION, &generator);
|
| +}
|
| +
|
| +
|
| void LCodeGen::DoCallKeyed(LCallKeyed* instr) {
|
| ASSERT(ToRegister(instr->context()).is(esi));
|
| ASSERT(ToRegister(instr->key()).is(ecx));
|
|
|