Index: src/ia32/full-codegen-ia32.cc |
diff --git a/src/ia32/full-codegen-ia32.cc b/src/ia32/full-codegen-ia32.cc |
index fbd9a218e056ede549221471e567e5929c96a2dd..789b646f2f340d16b96358473684aa8601b0640a 100644 |
--- a/src/ia32/full-codegen-ia32.cc |
+++ b/src/ia32/full-codegen-ia32.cc |
@@ -229,7 +229,7 @@ void FullCodeGenerator::Generate() { |
__ Push(info->scope()->GetScopeInfo()); |
__ CallRuntime(Runtime::kHiddenNewGlobalContext, 2); |
} else if (heap_slots <= FastNewContextStub::kMaximumSlots) { |
- FastNewContextStub stub(heap_slots); |
+ FastNewContextStub stub(isolate(), heap_slots); |
__ CallStub(&stub); |
} else { |
__ push(edi); |
@@ -291,7 +291,7 @@ void FullCodeGenerator::Generate() { |
} else { |
type = ArgumentsAccessStub::NEW_SLOPPY_FAST; |
} |
- ArgumentsAccessStub stub(type); |
+ ArgumentsAccessStub stub(isolate(), type); |
__ CallStub(&stub); |
SetVar(arguments, eax, ebx, edx); |
@@ -1300,7 +1300,9 @@ void FullCodeGenerator::EmitNewClosure(Handle<SharedFunctionInfo> info, |
!pretenure && |
scope()->is_function_scope() && |
info->num_literals() == 0) { |
- FastNewClosureStub stub(info->strict_mode(), info->is_generator()); |
+ FastNewClosureStub stub(isolate(), |
+ info->strict_mode(), |
+ info->is_generator()); |
__ mov(ebx, Immediate(info)); |
__ CallStub(&stub); |
} else { |
@@ -1634,7 +1636,7 @@ void FullCodeGenerator::VisitObjectLiteral(ObjectLiteral* expr) { |
__ mov(ebx, Immediate(Smi::FromInt(expr->literal_index()))); |
__ mov(ecx, Immediate(constant_properties)); |
__ mov(edx, Immediate(Smi::FromInt(flags))); |
- FastCloneShallowObjectStub stub(properties_count); |
+ FastCloneShallowObjectStub stub(isolate(), properties_count); |
__ CallStub(&stub); |
} |
@@ -1769,6 +1771,7 @@ void FullCodeGenerator::VisitArrayLiteral(ArrayLiteral* expr) { |
__ mov(ebx, Immediate(Smi::FromInt(expr->literal_index()))); |
__ mov(ecx, Immediate(constant_elements)); |
FastCloneShallowArrayStub stub( |
+ isolate(), |
FastCloneShallowArrayStub::COPY_ON_WRITE_ELEMENTS, |
allocation_site_mode, |
length); |
@@ -1797,7 +1800,10 @@ void FullCodeGenerator::VisitArrayLiteral(ArrayLiteral* expr) { |
__ mov(eax, FieldOperand(ebx, JSFunction::kLiteralsOffset)); |
__ mov(ebx, Immediate(Smi::FromInt(expr->literal_index()))); |
__ mov(ecx, Immediate(constant_elements)); |
- FastCloneShallowArrayStub stub(mode, allocation_site_mode, length); |
+ FastCloneShallowArrayStub stub(isolate(), |
+ mode, |
+ allocation_site_mode, |
+ length); |
__ CallStub(&stub); |
} |
@@ -1834,7 +1840,7 @@ void FullCodeGenerator::VisitArrayLiteral(ArrayLiteral* expr) { |
} else { |
// Store the subexpression value in the array's elements. |
__ mov(ecx, Immediate(Smi::FromInt(i))); |
- StoreArrayLiteralElementStub stub; |
+ StoreArrayLiteralElementStub stub(isolate()); |
__ CallStub(&stub); |
} |
@@ -2083,7 +2089,7 @@ void FullCodeGenerator::VisitYield(Yield* expr) { |
CallIC(ic, TypeFeedbackId::None()); |
__ mov(edi, eax); |
__ mov(Operand(esp, 2 * kPointerSize), edi); |
- CallFunctionStub stub(1, CALL_AS_METHOD); |
+ CallFunctionStub stub(isolate(), 1, CALL_AS_METHOD); |
__ CallStub(&stub); |
__ mov(esi, Operand(ebp, StandardFrameConstants::kContextOffset)); |
@@ -2290,7 +2296,7 @@ void FullCodeGenerator::EmitInlineSmiBinaryOp(BinaryOperation* expr, |
__ bind(&stub_call); |
__ mov(eax, ecx); |
- BinaryOpICStub stub(op, mode); |
+ BinaryOpICStub stub(isolate(), op, mode); |
CallIC(stub.GetCode(isolate()), expr->BinaryOperationFeedbackId()); |
patch_site.EmitPatchInfo(); |
__ jmp(&done, Label::kNear); |
@@ -2373,7 +2379,7 @@ void FullCodeGenerator::EmitBinaryOp(BinaryOperation* expr, |
Token::Value op, |
OverwriteMode mode) { |
__ pop(edx); |
- BinaryOpICStub stub(op, mode); |
+ BinaryOpICStub stub(isolate(), op, mode); |
JumpPatchSite patch_site(masm_); // unbound, signals no inlined smi code. |
CallIC(stub.GetCode(isolate()), expr->BinaryOperationFeedbackId()); |
patch_site.EmitPatchInfo(); |
@@ -2622,7 +2628,7 @@ void FullCodeGenerator::EmitCallWithIC(Call* expr) { |
// Record source position of the IC call. |
SetSourcePosition(expr->position()); |
- CallFunctionStub stub(arg_count, flags); |
+ CallFunctionStub stub(isolate(), arg_count, flags); |
__ mov(edi, Operand(esp, (arg_count + 1) * kPointerSize)); |
__ CallStub(&stub); |
RecordJSReturnSite(expr); |
@@ -2665,7 +2671,7 @@ void FullCodeGenerator::EmitKeyedCallWithIC(Call* expr, |
// Record source position of the IC call. |
SetSourcePosition(expr->position()); |
- CallFunctionStub stub(arg_count, CALL_AS_METHOD); |
+ CallFunctionStub stub(isolate(), arg_count, CALL_AS_METHOD); |
__ mov(edi, Operand(esp, (arg_count + 1) * kPointerSize)); |
__ CallStub(&stub); |
RecordJSReturnSite(expr); |
@@ -2696,7 +2702,7 @@ void FullCodeGenerator::EmitCallWithStub(Call* expr) { |
__ mov(edx, Immediate(Smi::FromInt(expr->CallFeedbackSlot()))); |
// Record call targets in unoptimized code. |
- CallFunctionStub stub(arg_count, RECORD_CALL_TARGET); |
+ CallFunctionStub stub(isolate(), arg_count, RECORD_CALL_TARGET); |
__ mov(edi, Operand(esp, (arg_count + 1) * kPointerSize)); |
__ CallStub(&stub); |
@@ -2766,7 +2772,7 @@ void FullCodeGenerator::VisitCall(Call* expr) { |
} |
// Record source position for debugger. |
SetSourcePosition(expr->position()); |
- CallFunctionStub stub(arg_count, NO_CALL_FUNCTION_FLAGS); |
+ CallFunctionStub stub(isolate(), arg_count, NO_CALL_FUNCTION_FLAGS); |
__ mov(edi, Operand(esp, (arg_count + 1) * kPointerSize)); |
__ CallStub(&stub); |
RecordJSReturnSite(expr); |
@@ -2882,7 +2888,7 @@ void FullCodeGenerator::VisitCallNew(CallNew* expr) { |
__ LoadHeapObject(ebx, FeedbackVector()); |
__ mov(edx, Immediate(Smi::FromInt(expr->CallNewFeedbackSlot()))); |
- CallConstructStub stub(RECORD_CALL_TARGET); |
+ CallConstructStub stub(isolate(), RECORD_CALL_TARGET); |
__ call(stub.GetCode(isolate()), RelocInfo::CONSTRUCT_CALL); |
PrepareForBailoutForId(expr->ReturnId(), TOS_REG); |
context()->Plug(eax); |
@@ -3259,7 +3265,7 @@ void FullCodeGenerator::EmitArguments(CallRuntime* expr) { |
VisitForAccumulatorValue(args->at(0)); |
__ mov(edx, eax); |
__ Move(eax, Immediate(Smi::FromInt(info_->scope()->num_parameters()))); |
- ArgumentsAccessStub stub(ArgumentsAccessStub::READ_ELEMENT); |
+ ArgumentsAccessStub stub(isolate(), ArgumentsAccessStub::READ_ELEMENT); |
__ CallStub(&stub); |
context()->Plug(eax); |
} |
@@ -3372,7 +3378,7 @@ void FullCodeGenerator::EmitLog(CallRuntime* expr) { |
void FullCodeGenerator::EmitSubString(CallRuntime* expr) { |
// Load the arguments on the stack and call the stub. |
- SubStringStub stub; |
+ SubStringStub stub(isolate()); |
ZoneList<Expression*>* args = expr->arguments(); |
ASSERT(args->length() == 3); |
VisitForStackValue(args->at(0)); |
@@ -3385,7 +3391,7 @@ void FullCodeGenerator::EmitSubString(CallRuntime* expr) { |
void FullCodeGenerator::EmitRegExpExec(CallRuntime* expr) { |
// Load the arguments on the stack and call the stub. |
- RegExpExecStub stub; |
+ RegExpExecStub stub(isolate()); |
ZoneList<Expression*>* args = expr->arguments(); |
ASSERT(args->length() == 4); |
VisitForStackValue(args->at(0)); |
@@ -3538,7 +3544,7 @@ void FullCodeGenerator::EmitMathPow(CallRuntime* expr) { |
VisitForStackValue(args->at(1)); |
if (CpuFeatures::IsSupported(SSE2)) { |
- MathPowStub stub(MathPowStub::ON_STACK); |
+ MathPowStub stub(isolate(), MathPowStub::ON_STACK); |
__ CallStub(&stub); |
} else { |
__ CallRuntime(Runtime::kHiddenMathPowSlow, 2); |
@@ -3583,7 +3589,7 @@ void FullCodeGenerator::EmitNumberToString(CallRuntime* expr) { |
// Load the argument into eax and call the stub. |
VisitForAccumulatorValue(args->at(0)); |
- NumberToStringStub stub; |
+ NumberToStringStub stub(isolate()); |
__ CallStub(&stub); |
context()->Plug(eax); |
} |
@@ -3709,7 +3715,7 @@ void FullCodeGenerator::EmitStringAdd(CallRuntime* expr) { |
VisitForAccumulatorValue(args->at(1)); |
__ pop(edx); |
- StringAddStub stub(STRING_ADD_CHECK_BOTH, NOT_TENURED); |
+ StringAddStub stub(isolate(), STRING_ADD_CHECK_BOTH, NOT_TENURED); |
__ CallStub(&stub); |
context()->Plug(eax); |
} |
@@ -3722,7 +3728,7 @@ void FullCodeGenerator::EmitStringCompare(CallRuntime* expr) { |
VisitForStackValue(args->at(0)); |
VisitForStackValue(args->at(1)); |
- StringCompareStub stub; |
+ StringCompareStub stub(isolate()); |
__ CallStub(&stub); |
context()->Plug(eax); |
} |
@@ -3762,7 +3768,7 @@ void FullCodeGenerator::EmitCallFunction(CallRuntime* expr) { |
void FullCodeGenerator::EmitRegExpConstructResult(CallRuntime* expr) { |
// Load the arguments on the stack and call the stub. |
- RegExpConstructResultStub stub; |
+ RegExpConstructResultStub stub(isolate()); |
ZoneList<Expression*>* args = expr->arguments(); |
ASSERT(args->length() == 3); |
VisitForStackValue(args->at(0)); |
@@ -4160,7 +4166,7 @@ void FullCodeGenerator::VisitCallRuntime(CallRuntime* expr) { |
// Record source position of the IC call. |
SetSourcePosition(expr->position()); |
- CallFunctionStub stub(arg_count, NO_CALL_FUNCTION_FLAGS); |
+ CallFunctionStub stub(isolate(), arg_count, NO_CALL_FUNCTION_FLAGS); |
__ mov(edi, Operand(esp, (arg_count + 1) * kPointerSize)); |
__ CallStub(&stub); |
// Restore context register. |
@@ -4389,7 +4395,7 @@ void FullCodeGenerator::VisitCountOperation(CountOperation* expr) { |
__ jmp(&stub_call, Label::kNear); |
__ bind(&slow); |
} |
- ToNumberStub convert_stub; |
+ ToNumberStub convert_stub(isolate()); |
__ CallStub(&convert_stub); |
// Save result for postfix expressions. |
@@ -4419,7 +4425,7 @@ void FullCodeGenerator::VisitCountOperation(CountOperation* expr) { |
__ bind(&stub_call); |
__ mov(edx, eax); |
__ mov(eax, Immediate(Smi::FromInt(1))); |
- BinaryOpICStub stub(expr->binary_op(), NO_OVERWRITE); |
+ BinaryOpICStub stub(isolate(), expr->binary_op(), NO_OVERWRITE); |
CallIC(stub.GetCode(isolate()), expr->CountBinOpFeedbackId()); |
patch_site.EmitPatchInfo(); |
__ bind(&done); |
@@ -4630,7 +4636,7 @@ void FullCodeGenerator::VisitCompareOperation(CompareOperation* expr) { |
case Token::INSTANCEOF: { |
VisitForStackValue(expr->right()); |
- InstanceofStub stub(InstanceofStub::kNoFlags); |
+ InstanceofStub stub(isolate(), InstanceofStub::kNoFlags); |
__ CallStub(&stub); |
PrepareForBailoutBeforeSplit(expr, true, if_true, if_false); |
__ test(eax, eax); |