Index: src/ia32/lithium-ia32.cc |
=================================================================== |
--- src/ia32/lithium-ia32.cc (revision 9846) |
+++ src/ia32/lithium-ia32.cc (working copy) |
@@ -459,7 +459,7 @@ |
void LChunk::AddInstruction(LInstruction* instr, HBasicBlock* block) { |
- LInstructionGap* gap = new LInstructionGap(block); |
+ LInstructionGap* gap = new(graph_->zone()) LInstructionGap(block); |
int index = -1; |
if (instr->IsControl()) { |
instructions_.Add(gap); |
@@ -534,7 +534,7 @@ |
LChunk* LChunkBuilder::Build() { |
ASSERT(is_unused()); |
- chunk_ = new LChunk(info(), graph()); |
+ chunk_ = new(zone()) LChunk(info(), graph()); |
HPhase phase("Building chunk", chunk_); |
status_ = BUILDING; |
const ZoneList<HBasicBlock*>* blocks = graph()->blocks(); |
@@ -570,14 +570,14 @@ |
LUnallocated* LChunkBuilder::ToUnallocated(Register reg) { |
- return new LUnallocated(LUnallocated::FIXED_REGISTER, |
- Register::ToAllocationIndex(reg)); |
+ return new(zone()) LUnallocated(LUnallocated::FIXED_REGISTER, |
+ Register::ToAllocationIndex(reg)); |
} |
LUnallocated* LChunkBuilder::ToUnallocated(XMMRegister reg) { |
- return new LUnallocated(LUnallocated::FIXED_DOUBLE_REGISTER, |
- XMMRegister::ToAllocationIndex(reg)); |
+ return new(zone()) LUnallocated(LUnallocated::FIXED_DOUBLE_REGISTER, |
+ XMMRegister::ToAllocationIndex(reg)); |
} |
@@ -592,30 +592,30 @@ |
LOperand* LChunkBuilder::UseRegister(HValue* value) { |
- return Use(value, new LUnallocated(LUnallocated::MUST_HAVE_REGISTER)); |
+ return Use(value, new(zone()) LUnallocated(LUnallocated::MUST_HAVE_REGISTER)); |
} |
LOperand* LChunkBuilder::UseRegisterAtStart(HValue* value) { |
return Use(value, |
- new LUnallocated(LUnallocated::MUST_HAVE_REGISTER, |
- LUnallocated::USED_AT_START)); |
+ new(zone()) LUnallocated(LUnallocated::MUST_HAVE_REGISTER, |
+ LUnallocated::USED_AT_START)); |
} |
LOperand* LChunkBuilder::UseTempRegister(HValue* value) { |
- return Use(value, new LUnallocated(LUnallocated::WRITABLE_REGISTER)); |
+ return Use(value, new(zone()) LUnallocated(LUnallocated::WRITABLE_REGISTER)); |
} |
LOperand* LChunkBuilder::Use(HValue* value) { |
- return Use(value, new LUnallocated(LUnallocated::NONE)); |
+ return Use(value, new(zone()) LUnallocated(LUnallocated::NONE)); |
} |
LOperand* LChunkBuilder::UseAtStart(HValue* value) { |
- return Use(value, new LUnallocated(LUnallocated::NONE, |
- LUnallocated::USED_AT_START)); |
+ return Use(value, new(zone()) LUnallocated(LUnallocated::NONE, |
+ LUnallocated::USED_AT_START)); |
} |
@@ -650,7 +650,7 @@ |
LOperand* LChunkBuilder::UseAny(HValue* value) { |
return value->IsConstant() |
? chunk_->DefineConstantOperand(HConstant::cast(value)) |
- : Use(value, new LUnallocated(LUnallocated::ANY)); |
+ : Use(value, new(zone()) LUnallocated(LUnallocated::ANY)); |
} |
@@ -675,14 +675,15 @@ |
template<int I, int T> |
LInstruction* LChunkBuilder::Define(LTemplateInstruction<1, I, T>* instr) { |
- return Define(instr, new LUnallocated(LUnallocated::NONE)); |
+ return Define(instr, new(zone()) LUnallocated(LUnallocated::NONE)); |
} |
template<int I, int T> |
LInstruction* LChunkBuilder::DefineAsRegister( |
LTemplateInstruction<1, I, T>* instr) { |
- return Define(instr, new LUnallocated(LUnallocated::MUST_HAVE_REGISTER)); |
+ return Define(instr, |
+ new(zone()) LUnallocated(LUnallocated::MUST_HAVE_REGISTER)); |
} |
@@ -690,14 +691,16 @@ |
LInstruction* LChunkBuilder::DefineAsSpilled( |
LTemplateInstruction<1, I, T>* instr, |
int index) { |
- return Define(instr, new LUnallocated(LUnallocated::FIXED_SLOT, index)); |
+ return Define(instr, |
+ new(zone()) LUnallocated(LUnallocated::FIXED_SLOT, index)); |
} |
template<int I, int T> |
LInstruction* LChunkBuilder::DefineSameAsFirst( |
LTemplateInstruction<1, I, T>* instr) { |
- return Define(instr, new LUnallocated(LUnallocated::SAME_AS_FIRST_INPUT)); |
+ return Define(instr, |
+ new(zone()) LUnallocated(LUnallocated::SAME_AS_FIRST_INPUT)); |
} |
@@ -779,13 +782,14 @@ |
LInstruction* LChunkBuilder::AssignPointerMap(LInstruction* instr) { |
ASSERT(!instr->HasPointerMap()); |
- instr->set_pointer_map(new LPointerMap(position_)); |
+ instr->set_pointer_map(new(zone()) LPointerMap(position_)); |
return instr; |
} |
LUnallocated* LChunkBuilder::TempRegister() { |
- LUnallocated* operand = new LUnallocated(LUnallocated::MUST_HAVE_REGISTER); |
+ LUnallocated* operand = |
+ new(zone()) LUnallocated(LUnallocated::MUST_HAVE_REGISTER); |
allocator_->RecordTemporary(operand); |
return operand; |
} |
@@ -806,17 +810,17 @@ |
LInstruction* LChunkBuilder::DoBlockEntry(HBlockEntry* instr) { |
- return new LLabel(instr->block()); |
+ return new(zone()) LLabel(instr->block()); |
} |
LInstruction* LChunkBuilder::DoSoftDeoptimize(HSoftDeoptimize* instr) { |
- return AssignEnvironment(new LDeoptimize); |
+ return AssignEnvironment(new(zone()) LDeoptimize); |
} |
LInstruction* LChunkBuilder::DoDeoptimize(HDeoptimize* instr) { |
- return AssignEnvironment(new LDeoptimize); |
+ return AssignEnvironment(new(zone()) LDeoptimize); |
} |
@@ -829,7 +833,7 @@ |
LOperand* context = UseFixed(instr->context(), esi); |
LOperand* left = UseFixed(instr->left(), edx); |
LOperand* right = UseFixed(instr->right(), eax); |
- LArithmeticT* result = new LArithmeticT(op, context, left, right); |
+ LArithmeticT* result = new(zone()) LArithmeticT(op, context, left, right); |
return MarkAsCall(DefineFixed(result, eax), instr); |
} |
@@ -863,7 +867,7 @@ |
} |
LInstruction* result = |
- DefineSameAsFirst(new LShiftI(op, left, right, does_deopt)); |
+ DefineSameAsFirst(new(zone()) LShiftI(op, left, right, does_deopt)); |
return does_deopt ? AssignEnvironment(result) : result; |
} |
@@ -876,7 +880,7 @@ |
ASSERT(op != Token::MOD); |
LOperand* left = UseRegisterAtStart(instr->left()); |
LOperand* right = UseRegisterAtStart(instr->right()); |
- LArithmeticD* result = new LArithmeticD(op, left, right); |
+ LArithmeticD* result = new(zone()) LArithmeticD(op, left, right); |
return DefineSameAsFirst(result); |
} |
@@ -896,7 +900,7 @@ |
LOperand* left_operand = UseFixed(left, edx); |
LOperand* right_operand = UseFixed(right, eax); |
LArithmeticT* result = |
- new LArithmeticT(op, context, left_operand, right_operand); |
+ new(zone()) LArithmeticT(op, context, left_operand, right_operand); |
return MarkAsCall(DefineFixed(result, eax), instr); |
} |
@@ -994,12 +998,13 @@ |
int ast_id = hydrogen_env->ast_id(); |
ASSERT(ast_id != AstNode::kNoNumber); |
int value_count = hydrogen_env->length(); |
- LEnvironment* result = new LEnvironment(hydrogen_env->closure(), |
- ast_id, |
- hydrogen_env->parameter_count(), |
- argument_count_, |
- value_count, |
- outer); |
+ LEnvironment* result = |
+ new(zone()) LEnvironment(hydrogen_env->closure(), |
+ ast_id, |
+ hydrogen_env->parameter_count(), |
+ argument_count_, |
+ value_count, |
+ outer); |
for (int i = 0; i < value_count; ++i) { |
if (hydrogen_env->is_special_index(i)) continue; |
@@ -1008,7 +1013,7 @@ |
if (value->IsArgumentsObject()) { |
op = NULL; |
} else if (value->IsPushArgument()) { |
- op = new LArgument((*argument_index_accumulator)++); |
+ op = new(zone()) LArgument((*argument_index_accumulator)++); |
} else { |
op = UseAny(value); |
} |
@@ -1020,7 +1025,7 @@ |
LInstruction* LChunkBuilder::DoGoto(HGoto* instr) { |
- return new LGoto(instr->FirstSuccessor()->block_id()); |
+ return new(zone()) LGoto(instr->FirstSuccessor()->block_id()); |
} |
@@ -1032,7 +1037,7 @@ |
HBasicBlock* successor = HConstant::cast(v)->ToBoolean() |
? instr->FirstSuccessor() |
: instr->SecondSuccessor(); |
- return new LGoto(successor->block_id()); |
+ return new(zone()) LGoto(successor->block_id()); |
} |
ToBooleanStub::Types expected = instr->expected_input_types(); |
// We need a temporary register when we have to access the map *or* we have |
@@ -1040,24 +1045,24 @@ |
// involving maps). |
bool needs_temp = expected.NeedsMap() || expected.IsEmpty(); |
LOperand* temp = needs_temp ? TempRegister() : NULL; |
- return AssignEnvironment(new LBranch(UseRegister(v), temp)); |
+ return AssignEnvironment(new(zone()) LBranch(UseRegister(v), temp)); |
} |
LInstruction* LChunkBuilder::DoCompareMap(HCompareMap* instr) { |
ASSERT(instr->value()->representation().IsTagged()); |
LOperand* value = UseRegisterAtStart(instr->value()); |
- return new LCmpMapAndBranch(value); |
+ return new(zone()) LCmpMapAndBranch(value); |
} |
LInstruction* LChunkBuilder::DoArgumentsLength(HArgumentsLength* length) { |
- return DefineAsRegister(new LArgumentsLength(Use(length->value()))); |
+ return DefineAsRegister(new(zone()) LArgumentsLength(Use(length->value()))); |
} |
LInstruction* LChunkBuilder::DoArgumentsElements(HArgumentsElements* elems) { |
- return DefineAsRegister(new LArgumentsElements); |
+ return DefineAsRegister(new(zone()) LArgumentsElements); |
} |
@@ -1065,7 +1070,7 @@ |
LOperand* left = UseFixed(instr->left(), InstanceofStub::left()); |
LOperand* right = UseFixed(instr->right(), InstanceofStub::right()); |
LOperand* context = UseFixed(instr->context(), esi); |
- LInstanceOf* result = new LInstanceOf(context, left, right); |
+ LInstanceOf* result = new(zone()) LInstanceOf(context, left, right); |
return MarkAsCall(DefineFixed(result, eax), instr); |
} |
@@ -1073,7 +1078,7 @@ |
LInstruction* LChunkBuilder::DoInstanceOfKnownGlobal( |
HInstanceOfKnownGlobal* instr) { |
LInstanceOfKnownGlobal* result = |
- new LInstanceOfKnownGlobal( |
+ new(zone()) LInstanceOfKnownGlobal( |
UseFixed(instr->context(), esi), |
UseFixed(instr->left(), InstanceofStub::left()), |
FixedTemp(edi)); |
@@ -1087,11 +1092,11 @@ |
LOperand* length = UseFixed(instr->length(), ebx); |
LOperand* elements = UseFixed(instr->elements(), ecx); |
LOperand* temp = FixedTemp(edx); |
- LApplyArguments* result = new LApplyArguments(function, |
- receiver, |
- length, |
- elements, |
- temp); |
+ LApplyArguments* result = new(zone()) LApplyArguments(function, |
+ receiver, |
+ length, |
+ elements, |
+ temp); |
return MarkAsCall(DefineFixed(result, eax), instr, CAN_DEOPTIMIZE_EAGERLY); |
} |
@@ -1099,42 +1104,44 @@ |
LInstruction* LChunkBuilder::DoPushArgument(HPushArgument* instr) { |
++argument_count_; |
LOperand* argument = UseAny(instr->argument()); |
- return new LPushArgument(argument); |
+ return new(zone()) LPushArgument(argument); |
} |
LInstruction* LChunkBuilder::DoThisFunction(HThisFunction* instr) { |
- return instr->HasNoUses() ? NULL : DefineAsRegister(new LThisFunction); |
+ return instr->HasNoUses() |
+ ? NULL |
+ : DefineAsRegister(new(zone()) LThisFunction); |
} |
LInstruction* LChunkBuilder::DoContext(HContext* instr) { |
- return instr->HasNoUses() ? NULL : DefineAsRegister(new LContext); |
+ return instr->HasNoUses() ? NULL : DefineAsRegister(new(zone()) LContext); |
} |
LInstruction* LChunkBuilder::DoOuterContext(HOuterContext* instr) { |
LOperand* context = UseRegisterAtStart(instr->value()); |
- return DefineAsRegister(new LOuterContext(context)); |
+ return DefineAsRegister(new(zone()) LOuterContext(context)); |
} |
LInstruction* LChunkBuilder::DoGlobalObject(HGlobalObject* instr) { |
LOperand* context = UseRegisterAtStart(instr->value()); |
- return DefineAsRegister(new LGlobalObject(context)); |
+ return DefineAsRegister(new(zone()) LGlobalObject(context)); |
} |
LInstruction* LChunkBuilder::DoGlobalReceiver(HGlobalReceiver* instr) { |
LOperand* global_object = UseRegisterAtStart(instr->value()); |
- return DefineAsRegister(new LGlobalReceiver(global_object)); |
+ return DefineAsRegister(new(zone()) LGlobalReceiver(global_object)); |
} |
LInstruction* LChunkBuilder::DoCallConstantFunction( |
HCallConstantFunction* instr) { |
argument_count_ -= instr->argument_count(); |
- return MarkAsCall(DefineFixed(new LCallConstantFunction, eax), instr); |
+ return MarkAsCall(DefineFixed(new(zone()) LCallConstantFunction, eax), instr); |
} |
@@ -1142,7 +1149,7 @@ |
LOperand* context = UseFixed(instr->context(), esi); |
LOperand* function = UseFixed(instr->function(), edi); |
argument_count_ -= instr->argument_count(); |
- LInvokeFunction* result = new LInvokeFunction(context, function); |
+ LInvokeFunction* result = new(zone()) LInvokeFunction(context, function); |
return MarkAsCall(DefineFixed(result, eax), instr, CANNOT_DEOPTIMIZE_EAGERLY); |
} |
@@ -1154,17 +1161,20 @@ |
ASSERT(instr->value()->representation().IsDouble()); |
LOperand* context = UseAny(instr->context()); // Not actually used. |
LOperand* input = UseRegisterAtStart(instr->value()); |
- LUnaryMathOperation* result = new LUnaryMathOperation(context, input); |
+ LUnaryMathOperation* result = new(zone()) LUnaryMathOperation(context, |
+ input); |
return DefineSameAsFirst(result); |
} else if (op == kMathSin || op == kMathCos) { |
LOperand* context = UseFixed(instr->context(), esi); |
LOperand* input = UseFixedDouble(instr->value(), xmm1); |
- LUnaryMathOperation* result = new LUnaryMathOperation(context, input); |
+ LUnaryMathOperation* result = new(zone()) LUnaryMathOperation(context, |
+ input); |
return MarkAsCall(DefineFixedDouble(result, xmm1), instr); |
} else { |
LOperand* input = UseRegisterAtStart(instr->value()); |
LOperand* context = UseAny(instr->context()); // Deferred use by MathAbs. |
- LUnaryMathOperation* result = new LUnaryMathOperation(context, input); |
+ LUnaryMathOperation* result = new(zone()) LUnaryMathOperation(context, |
+ input); |
switch (op) { |
case kMathAbs: |
return AssignEnvironment(AssignPointerMap(DefineSameAsFirst(result))); |
@@ -1189,7 +1199,7 @@ |
LOperand* context = UseFixed(instr->context(), esi); |
LOperand* key = UseFixed(instr->key(), ecx); |
argument_count_ -= instr->argument_count(); |
- LCallKeyed* result = new LCallKeyed(context, key); |
+ LCallKeyed* result = new(zone()) LCallKeyed(context, key); |
return MarkAsCall(DefineFixed(result, eax), instr); |
} |
@@ -1197,7 +1207,7 @@ |
LInstruction* LChunkBuilder::DoCallNamed(HCallNamed* instr) { |
LOperand* context = UseFixed(instr->context(), esi); |
argument_count_ -= instr->argument_count(); |
- LCallNamed* result = new LCallNamed(context); |
+ LCallNamed* result = new(zone()) LCallNamed(context); |
return MarkAsCall(DefineFixed(result, eax), instr); |
} |
@@ -1205,14 +1215,14 @@ |
LInstruction* LChunkBuilder::DoCallGlobal(HCallGlobal* instr) { |
LOperand* context = UseFixed(instr->context(), esi); |
argument_count_ -= instr->argument_count(); |
- LCallGlobal* result = new LCallGlobal(context); |
+ LCallGlobal* result = new(zone()) LCallGlobal(context); |
return MarkAsCall(DefineFixed(result, eax), instr); |
} |
LInstruction* LChunkBuilder::DoCallKnownGlobal(HCallKnownGlobal* instr) { |
argument_count_ -= instr->argument_count(); |
- return MarkAsCall(DefineFixed(new LCallKnownGlobal, eax), instr); |
+ return MarkAsCall(DefineFixed(new(zone()) LCallKnownGlobal, eax), instr); |
} |
@@ -1220,7 +1230,7 @@ |
LOperand* context = UseFixed(instr->context(), esi); |
LOperand* constructor = UseFixed(instr->constructor(), edi); |
argument_count_ -= instr->argument_count(); |
- LCallNew* result = new LCallNew(context, constructor); |
+ LCallNew* result = new(zone()) LCallNew(context, constructor); |
return MarkAsCall(DefineFixed(result, eax), instr); |
} |
@@ -1228,7 +1238,7 @@ |
LInstruction* LChunkBuilder::DoCallFunction(HCallFunction* instr) { |
LOperand* context = UseFixed(instr->context(), esi); |
argument_count_ -= instr->argument_count(); |
- LCallFunction* result = new LCallFunction(context); |
+ LCallFunction* result = new(zone()) LCallFunction(context); |
return MarkAsCall(DefineFixed(result, eax), instr); |
} |
@@ -1236,7 +1246,7 @@ |
LInstruction* LChunkBuilder::DoCallRuntime(HCallRuntime* instr) { |
argument_count_ -= instr->argument_count(); |
LOperand* context = UseFixed(instr->context(), esi); |
- return MarkAsCall(DefineFixed(new LCallRuntime(context), eax), instr); |
+ return MarkAsCall(DefineFixed(new(zone()) LCallRuntime(context), eax), instr); |
} |
@@ -1262,7 +1272,7 @@ |
LOperand* left = UseRegisterAtStart(instr->LeastConstantOperand()); |
LOperand* right = UseOrConstantAtStart(instr->MostConstantOperand()); |
- return DefineSameAsFirst(new LBitI(left, right)); |
+ return DefineSameAsFirst(new(zone()) LBitI(left, right)); |
} else { |
ASSERT(instr->representation().IsTagged()); |
ASSERT(instr->left()->representation().IsTagged()); |
@@ -1271,7 +1281,8 @@ |
LOperand* context = UseFixed(instr->context(), esi); |
LOperand* left = UseFixed(instr->left(), edx); |
LOperand* right = UseFixed(instr->right(), eax); |
- LArithmeticT* result = new LArithmeticT(instr->op(), context, left, right); |
+ LArithmeticT* result = |
+ new(zone()) LArithmeticT(instr->op(), context, left, right); |
return MarkAsCall(DefineFixed(result, eax), instr); |
} |
} |
@@ -1281,7 +1292,7 @@ |
ASSERT(instr->value()->representation().IsInteger32()); |
ASSERT(instr->representation().IsInteger32()); |
LOperand* input = UseRegisterAtStart(instr->value()); |
- LBitNotI* result = new LBitNotI(input); |
+ LBitNotI* result = new(zone()) LBitNotI(input); |
return DefineSameAsFirst(result); |
} |
@@ -1295,7 +1306,7 @@ |
LOperand* temp = FixedTemp(edx); |
LOperand* dividend = UseFixed(instr->left(), eax); |
LOperand* divisor = UseRegister(instr->right()); |
- LDivI* result = new LDivI(dividend, divisor, temp); |
+ LDivI* result = new(zone()) LDivI(dividend, divisor, temp); |
return AssignEnvironment(DefineFixed(result, eax)); |
} else { |
ASSERT(instr->representation().IsTagged()); |
@@ -1313,7 +1324,8 @@ |
if (instr->HasPowerOf2Divisor()) { |
ASSERT(!instr->CheckFlag(HValue::kCanBeDivByZero)); |
LOperand* value = UseRegisterAtStart(instr->left()); |
- LModI* mod = new LModI(value, UseOrConstant(instr->right()), NULL); |
+ LModI* mod = |
+ new(zone()) LModI(value, UseOrConstant(instr->right()), NULL); |
result = DefineSameAsFirst(mod); |
} else { |
// The temporary operand is necessary to ensure that right is |
@@ -1321,7 +1333,7 @@ |
LOperand* temp = FixedTemp(edx); |
LOperand* value = UseFixed(instr->left(), eax); |
LOperand* divisor = UseRegister(instr->right()); |
- LModI* mod = new LModI(value, divisor, temp); |
+ LModI* mod = new(zone()) LModI(value, divisor, temp); |
result = DefineFixed(mod, edx); |
} |
@@ -1338,7 +1350,7 @@ |
// TODO(fschneider): Allow any register as input registers. |
LOperand* left = UseFixedDouble(instr->left(), xmm2); |
LOperand* right = UseFixedDouble(instr->right(), xmm1); |
- LArithmeticD* result = new LArithmeticD(Token::MOD, left, right); |
+ LArithmeticD* result = new(zone()) LArithmeticD(Token::MOD, left, right); |
return MarkAsCall(DefineFixedDouble(result, xmm1), instr); |
} |
} |
@@ -1354,7 +1366,7 @@ |
if (instr->CheckFlag(HValue::kBailoutOnMinusZero)) { |
temp = TempRegister(); |
} |
- LMulI* mul = new LMulI(left, right, temp); |
+ LMulI* mul = new(zone()) LMulI(left, right, temp); |
return AssignEnvironment(DefineSameAsFirst(mul)); |
} else if (instr->representation().IsDouble()) { |
return DoArithmeticD(Token::MUL, instr); |
@@ -1371,7 +1383,7 @@ |
ASSERT(instr->right()->representation().IsInteger32()); |
LOperand* left = UseRegisterAtStart(instr->left()); |
LOperand* right = UseOrConstantAtStart(instr->right()); |
- LSubI* sub = new LSubI(left, right); |
+ LSubI* sub = new(zone()) LSubI(left, right); |
LInstruction* result = DefineSameAsFirst(sub); |
if (instr->CheckFlag(HValue::kCanOverflow)) { |
result = AssignEnvironment(result); |
@@ -1392,7 +1404,7 @@ |
ASSERT(instr->right()->representation().IsInteger32()); |
LOperand* left = UseRegisterAtStart(instr->LeastConstantOperand()); |
LOperand* right = UseOrConstantAtStart(instr->MostConstantOperand()); |
- LAddI* add = new LAddI(left, right); |
+ LAddI* add = new(zone()) LAddI(left, right); |
LInstruction* result = DefineSameAsFirst(add); |
if (instr->CheckFlag(HValue::kCanOverflow)) { |
result = AssignEnvironment(result); |
@@ -1417,7 +1429,7 @@ |
LOperand* right = exponent_type.IsDouble() ? |
UseFixedDouble(instr->right(), xmm2) : |
UseFixed(instr->right(), eax); |
- LPower* result = new LPower(left, right); |
+ LPower* result = new(zone()) LPower(left, right); |
return MarkAsCall(DefineFixedDouble(result, xmm3), instr, |
CAN_DEOPTIMIZE_EAGERLY); |
} |
@@ -1429,7 +1441,7 @@ |
LOperand* context = UseFixed(instr->context(), esi); |
LOperand* left = UseFixed(instr->left(), edx); |
LOperand* right = UseFixed(instr->right(), eax); |
- LCmpT* result = new LCmpT(context, left, right); |
+ LCmpT* result = new(zone()) LCmpT(context, left, right); |
return MarkAsCall(DefineFixed(result, eax), instr); |
} |
@@ -1442,7 +1454,7 @@ |
ASSERT(instr->right()->representation().IsInteger32()); |
LOperand* left = UseRegisterOrConstantAtStart(instr->left()); |
LOperand* right = UseOrConstantAtStart(instr->right()); |
- return new LCmpIDAndBranch(left, right); |
+ return new(zone()) LCmpIDAndBranch(left, right); |
} else { |
ASSERT(r.IsDouble()); |
ASSERT(instr->left()->representation().IsDouble()); |
@@ -1456,7 +1468,7 @@ |
left = UseRegisterAtStart(instr->left()); |
right = UseRegisterAtStart(instr->right()); |
} |
- return new LCmpIDAndBranch(left, right); |
+ return new(zone()) LCmpIDAndBranch(left, right); |
} |
} |
@@ -1465,49 +1477,51 @@ |
HCompareObjectEqAndBranch* instr) { |
LOperand* left = UseRegisterAtStart(instr->left()); |
LOperand* right = UseAtStart(instr->right()); |
- return new LCmpObjectEqAndBranch(left, right); |
+ return new(zone()) LCmpObjectEqAndBranch(left, right); |
} |
LInstruction* LChunkBuilder::DoCompareConstantEqAndBranch( |
HCompareConstantEqAndBranch* instr) { |
- return new LCmpConstantEqAndBranch(UseRegisterAtStart(instr->value())); |
+ return new(zone()) LCmpConstantEqAndBranch( |
+ UseRegisterAtStart(instr->value())); |
} |
LInstruction* LChunkBuilder::DoIsNilAndBranch(HIsNilAndBranch* instr) { |
// We only need a temp register for non-strict compare. |
LOperand* temp = instr->kind() == kStrictEquality ? NULL : TempRegister(); |
- return new LIsNilAndBranch(UseRegisterAtStart(instr->value()), temp); |
+ return new(zone()) LIsNilAndBranch(UseRegisterAtStart(instr->value()), temp); |
} |
LInstruction* LChunkBuilder::DoIsObjectAndBranch(HIsObjectAndBranch* instr) { |
ASSERT(instr->value()->representation().IsTagged()); |
LOperand* temp = TempRegister(); |
- return new LIsObjectAndBranch(UseRegister(instr->value()), temp); |
+ return new(zone()) LIsObjectAndBranch(UseRegister(instr->value()), temp); |
} |
LInstruction* LChunkBuilder::DoIsSmiAndBranch(HIsSmiAndBranch* instr) { |
ASSERT(instr->value()->representation().IsTagged()); |
- return new LIsSmiAndBranch(Use(instr->value())); |
+ return new(zone()) LIsSmiAndBranch(Use(instr->value())); |
} |
LInstruction* LChunkBuilder::DoIsUndetectableAndBranch( |
HIsUndetectableAndBranch* instr) { |
ASSERT(instr ->value()->representation().IsTagged()); |
- return new LIsUndetectableAndBranch(UseRegisterAtStart(instr->value()), |
- TempRegister()); |
+ return new(zone()) LIsUndetectableAndBranch( |
+ UseRegisterAtStart(instr->value()), TempRegister()); |
} |
LInstruction* LChunkBuilder::DoHasInstanceTypeAndBranch( |
HHasInstanceTypeAndBranch* instr) { |
ASSERT(instr->value()->representation().IsTagged()); |
- return new LHasInstanceTypeAndBranch(UseRegisterAtStart(instr->value()), |
- TempRegister()); |
+ return new(zone()) LHasInstanceTypeAndBranch( |
+ UseRegisterAtStart(instr->value()), |
+ TempRegister()); |
} |
@@ -1516,14 +1530,14 @@ |
ASSERT(instr->value()->representation().IsTagged()); |
LOperand* value = UseRegisterAtStart(instr->value()); |
- return DefineAsRegister(new LGetCachedArrayIndex(value)); |
+ return DefineAsRegister(new(zone()) LGetCachedArrayIndex(value)); |
} |
LInstruction* LChunkBuilder::DoHasCachedArrayIndexAndBranch( |
HHasCachedArrayIndexAndBranch* instr) { |
ASSERT(instr->value()->representation().IsTagged()); |
- return new LHasCachedArrayIndexAndBranch( |
+ return new(zone()) LHasCachedArrayIndexAndBranch( |
UseRegisterAtStart(instr->value())); |
} |
@@ -1531,7 +1545,7 @@ |
LInstruction* LChunkBuilder::DoClassOfTestAndBranch( |
HClassOfTestAndBranch* instr) { |
ASSERT(instr->value()->representation().IsTagged()); |
- return new LClassOfTestAndBranch(UseTempRegister(instr->value()), |
+ return new(zone()) LClassOfTestAndBranch(UseTempRegister(instr->value()), |
TempRegister(), |
TempRegister()); |
} |
@@ -1539,32 +1553,32 @@ |
LInstruction* LChunkBuilder::DoJSArrayLength(HJSArrayLength* instr) { |
LOperand* array = UseRegisterAtStart(instr->value()); |
- return DefineAsRegister(new LJSArrayLength(array)); |
+ return DefineAsRegister(new(zone()) LJSArrayLength(array)); |
} |
LInstruction* LChunkBuilder::DoFixedArrayBaseLength( |
HFixedArrayBaseLength* instr) { |
LOperand* array = UseRegisterAtStart(instr->value()); |
- return DefineAsRegister(new LFixedArrayBaseLength(array)); |
+ return DefineAsRegister(new(zone()) LFixedArrayBaseLength(array)); |
} |
LInstruction* LChunkBuilder::DoElementsKind(HElementsKind* instr) { |
LOperand* object = UseRegisterAtStart(instr->value()); |
- return DefineAsRegister(new LElementsKind(object)); |
+ return DefineAsRegister(new(zone()) LElementsKind(object)); |
} |
LInstruction* LChunkBuilder::DoValueOf(HValueOf* instr) { |
LOperand* object = UseRegister(instr->value()); |
- LValueOf* result = new LValueOf(object, TempRegister()); |
+ LValueOf* result = new(zone()) LValueOf(object, TempRegister()); |
return AssignEnvironment(DefineSameAsFirst(result)); |
} |
LInstruction* LChunkBuilder::DoBoundsCheck(HBoundsCheck* instr) { |
- return AssignEnvironment(new LBoundsCheck( |
+ return AssignEnvironment(new(zone()) LBoundsCheck( |
UseRegisterOrConstantAtStart(instr->index()), |
UseAtStart(instr->length()))); |
} |
@@ -1580,7 +1594,7 @@ |
LInstruction* LChunkBuilder::DoThrow(HThrow* instr) { |
LOperand* context = UseFixed(instr->context(), esi); |
LOperand* value = UseFixed(instr->value(), eax); |
- return MarkAsCall(new LThrow(context, value), instr); |
+ return MarkAsCall(new(zone()) LThrow(context, value), instr); |
} |
@@ -1603,7 +1617,7 @@ |
if (from.IsTagged()) { |
if (to.IsDouble()) { |
LOperand* value = UseRegister(instr->value()); |
- LNumberUntagD* res = new LNumberUntagD(value); |
+ LNumberUntagD* res = new(zone()) LNumberUntagD(value); |
return AssignEnvironment(DefineAsRegister(res)); |
} else { |
ASSERT(to.IsInteger32()); |
@@ -1615,10 +1629,10 @@ |
(truncating && CpuFeatures::IsSupported(SSE3)) |
? NULL |
: FixedTemp(xmm1); |
- LTaggedToI* res = new LTaggedToI(value, xmm_temp); |
+ LTaggedToI* res = new(zone()) LTaggedToI(value, xmm_temp); |
return AssignEnvironment(DefineSameAsFirst(res)); |
} else { |
- return DefineSameAsFirst(new LSmiUntag(value, needs_check)); |
+ return DefineSameAsFirst(new(zone()) LSmiUntag(value, needs_check)); |
} |
} |
} else if (from.IsDouble()) { |
@@ -1628,7 +1642,7 @@ |
// Make sure that temp and result_temp are different registers. |
LUnallocated* result_temp = TempRegister(); |
- LNumberTagD* result = new LNumberTagD(value, temp); |
+ LNumberTagD* result = new(zone()) LNumberTagD(value, temp); |
return AssignPointerMap(Define(result, result_temp)); |
} else { |
ASSERT(to.IsInteger32()); |
@@ -1637,21 +1651,23 @@ |
LOperand* value = needs_temp ? |
UseTempRegister(instr->value()) : UseRegister(instr->value()); |
LOperand* temp = needs_temp ? TempRegister() : NULL; |
- return AssignEnvironment(DefineAsRegister(new LDoubleToI(value, temp))); |
+ return AssignEnvironment( |
+ DefineAsRegister(new(zone()) LDoubleToI(value, temp))); |
} |
} else if (from.IsInteger32()) { |
if (to.IsTagged()) { |
HValue* val = instr->value(); |
LOperand* value = UseRegister(val); |
if (val->HasRange() && val->range()->IsInSmiRange()) { |
- return DefineSameAsFirst(new LSmiTag(value)); |
+ return DefineSameAsFirst(new(zone()) LSmiTag(value)); |
} else { |
- LNumberTagI* result = new LNumberTagI(value); |
+ LNumberTagI* result = new(zone()) LNumberTagI(value); |
return AssignEnvironment(AssignPointerMap(DefineSameAsFirst(result))); |
} |
} else { |
ASSERT(to.IsDouble()); |
- return DefineAsRegister(new LInteger32ToDouble(Use(instr->value()))); |
+ return DefineAsRegister( |
+ new(zone()) LInteger32ToDouble(Use(instr->value()))); |
} |
} |
UNREACHABLE(); |
@@ -1661,28 +1677,28 @@ |
LInstruction* LChunkBuilder::DoCheckNonSmi(HCheckNonSmi* instr) { |
LOperand* value = UseAtStart(instr->value()); |
- return AssignEnvironment(new LCheckNonSmi(value)); |
+ return AssignEnvironment(new(zone()) LCheckNonSmi(value)); |
} |
LInstruction* LChunkBuilder::DoCheckInstanceType(HCheckInstanceType* instr) { |
LOperand* value = UseRegisterAtStart(instr->value()); |
LOperand* temp = TempRegister(); |
- LCheckInstanceType* result = new LCheckInstanceType(value, temp); |
+ LCheckInstanceType* result = new(zone()) LCheckInstanceType(value, temp); |
return AssignEnvironment(result); |
} |
LInstruction* LChunkBuilder::DoCheckPrototypeMaps(HCheckPrototypeMaps* instr) { |
LOperand* temp = TempRegister(); |
- LCheckPrototypeMaps* result = new LCheckPrototypeMaps(temp); |
+ LCheckPrototypeMaps* result = new(zone()) LCheckPrototypeMaps(temp); |
return AssignEnvironment(result); |
} |
LInstruction* LChunkBuilder::DoCheckSmi(HCheckSmi* instr) { |
LOperand* value = UseAtStart(instr->value()); |
- return AssignEnvironment(new LCheckSmi(value)); |
+ return AssignEnvironment(new(zone()) LCheckSmi(value)); |
} |
@@ -1694,13 +1710,13 @@ |
LOperand* value = Isolate::Current()->heap()->InNewSpace(*instr->target()) |
? UseRegisterAtStart(instr->value()) |
: UseAtStart(instr->value()); |
- return AssignEnvironment(new LCheckFunction(value)); |
+ return AssignEnvironment(new(zone()) LCheckFunction(value)); |
} |
LInstruction* LChunkBuilder::DoCheckMap(HCheckMap* instr) { |
LOperand* value = UseRegisterAtStart(instr->value()); |
- LCheckMap* result = new LCheckMap(value); |
+ LCheckMap* result = new(zone()) LCheckMap(value); |
return AssignEnvironment(result); |
} |
@@ -1710,17 +1726,17 @@ |
Representation input_rep = value->representation(); |
if (input_rep.IsDouble()) { |
LOperand* reg = UseRegister(value); |
- return DefineAsRegister(new LClampDToUint8(reg)); |
+ return DefineAsRegister(new(zone()) LClampDToUint8(reg)); |
} else if (input_rep.IsInteger32()) { |
LOperand* reg = UseFixed(value, eax); |
- return DefineFixed(new LClampIToUint8(reg), eax); |
+ return DefineFixed(new(zone()) LClampIToUint8(reg), eax); |
} else { |
ASSERT(input_rep.IsTagged()); |
LOperand* reg = UseFixed(value, eax); |
// Register allocator doesn't (yet) support allocation of double |
// temps. Reserve xmm1 explicitly. |
LOperand* temp = FixedTemp(xmm1); |
- LClampTToUint8* result = new LClampTToUint8(reg, temp); |
+ LClampTToUint8* result = new(zone()) LClampTToUint8(reg, temp); |
return AssignEnvironment(DefineFixed(result, eax)); |
} |
} |
@@ -1735,7 +1751,7 @@ |
LOperand* reg = UseRegister(value); |
LOperand* temp_reg = |
CpuFeatures::IsSupported(SSE3) ? NULL : TempRegister(); |
- result = DefineAsRegister(new LDoubleToI(reg, temp_reg)); |
+ result = DefineAsRegister(new(zone()) LDoubleToI(reg, temp_reg)); |
} else if (input_rep.IsInteger32()) { |
// Canonicalization should already have removed the hydrogen instruction in |
// this case, since it is a noop. |
@@ -1748,29 +1764,29 @@ |
// temps. Reserve xmm1 explicitly. |
LOperand* xmm_temp = |
CpuFeatures::IsSupported(SSE3) ? NULL : FixedTemp(xmm1); |
- result = DefineSameAsFirst(new LTaggedToI(reg, xmm_temp)); |
+ result = DefineSameAsFirst(new(zone()) LTaggedToI(reg, xmm_temp)); |
} |
return AssignEnvironment(result); |
} |
LInstruction* LChunkBuilder::DoReturn(HReturn* instr) { |
- return new LReturn(UseFixed(instr->value(), eax)); |
+ return new(zone()) LReturn(UseFixed(instr->value(), eax)); |
} |
LInstruction* LChunkBuilder::DoConstant(HConstant* instr) { |
Representation r = instr->representation(); |
if (r.IsInteger32()) { |
- return DefineAsRegister(new LConstantI); |
+ return DefineAsRegister(new(zone()) LConstantI); |
} else if (r.IsDouble()) { |
double value = instr->DoubleValue(); |
LOperand* temp = (BitCast<uint64_t, double>(value) != 0) |
? TempRegister() |
: NULL; |
- return DefineAsRegister(new LConstantD(temp)); |
+ return DefineAsRegister(new(zone()) LConstantD(temp)); |
} else if (r.IsTagged()) { |
- return DefineAsRegister(new LConstantT); |
+ return DefineAsRegister(new(zone()) LConstantT); |
} else { |
UNREACHABLE(); |
return NULL; |
@@ -1779,7 +1795,7 @@ |
LInstruction* LChunkBuilder::DoLoadGlobalCell(HLoadGlobalCell* instr) { |
- LLoadGlobalCell* result = new LLoadGlobalCell; |
+ LLoadGlobalCell* result = new(zone()) LLoadGlobalCell; |
return instr->RequiresHoleCheck() |
? AssignEnvironment(DefineAsRegister(result)) |
: DefineAsRegister(result); |
@@ -1789,14 +1805,15 @@ |
LInstruction* LChunkBuilder::DoLoadGlobalGeneric(HLoadGlobalGeneric* instr) { |
LOperand* context = UseFixed(instr->context(), esi); |
LOperand* global_object = UseFixed(instr->global_object(), eax); |
- LLoadGlobalGeneric* result = new LLoadGlobalGeneric(context, global_object); |
+ LLoadGlobalGeneric* result = |
+ new(zone()) LLoadGlobalGeneric(context, global_object); |
return MarkAsCall(DefineFixed(result, eax), instr); |
} |
LInstruction* LChunkBuilder::DoStoreGlobalCell(HStoreGlobalCell* instr) { |
LStoreGlobalCell* result = |
- new LStoreGlobalCell(UseTempRegister(instr->value()), |
+ new(zone()) LStoreGlobalCell(UseTempRegister(instr->value()), |
TempRegister(), |
TempRegister()); |
return instr->RequiresHoleCheck() ? AssignEnvironment(result) : result; |
@@ -1808,14 +1825,14 @@ |
LOperand* global_object = UseFixed(instr->global_object(), edx); |
LOperand* value = UseFixed(instr->value(), eax); |
LStoreGlobalGeneric* result = |
- new LStoreGlobalGeneric(context, global_object, value); |
+ new(zone()) LStoreGlobalGeneric(context, global_object, value); |
return MarkAsCall(result, instr); |
} |
LInstruction* LChunkBuilder::DoLoadContextSlot(HLoadContextSlot* instr) { |
LOperand* context = UseRegisterAtStart(instr->value()); |
- return DefineAsRegister(new LLoadContextSlot(context)); |
+ return DefineAsRegister(new(zone()) LLoadContextSlot(context)); |
} |
@@ -1830,14 +1847,14 @@ |
value = UseRegister(instr->value()); |
temp = NULL; |
} |
- return new LStoreContextSlot(context, value, temp); |
+ return new(zone()) LStoreContextSlot(context, value, temp); |
} |
LInstruction* LChunkBuilder::DoLoadNamedField(HLoadNamedField* instr) { |
ASSERT(instr->representation().IsTagged()); |
LOperand* obj = UseRegisterAtStart(instr->object()); |
- return DefineAsRegister(new LLoadNamedField(obj)); |
+ return DefineAsRegister(new(zone()) LLoadNamedField(obj)); |
} |
@@ -1848,12 +1865,12 @@ |
if (instr->need_generic()) { |
LOperand* obj = UseFixed(instr->object(), eax); |
LLoadNamedFieldPolymorphic* result = |
- new LLoadNamedFieldPolymorphic(context, obj); |
+ new(zone()) LLoadNamedFieldPolymorphic(context, obj); |
return MarkAsCall(DefineFixed(result, eax), instr); |
} else { |
LOperand* obj = UseRegisterAtStart(instr->object()); |
LLoadNamedFieldPolymorphic* result = |
- new LLoadNamedFieldPolymorphic(context, obj); |
+ new(zone()) LLoadNamedFieldPolymorphic(context, obj); |
return AssignEnvironment(DefineAsRegister(result)); |
} |
} |
@@ -1862,7 +1879,7 @@ |
LInstruction* LChunkBuilder::DoLoadNamedGeneric(HLoadNamedGeneric* instr) { |
LOperand* context = UseFixed(instr->context(), esi); |
LOperand* object = UseFixed(instr->object(), eax); |
- LLoadNamedGeneric* result = new LLoadNamedGeneric(context, object); |
+ LLoadNamedGeneric* result = new(zone()) LLoadNamedGeneric(context, object); |
return MarkAsCall(DefineFixed(result, eax), instr); |
} |
@@ -1870,21 +1887,21 @@ |
LInstruction* LChunkBuilder::DoLoadFunctionPrototype( |
HLoadFunctionPrototype* instr) { |
return AssignEnvironment(DefineAsRegister( |
- new LLoadFunctionPrototype(UseRegister(instr->function()), |
- TempRegister()))); |
+ new(zone()) LLoadFunctionPrototype(UseRegister(instr->function()), |
+ TempRegister()))); |
} |
LInstruction* LChunkBuilder::DoLoadElements(HLoadElements* instr) { |
LOperand* input = UseRegisterAtStart(instr->value()); |
- return DefineAsRegister(new LLoadElements(input)); |
+ return DefineAsRegister(new(zone()) LLoadElements(input)); |
} |
LInstruction* LChunkBuilder::DoLoadExternalArrayPointer( |
HLoadExternalArrayPointer* instr) { |
LOperand* input = UseRegisterAtStart(instr->value()); |
- return DefineAsRegister(new LLoadExternalArrayPointer(input)); |
+ return DefineAsRegister(new(zone()) LLoadExternalArrayPointer(input)); |
} |
@@ -1894,7 +1911,7 @@ |
ASSERT(instr->key()->representation().IsInteger32()); |
LOperand* obj = UseRegisterAtStart(instr->object()); |
LOperand* key = UseRegisterOrConstantAtStart(instr->key()); |
- LLoadKeyedFastElement* result = new LLoadKeyedFastElement(obj, key); |
+ LLoadKeyedFastElement* result = new(zone()) LLoadKeyedFastElement(obj, key); |
return AssignEnvironment(DefineAsRegister(result)); |
} |
@@ -1906,7 +1923,7 @@ |
LOperand* elements = UseRegisterAtStart(instr->elements()); |
LOperand* key = UseRegisterOrConstantAtStart(instr->key()); |
LLoadKeyedFastDoubleElement* result = |
- new LLoadKeyedFastDoubleElement(elements, key); |
+ new(zone()) LLoadKeyedFastDoubleElement(elements, key); |
return AssignEnvironment(DefineAsRegister(result)); |
} |
@@ -1926,7 +1943,7 @@ |
LOperand* external_pointer = UseRegister(instr->external_pointer()); |
LOperand* key = UseRegisterOrConstant(instr->key()); |
LLoadKeyedSpecializedArrayElement* result = |
- new LLoadKeyedSpecializedArrayElement(external_pointer, |
+ new(zone()) LLoadKeyedSpecializedArrayElement(external_pointer, |
key); |
LInstruction* load_instr = DefineAsRegister(result); |
// An unsigned int array load might overflow and cause a deopt, make sure it |
@@ -1942,7 +1959,8 @@ |
LOperand* object = UseFixed(instr->object(), edx); |
LOperand* key = UseFixed(instr->key(), eax); |
- LLoadKeyedGeneric* result = new LLoadKeyedGeneric(context, object, key); |
+ LLoadKeyedGeneric* result = |
+ new(zone()) LLoadKeyedGeneric(context, object, key); |
return MarkAsCall(DefineFixed(result, eax), instr); |
} |
@@ -1962,7 +1980,7 @@ |
? UseTempRegister(instr->key()) |
: UseRegisterOrConstantAtStart(instr->key()); |
- return AssignEnvironment(new LStoreKeyedFastElement(obj, key, val)); |
+ return AssignEnvironment(new(zone()) LStoreKeyedFastElement(obj, key, val)); |
} |
@@ -1976,7 +1994,7 @@ |
LOperand* val = UseTempRegister(instr->value()); |
LOperand* key = UseRegisterOrConstantAtStart(instr->key()); |
- return new LStoreKeyedFastDoubleElement(elements, key, val); |
+ return new(zone()) LStoreKeyedFastDoubleElement(elements, key, val); |
} |
@@ -2006,9 +2024,9 @@ |
val = UseRegister(instr->value()); |
} |
- return new LStoreKeyedSpecializedArrayElement(external_pointer, |
- key, |
- val); |
+ return new(zone()) LStoreKeyedSpecializedArrayElement(external_pointer, |
+ key, |
+ val); |
} |
@@ -2023,7 +2041,7 @@ |
ASSERT(instr->value()->representation().IsTagged()); |
LStoreKeyedGeneric* result = |
- new LStoreKeyedGeneric(context, object, key, value); |
+ new(zone()) LStoreKeyedGeneric(context, object, key, value); |
return MarkAsCall(result, instr); |
} |
@@ -2036,14 +2054,16 @@ |
LOperand* new_map_reg = TempRegister(); |
LOperand* temp_reg = TempRegister(); |
LTransitionElementsKind* result = |
- new LTransitionElementsKind(object, new_map_reg, temp_reg); |
+ new(zone()) LTransitionElementsKind(object, new_map_reg, temp_reg); |
return DefineSameAsFirst(result); |
} else { |
LOperand* object = UseFixed(instr->object(), eax); |
LOperand* fixed_object_reg = FixedTemp(edx); |
LOperand* new_map_reg = FixedTemp(ebx); |
LTransitionElementsKind* result = |
- new LTransitionElementsKind(object, new_map_reg, fixed_object_reg); |
+ new(zone()) LTransitionElementsKind(object, |
+ new_map_reg, |
+ fixed_object_reg); |
return MarkAsCall(DefineFixed(result, eax), instr); |
} |
} |
@@ -2071,7 +2091,7 @@ |
? TempRegister() |
: NULL; |
- return new LStoreNamedField(obj, val, temp); |
+ return new(zone()) LStoreNamedField(obj, val, temp); |
} |
@@ -2080,7 +2100,8 @@ |
LOperand* object = UseFixed(instr->object(), edx); |
LOperand* value = UseFixed(instr->value(), eax); |
- LStoreNamedGeneric* result = new LStoreNamedGeneric(context, object, value); |
+ LStoreNamedGeneric* result = |
+ new(zone()) LStoreNamedGeneric(context, object, value); |
return MarkAsCall(result, instr); |
} |
@@ -2089,7 +2110,7 @@ |
LOperand* context = UseFixed(instr->context(), esi); |
LOperand* left = UseOrConstantAtStart(instr->left()); |
LOperand* right = UseOrConstantAtStart(instr->right()); |
- LStringAdd* string_add = new LStringAdd(context, left, right); |
+ LStringAdd* string_add = new(zone()) LStringAdd(context, left, right); |
return MarkAsCall(DefineFixed(string_add, eax), instr); |
} |
@@ -2098,7 +2119,8 @@ |
LOperand* string = UseTempRegister(instr->string()); |
LOperand* index = UseTempRegister(instr->index()); |
LOperand* context = UseAny(instr->context()); |
- LStringCharCodeAt* result = new LStringCharCodeAt(context, string, index); |
+ LStringCharCodeAt* result = |
+ new(zone()) LStringCharCodeAt(context, string, index); |
return AssignEnvironment(AssignPointerMap(DefineAsRegister(result))); |
} |
@@ -2106,38 +2128,43 @@ |
LInstruction* LChunkBuilder::DoStringCharFromCode(HStringCharFromCode* instr) { |
LOperand* char_code = UseRegister(instr->value()); |
LOperand* context = UseAny(instr->context()); |
- LStringCharFromCode* result = new LStringCharFromCode(context, char_code); |
+ LStringCharFromCode* result = |
+ new(zone()) LStringCharFromCode(context, char_code); |
return AssignPointerMap(DefineAsRegister(result)); |
} |
LInstruction* LChunkBuilder::DoStringLength(HStringLength* instr) { |
LOperand* string = UseRegisterAtStart(instr->value()); |
- return DefineAsRegister(new LStringLength(string)); |
+ return DefineAsRegister(new(zone()) LStringLength(string)); |
} |
LInstruction* LChunkBuilder::DoArrayLiteral(HArrayLiteral* instr) { |
LOperand* context = UseFixed(instr->context(), esi); |
- return MarkAsCall(DefineFixed(new LArrayLiteral(context), eax), instr); |
+ return MarkAsCall( |
+ DefineFixed(new(zone()) LArrayLiteral(context), eax), instr); |
} |
LInstruction* LChunkBuilder::DoObjectLiteral(HObjectLiteral* instr) { |
LOperand* context = UseFixed(instr->context(), esi); |
- return MarkAsCall(DefineFixed(new LObjectLiteral(context), eax), instr); |
+ return MarkAsCall( |
+ DefineFixed(new(zone()) LObjectLiteral(context), eax), instr); |
} |
LInstruction* LChunkBuilder::DoRegExpLiteral(HRegExpLiteral* instr) { |
LOperand* context = UseFixed(instr->context(), esi); |
- return MarkAsCall(DefineFixed(new LRegExpLiteral(context), eax), instr); |
+ return MarkAsCall( |
+ DefineFixed(new(zone()) LRegExpLiteral(context), eax), instr); |
} |
LInstruction* LChunkBuilder::DoFunctionLiteral(HFunctionLiteral* instr) { |
LOperand* context = UseFixed(instr->context(), esi); |
- return MarkAsCall(DefineFixed(new LFunctionLiteral(context), eax), instr); |
+ return MarkAsCall( |
+ DefineFixed(new(zone()) LFunctionLiteral(context), eax), instr); |
} |
@@ -2145,7 +2172,7 @@ |
LOperand* context = UseFixed(instr->context(), esi); |
LOperand* object = UseAtStart(instr->object()); |
LOperand* key = UseOrConstantAtStart(instr->key()); |
- LDeleteProperty* result = new LDeleteProperty(context, object, key); |
+ LDeleteProperty* result = new(zone()) LDeleteProperty(context, object, key); |
return MarkAsCall(DefineFixed(result, eax), instr); |
} |
@@ -2153,13 +2180,13 @@ |
LInstruction* LChunkBuilder::DoOsrEntry(HOsrEntry* instr) { |
allocator_->MarkAsOsrEntry(); |
current_block_->last_environment()->set_ast_id(instr->ast_id()); |
- return AssignEnvironment(new LOsrEntry); |
+ return AssignEnvironment(new(zone()) LOsrEntry); |
} |
LInstruction* LChunkBuilder::DoParameter(HParameter* instr) { |
int spill_index = chunk()->GetParameterStackSlot(instr->index()); |
- return DefineAsSpilled(new LParameter, spill_index); |
+ return DefineAsSpilled(new(zone()) LParameter, spill_index); |
} |
@@ -2169,14 +2196,14 @@ |
Abort("Too many spill slots needed for OSR"); |
spill_index = 0; |
} |
- return DefineAsSpilled(new LUnknownOSRValue, spill_index); |
+ return DefineAsSpilled(new(zone()) LUnknownOSRValue, spill_index); |
} |
LInstruction* LChunkBuilder::DoCallStub(HCallStub* instr) { |
LOperand* context = UseFixed(instr->context(), esi); |
argument_count_ -= instr->argument_count(); |
- LCallStub* result = new LCallStub(context); |
+ LCallStub* result = new(zone()) LCallStub(context); |
return MarkAsCall(DefineFixed(result, eax), instr); |
} |
@@ -2194,14 +2221,15 @@ |
LOperand* arguments = UseRegister(instr->arguments()); |
LOperand* length = UseTempRegister(instr->length()); |
LOperand* index = Use(instr->index()); |
- LAccessArgumentsAt* result = new LAccessArgumentsAt(arguments, length, index); |
+ LAccessArgumentsAt* result = |
+ new(zone()) LAccessArgumentsAt(arguments, length, index); |
return AssignEnvironment(DefineAsRegister(result)); |
} |
LInstruction* LChunkBuilder::DoToFastProperties(HToFastProperties* instr) { |
LOperand* object = UseFixed(instr->value(), eax); |
- LToFastProperties* result = new LToFastProperties(object); |
+ LToFastProperties* result = new(zone()) LToFastProperties(object); |
return MarkAsCall(DefineFixed(result, eax), instr); |
} |
@@ -2209,19 +2237,19 @@ |
LInstruction* LChunkBuilder::DoTypeof(HTypeof* instr) { |
LOperand* context = UseFixed(instr->context(), esi); |
LOperand* value = UseAtStart(instr->value()); |
- LTypeof* result = new LTypeof(context, value); |
+ LTypeof* result = new(zone()) LTypeof(context, value); |
return MarkAsCall(DefineFixed(result, eax), instr); |
} |
LInstruction* LChunkBuilder::DoTypeofIsAndBranch(HTypeofIsAndBranch* instr) { |
- return new LTypeofIsAndBranch(UseTempRegister(instr->value())); |
+ return new(zone()) LTypeofIsAndBranch(UseTempRegister(instr->value())); |
} |
LInstruction* LChunkBuilder::DoIsConstructCallAndBranch( |
HIsConstructCallAndBranch* instr) { |
- return new LIsConstructCallAndBranch(TempRegister()); |
+ return new(zone()) LIsConstructCallAndBranch(TempRegister()); |
} |
@@ -2245,7 +2273,7 @@ |
// lazy bailout instruction to capture the environment. |
if (pending_deoptimization_ast_id_ != AstNode::kNoNumber) { |
ASSERT(pending_deoptimization_ast_id_ == instr->ast_id()); |
- LLazyBailout* lazy_bailout = new LLazyBailout; |
+ LLazyBailout* lazy_bailout = new(zone()) LLazyBailout; |
LInstruction* result = AssignEnvironment(lazy_bailout); |
instruction_pending_deoptimization_environment_-> |
set_deoptimization_environment(result->environment()); |
@@ -2260,11 +2288,12 @@ |
LInstruction* LChunkBuilder::DoStackCheck(HStackCheck* instr) { |
if (instr->is_function_entry()) { |
LOperand* context = UseFixed(instr->context(), esi); |
- return MarkAsCall(new LStackCheck(context), instr); |
+ return MarkAsCall(new(zone()) LStackCheck(context), instr); |
} else { |
ASSERT(instr->is_backwards_branch()); |
LOperand* context = UseAny(instr->context()); |
- return AssignEnvironment(AssignPointerMap(new LStackCheck(context))); |
+ return AssignEnvironment( |
+ AssignPointerMap(new(zone()) LStackCheck(context))); |
} |
} |
@@ -2293,7 +2322,7 @@ |
LOperand* context = UseFixed(instr->context(), esi); |
LOperand* key = UseOrConstantAtStart(instr->key()); |
LOperand* object = UseOrConstantAtStart(instr->object()); |
- LIn* result = new LIn(context, key, object); |
+ LIn* result = new(zone()) LIn(context, key, object); |
return MarkAsCall(DefineFixed(result, eax), instr); |
} |