Chromium Code Reviews| Index: runtime/vm/intermediate_language_ia32.cc |
| =================================================================== |
| --- runtime/vm/intermediate_language_ia32.cc (revision 36483) |
| +++ runtime/vm/intermediate_language_ia32.cc (working copy) |
| @@ -29,17 +29,20 @@ |
| // Generic summary for call instructions that have all arguments pushed |
| // on the stack and return the result in a fixed register EAX. |
| LocationSummary* Instruction::MakeCallSummary() { |
| - LocationSummary* result = new LocationSummary(0, 0, LocationSummary::kCall); |
| + Isolate* isolate = Isolate::Current(); |
| + LocationSummary* result = new(isolate) LocationSummary( |
| + isolate,0, 0, LocationSummary::kCall); |
| result->set_out(0, Location::RegisterLocation(EAX)); |
| return result; |
| } |
| -LocationSummary* PushArgumentInstr::MakeLocationSummary(bool opt) const { |
| +LocationSummary* PushArgumentInstr::MakeLocationSummary(Isolate* isolate, |
| + bool opt) const { |
| const intptr_t kNumInputs = 1; |
| const intptr_t kNumTemps= 0; |
| - LocationSummary* locs = |
| - new LocationSummary(kNumInputs, kNumTemps, LocationSummary::kNoCall); |
| + LocationSummary* locs = new (isolate) LocationSummary(isolate, |
| + kNumInputs, kNumTemps, LocationSummary::kNoCall); |
| locs->set_in(0, Location::AnyOrConstant(value())); |
| return locs; |
| } |
| @@ -62,11 +65,12 @@ |
| } |
| -LocationSummary* ReturnInstr::MakeLocationSummary(bool opt) const { |
| +LocationSummary* ReturnInstr::MakeLocationSummary(Isolate* isolate, |
| + bool opt) const { |
| const intptr_t kNumInputs = 1; |
| const intptr_t kNumTemps = 0; |
| LocationSummary* locs = |
| - new LocationSummary(kNumInputs, kNumTemps, LocationSummary::kNoCall); |
| + new (isolate) LocationSummary(isolate, kNumInputs, kNumTemps, LocationSummary::kNoCall); |
| locs->set_in(0, Location::RegisterLocation(EAX)); |
| return locs; |
| } |
| @@ -96,7 +100,8 @@ |
| } |
| -LocationSummary* LoadLocalInstr::MakeLocationSummary(bool opt) const { |
| +LocationSummary* LoadLocalInstr::MakeLocationSummary(Isolate* isolate, |
| + bool opt) const { |
| const intptr_t kNumInputs = 0; |
| const intptr_t stack_index = (local().index() < 0) |
| ? kFirstLocalSlotFromFp - local().index() |
| @@ -113,7 +118,8 @@ |
| } |
| -LocationSummary* StoreLocalInstr::MakeLocationSummary(bool opt) const { |
| +LocationSummary* StoreLocalInstr::MakeLocationSummary(Isolate* isolate, |
| + bool opt) const { |
| const intptr_t kNumInputs = 1; |
| return LocationSummary::Make(kNumInputs, |
| Location::SameAsFirstInput(), |
| @@ -129,7 +135,8 @@ |
| } |
| -LocationSummary* ConstantInstr::MakeLocationSummary(bool opt) const { |
| +LocationSummary* ConstantInstr::MakeLocationSummary(Isolate* isolate, |
| + bool opt) const { |
| const intptr_t kNumInputs = 0; |
| return LocationSummary::Make(kNumInputs, |
| Location::RequiresRegister(), |
| @@ -146,11 +153,12 @@ |
| } |
| -LocationSummary* UnboxedConstantInstr::MakeLocationSummary(bool opt) const { |
| +LocationSummary* UnboxedConstantInstr::MakeLocationSummary(Isolate* isolate, |
| + bool opt) const { |
| const intptr_t kNumInputs = 0; |
| const intptr_t kNumTemps = (constant_address() == 0) ? 1 : 0; |
| LocationSummary* locs = |
| - new LocationSummary(kNumInputs, kNumTemps, LocationSummary::kNoCall); |
| + new (isolate) LocationSummary(isolate, kNumInputs, kNumTemps, LocationSummary::kNoCall); |
| locs->set_out(0, Location::RequiresFpuRegister()); |
| if (kNumTemps == 1) { |
| locs->set_temp(0, Location::RequiresRegister()); |
| @@ -176,11 +184,12 @@ |
| } |
| -LocationSummary* AssertAssignableInstr::MakeLocationSummary(bool opt) const { |
| +LocationSummary* AssertAssignableInstr::MakeLocationSummary(Isolate* isolate, |
| + bool opt) const { |
| const intptr_t kNumInputs = 3; |
| const intptr_t kNumTemps = 0; |
| LocationSummary* summary = |
| - new LocationSummary(kNumInputs, kNumTemps, LocationSummary::kCall); |
| + new (isolate) LocationSummary(isolate, kNumInputs, kNumTemps, LocationSummary::kCall); |
|
srdjan
2014/05/22 17:25:08
Here and elsewhere: 80 char limit.
|
| summary->set_in(0, Location::RegisterLocation(EAX)); // Value. |
| summary->set_in(1, Location::RegisterLocation(ECX)); // Instantiator. |
| summary->set_in(2, Location::RegisterLocation(EDX)); // Type arguments. |
| @@ -189,11 +198,12 @@ |
| } |
| -LocationSummary* AssertBooleanInstr::MakeLocationSummary(bool opt) const { |
| +LocationSummary* AssertBooleanInstr::MakeLocationSummary(Isolate* isolate, |
| + bool opt) const { |
| const intptr_t kNumInputs = 1; |
| const intptr_t kNumTemps = 0; |
| LocationSummary* locs = |
| - new LocationSummary(kNumInputs, kNumTemps, LocationSummary::kCall); |
| + new (isolate) LocationSummary(isolate, kNumInputs, kNumTemps, LocationSummary::kCall); |
| locs->set_in(0, Location::RegisterLocation(EAX)); |
| locs->set_out(0, Location::RegisterLocation(EAX)); |
| return locs; |
| @@ -250,12 +260,13 @@ |
| } |
| -LocationSummary* EqualityCompareInstr::MakeLocationSummary(bool opt) const { |
| +LocationSummary* EqualityCompareInstr::MakeLocationSummary(Isolate* isolate, |
| + bool opt) const { |
| const intptr_t kNumInputs = 2; |
| if (operation_cid() == kMintCid) { |
| const intptr_t kNumTemps = 0; |
| LocationSummary* locs = |
| - new LocationSummary(kNumInputs, kNumTemps, LocationSummary::kNoCall); |
| + new (isolate) LocationSummary(isolate, kNumInputs, kNumTemps, LocationSummary::kNoCall); |
| locs->set_in(0, Location::Pair(Location::RequiresRegister(), |
| Location::RequiresRegister())); |
| locs->set_in(1, Location::Pair(Location::RequiresRegister(), |
| @@ -266,7 +277,7 @@ |
| if (operation_cid() == kDoubleCid) { |
| const intptr_t kNumTemps = 0; |
| LocationSummary* locs = |
| - new LocationSummary(kNumInputs, kNumTemps, LocationSummary::kNoCall); |
| + new (isolate) LocationSummary(isolate, kNumInputs, kNumTemps, LocationSummary::kNoCall); |
| locs->set_in(0, Location::RequiresFpuRegister()); |
| locs->set_in(1, Location::RequiresFpuRegister()); |
| locs->set_out(0, Location::RequiresRegister()); |
| @@ -275,7 +286,7 @@ |
| if (operation_cid() == kSmiCid) { |
| const intptr_t kNumTemps = 0; |
| LocationSummary* locs = |
| - new LocationSummary(kNumInputs, kNumTemps, LocationSummary::kNoCall); |
| + new (isolate) LocationSummary(isolate, kNumInputs, kNumTemps, LocationSummary::kNoCall); |
| locs->set_in(0, Location::RegisterOrConstant(left())); |
| // Only one input can be a constant operand. The case of two constant |
| // operands should be handled by constant propagation. |
| @@ -569,11 +580,12 @@ |
| } |
| -LocationSummary* TestSmiInstr::MakeLocationSummary(bool opt) const { |
| +LocationSummary* TestSmiInstr::MakeLocationSummary(Isolate* isolate, |
| + bool opt) const { |
| const intptr_t kNumInputs = 2; |
| const intptr_t kNumTemps = 0; |
| LocationSummary* locs = |
| - new LocationSummary(kNumInputs, kNumTemps, LocationSummary::kNoCall); |
| + new (isolate) LocationSummary(isolate, kNumInputs, kNumTemps, LocationSummary::kNoCall); |
| locs->set_in(0, Location::RequiresRegister()); |
| // Only one input can be a constant operand. The case of two constant |
| // operands should be handled by constant propagation. |
| @@ -614,11 +626,12 @@ |
| -LocationSummary* TestCidsInstr::MakeLocationSummary(bool opt) const { |
| +LocationSummary* TestCidsInstr::MakeLocationSummary(Isolate* isolate, |
| + bool opt) const { |
| const intptr_t kNumInputs = 1; |
| const intptr_t kNumTemps = 1; |
| LocationSummary* locs = |
| - new LocationSummary(kNumInputs, kNumTemps, LocationSummary::kNoCall); |
| + new (isolate) LocationSummary(isolate, kNumInputs, kNumTemps, LocationSummary::kNoCall); |
| locs->set_in(0, Location::RequiresRegister()); |
| locs->set_temp(0, Location::RequiresRegister()); |
| locs->set_out(0, Location::RequiresRegister()); |
| @@ -685,13 +698,14 @@ |
| } |
| -LocationSummary* RelationalOpInstr::MakeLocationSummary(bool opt) const { |
| +LocationSummary* RelationalOpInstr::MakeLocationSummary(Isolate* isolate, |
| + bool opt) const { |
| const intptr_t kNumInputs = 2; |
| const intptr_t kNumTemps = 0; |
| if (operation_cid() == kMintCid) { |
| const intptr_t kNumTemps = 0; |
| LocationSummary* locs = |
| - new LocationSummary(kNumInputs, kNumTemps, LocationSummary::kNoCall); |
| + new (isolate) LocationSummary(isolate, kNumInputs, kNumTemps, LocationSummary::kNoCall); |
| locs->set_in(0, Location::Pair(Location::RequiresRegister(), |
| Location::RequiresRegister())); |
| locs->set_in(1, Location::Pair(Location::RequiresRegister(), |
| @@ -701,7 +715,7 @@ |
| } |
| if (operation_cid() == kDoubleCid) { |
| LocationSummary* summary = |
| - new LocationSummary(kNumInputs, kNumTemps, LocationSummary::kNoCall); |
| + new (isolate) LocationSummary(isolate, kNumInputs, kNumTemps, LocationSummary::kNoCall); |
| summary->set_in(0, Location::RequiresFpuRegister()); |
| summary->set_in(1, Location::RequiresFpuRegister()); |
| summary->set_out(0, Location::RequiresRegister()); |
| @@ -709,7 +723,7 @@ |
| } |
| ASSERT(operation_cid() == kSmiCid); |
| LocationSummary* summary = |
| - new LocationSummary(kNumInputs, kNumTemps, LocationSummary::kNoCall); |
| + new (isolate) LocationSummary(isolate, kNumInputs, kNumTemps, LocationSummary::kNoCall); |
| summary->set_in(0, Location::RegisterOrConstant(left())); |
| // Only one input can be a constant operand. The case of two constant |
| // operands should be handled by constant propagation. |
| @@ -759,11 +773,12 @@ |
| } |
| -LocationSummary* NativeCallInstr::MakeLocationSummary(bool opt) const { |
| +LocationSummary* NativeCallInstr::MakeLocationSummary(Isolate* isolate, |
| + bool opt) const { |
| const intptr_t kNumInputs = 0; |
| const intptr_t kNumTemps = 3; |
| LocationSummary* locs = |
| - new LocationSummary(kNumInputs, kNumTemps, LocationSummary::kCall); |
| + new (isolate) LocationSummary(isolate, kNumInputs, kNumTemps, LocationSummary::kCall); |
| locs->set_temp(0, Location::RegisterLocation(EAX)); |
| locs->set_temp(1, Location::RegisterLocation(ECX)); |
| locs->set_temp(2, Location::RegisterLocation(EDX)); |
| @@ -813,7 +828,8 @@ |
| } |
| -LocationSummary* StringFromCharCodeInstr::MakeLocationSummary(bool opt) const { |
| +LocationSummary* StringFromCharCodeInstr::MakeLocationSummary(Isolate* isolate, |
| + bool opt) const { |
| const intptr_t kNumInputs = 1; |
| // TODO(fschneider): Allow immediate operands for the char code. |
| return LocationSummary::Make(kNumInputs, |
| @@ -834,7 +850,8 @@ |
| } |
| -LocationSummary* StringToCharCodeInstr::MakeLocationSummary(bool opt) const { |
| +LocationSummary* StringToCharCodeInstr::MakeLocationSummary(Isolate* isolate, |
| + bool opt) const { |
| const intptr_t kNumInputs = 1; |
| return LocationSummary::Make(kNumInputs, |
| Location::RequiresRegister(), |
| @@ -859,11 +876,12 @@ |
| } |
| -LocationSummary* StringInterpolateInstr::MakeLocationSummary(bool opt) const { |
| +LocationSummary* StringInterpolateInstr::MakeLocationSummary(Isolate* isolate, |
| + bool opt) const { |
| const intptr_t kNumInputs = 1; |
| const intptr_t kNumTemps = 0; |
| LocationSummary* summary = |
| - new LocationSummary(kNumInputs, kNumTemps, LocationSummary::kCall); |
| + new (isolate) LocationSummary(isolate, kNumInputs, kNumTemps, LocationSummary::kCall); |
| summary->set_in(0, Location::RegisterLocation(EAX)); |
| summary->set_out(0, Location::RegisterLocation(EAX)); |
| return summary; |
| @@ -885,7 +903,8 @@ |
| } |
| -LocationSummary* LoadUntaggedInstr::MakeLocationSummary(bool opt) const { |
| +LocationSummary* LoadUntaggedInstr::MakeLocationSummary(Isolate* isolate, |
| + bool opt) const { |
| const intptr_t kNumInputs = 1; |
| return LocationSummary::Make(kNumInputs, |
| Location::RequiresRegister(), |
| @@ -900,7 +919,8 @@ |
| } |
| -LocationSummary* LoadClassIdInstr::MakeLocationSummary(bool opt) const { |
| +LocationSummary* LoadClassIdInstr::MakeLocationSummary(Isolate* isolate, |
| + bool opt) const { |
| const intptr_t kNumInputs = 1; |
| return LocationSummary::Make(kNumInputs, |
| Location::RequiresRegister(), |
| @@ -1000,11 +1020,12 @@ |
| } |
| -LocationSummary* LoadIndexedInstr::MakeLocationSummary(bool opt) const { |
| +LocationSummary* LoadIndexedInstr::MakeLocationSummary(Isolate* isolate, |
| + bool opt) const { |
| const intptr_t kNumInputs = 2; |
| const intptr_t kNumTemps = 0; |
| LocationSummary* locs = |
| - new LocationSummary(kNumInputs, kNumTemps, LocationSummary::kNoCall); |
| + new (isolate) LocationSummary(isolate, kNumInputs, kNumTemps, LocationSummary::kNoCall); |
| locs->set_in(0, Location::RequiresRegister()); |
| if (CanBeImmediateIndex(index(), class_id())) { |
| // CanBeImmediateIndex must return false for unsafe smis. |
| @@ -1204,11 +1225,12 @@ |
| } |
| -LocationSummary* StoreIndexedInstr::MakeLocationSummary(bool opt) const { |
| +LocationSummary* StoreIndexedInstr::MakeLocationSummary(Isolate* isolate, |
| + bool opt) const { |
| const intptr_t kNumInputs = 3; |
| const intptr_t kNumTemps = 0; |
| LocationSummary* locs = |
| - new LocationSummary(kNumInputs, kNumTemps, LocationSummary::kNoCall); |
| + new (isolate) LocationSummary(isolate, kNumInputs, kNumTemps, LocationSummary::kNoCall); |
| locs->set_in(0, Location::RequiresRegister()); |
| if (CanBeImmediateIndex(index(), class_id())) { |
| // CanBeImmediateIndex must return false for unsafe smis. |
| @@ -1391,10 +1413,11 @@ |
| } |
| -LocationSummary* GuardFieldInstr::MakeLocationSummary(bool opt) const { |
| +LocationSummary* GuardFieldInstr::MakeLocationSummary(Isolate* isolate, |
| + bool opt) const { |
| const intptr_t kNumInputs = 1; |
| LocationSummary* summary = |
| - new LocationSummary(kNumInputs, 0, LocationSummary::kNoCall); |
| + new (isolate) LocationSummary(isolate, kNumInputs, 0, LocationSummary::kNoCall); |
| summary->set_in(0, Location::RequiresRegister()); |
| const bool field_has_length = field().needs_length_check(); |
| const bool need_value_temp_reg = |
| @@ -1765,11 +1788,12 @@ |
| }; |
| -LocationSummary* StoreInstanceFieldInstr::MakeLocationSummary(bool opt) const { |
| +LocationSummary* StoreInstanceFieldInstr::MakeLocationSummary(Isolate* isolate, |
| + bool opt) const { |
| const intptr_t kNumInputs = 2; |
| const intptr_t kNumTemps = 0; |
| LocationSummary* summary = |
| - new LocationSummary(kNumInputs, kNumTemps, |
| + new (isolate) LocationSummary(isolate, kNumInputs, kNumTemps, |
| !field().IsNull() && |
| ((field().guarded_cid() == kIllegalCid) || is_initialization_) |
| ? LocationSummary::kCallOnSlowPath |
| @@ -2020,11 +2044,12 @@ |
| } |
| -LocationSummary* LoadStaticFieldInstr::MakeLocationSummary(bool opt) const { |
| +LocationSummary* LoadStaticFieldInstr::MakeLocationSummary(Isolate* isolate, |
| + bool opt) const { |
| const intptr_t kNumInputs = 1; |
| const intptr_t kNumTemps = 0; |
| LocationSummary* summary = |
| - new LocationSummary(kNumInputs, kNumTemps, LocationSummary::kNoCall); |
| + new (isolate) LocationSummary(isolate, kNumInputs, kNumTemps, LocationSummary::kNoCall); |
| summary->set_in(0, Location::RequiresRegister()); |
| // By specifying same register as input, our simple register allocator can |
| // generate better code. |
| @@ -2045,8 +2070,9 @@ |
| } |
| -LocationSummary* StoreStaticFieldInstr::MakeLocationSummary(bool opt) const { |
| - LocationSummary* locs = new LocationSummary(1, 1, LocationSummary::kNoCall); |
| +LocationSummary* StoreStaticFieldInstr::MakeLocationSummary(Isolate* isolate, |
| + bool opt) const { |
| + LocationSummary* locs = new (isolate) LocationSummary(isolate, 1, 1, LocationSummary::kNoCall); |
| locs->set_in(0, value()->NeedsStoreBuffer() ? Location::WritableRegister() |
| : Location::RequiresRegister()); |
| locs->set_temp(0, Location::RequiresRegister()); |
| @@ -2069,11 +2095,12 @@ |
| } |
| -LocationSummary* InstanceOfInstr::MakeLocationSummary(bool opt) const { |
| +LocationSummary* InstanceOfInstr::MakeLocationSummary(Isolate* isolate, |
| + bool opt) const { |
| const intptr_t kNumInputs = 3; |
| const intptr_t kNumTemps = 0; |
| LocationSummary* summary = |
| - new LocationSummary(kNumInputs, kNumTemps, LocationSummary::kCall); |
| + new (isolate) LocationSummary(isolate, kNumInputs, kNumTemps, LocationSummary::kCall); |
| summary->set_in(0, Location::RegisterLocation(EAX)); |
| summary->set_in(1, Location::RegisterLocation(ECX)); |
| summary->set_in(2, Location::RegisterLocation(EDX)); |
| @@ -2098,11 +2125,12 @@ |
| // TODO(srdjan): In case of constant inputs make CreateArray kNoCall and |
| // use slow path stub. |
| -LocationSummary* CreateArrayInstr::MakeLocationSummary(bool opt) const { |
| +LocationSummary* CreateArrayInstr::MakeLocationSummary(Isolate* isolate, |
| + bool opt) const { |
| const intptr_t kNumInputs = 2; |
| const intptr_t kNumTemps = 0; |
| LocationSummary* locs = |
| - new LocationSummary(kNumInputs, kNumTemps, LocationSummary::kCall); |
| + new (isolate) LocationSummary(isolate, kNumInputs, kNumTemps, LocationSummary::kCall); |
| locs->set_in(0, Location::RegisterLocation(ECX)); |
| locs->set_in(1, Location::RegisterLocation(EDX)); |
| locs->set_out(0, Location::RegisterLocation(EAX)); |
| @@ -2313,11 +2341,12 @@ |
| }; |
| -LocationSummary* LoadFieldInstr::MakeLocationSummary(bool opt) const { |
| +LocationSummary* LoadFieldInstr::MakeLocationSummary(Isolate* isolate, |
| + bool opt) const { |
| const intptr_t kNumInputs = 1; |
| const intptr_t kNumTemps = 0; |
| LocationSummary* locs = |
| - new LocationSummary( |
| + new (isolate) LocationSummary(isolate, |
| kNumInputs, kNumTemps, |
| (opt && !IsPotentialUnboxedLoad()) |
| ? LocationSummary::kNoCall |
| @@ -2459,11 +2488,12 @@ |
| } |
| -LocationSummary* InstantiateTypeInstr::MakeLocationSummary(bool opt) const { |
| +LocationSummary* InstantiateTypeInstr::MakeLocationSummary(Isolate* isolate, |
| + bool opt) const { |
| const intptr_t kNumInputs = 1; |
| const intptr_t kNumTemps = 0; |
| LocationSummary* locs = |
| - new LocationSummary(kNumInputs, kNumTemps, LocationSummary::kCall); |
| + new (isolate) LocationSummary(isolate, kNumInputs, kNumTemps, LocationSummary::kCall); |
| locs->set_in(0, Location::RegisterLocation(EAX)); |
| locs->set_out(0, Location::RegisterLocation(EAX)); |
| return locs; |
| @@ -2491,11 +2521,11 @@ |
| LocationSummary* InstantiateTypeArgumentsInstr::MakeLocationSummary( |
| - bool opt) const { |
| + Isolate* isolate, bool opt) const { |
| const intptr_t kNumInputs = 1; |
| const intptr_t kNumTemps = 0; |
| LocationSummary* locs = |
| - new LocationSummary(kNumInputs, kNumTemps, LocationSummary::kCall); |
| + new (isolate) LocationSummary(isolate, kNumInputs, kNumTemps, LocationSummary::kCall); |
| locs->set_in(0, Location::RegisterLocation(EAX)); |
| locs->set_out(0, Location::RegisterLocation(EAX)); |
| return locs; |
| @@ -2562,11 +2592,12 @@ |
| } |
| -LocationSummary* AllocateContextInstr::MakeLocationSummary(bool opt) const { |
| +LocationSummary* AllocateContextInstr::MakeLocationSummary(Isolate* isolate, |
| + bool opt) const { |
| if (opt) { |
| const intptr_t kNumInputs = 0; |
| const intptr_t kNumTemps = 2; |
| - LocationSummary* locs = new LocationSummary( |
| + LocationSummary* locs = new (isolate) LocationSummary(isolate, |
| kNumInputs, kNumTemps, LocationSummary::kCallOnSlowPath); |
| locs->set_temp(0, Location::RegisterLocation(ECX)); |
| locs->set_temp(1, Location::RegisterLocation(EBX)); |
| @@ -2576,7 +2607,7 @@ |
| const intptr_t kNumInputs = 0; |
| const intptr_t kNumTemps = 1; |
| LocationSummary* locs = |
| - new LocationSummary(kNumInputs, kNumTemps, LocationSummary::kCall); |
| + new (isolate) LocationSummary(isolate, kNumInputs, kNumTemps, LocationSummary::kCall); |
| locs->set_temp(0, Location::RegisterLocation(EDX)); |
| locs->set_out(0, Location::RegisterLocation(EAX)); |
| return locs; |
| @@ -2698,11 +2729,12 @@ |
| } |
| -LocationSummary* CloneContextInstr::MakeLocationSummary(bool opt) const { |
| +LocationSummary* CloneContextInstr::MakeLocationSummary(Isolate* isolate, |
| + bool opt) const { |
| const intptr_t kNumInputs = 1; |
| const intptr_t kNumTemps = 0; |
| LocationSummary* locs = |
| - new LocationSummary(kNumInputs, kNumTemps, LocationSummary::kCall); |
| + new (isolate) LocationSummary(isolate, kNumInputs, kNumTemps, LocationSummary::kCall); |
| locs->set_in(0, Location::RegisterLocation(EAX)); |
| locs->set_out(0, Location::RegisterLocation(EAX)); |
| return locs; |
| @@ -2725,7 +2757,8 @@ |
| } |
| -LocationSummary* CatchBlockEntryInstr::MakeLocationSummary(bool opt) const { |
| +LocationSummary* CatchBlockEntryInstr::MakeLocationSummary(Isolate* isolate, |
| + bool opt) const { |
| UNREACHABLE(); |
| return NULL; |
| } |
| @@ -2758,11 +2791,12 @@ |
| } |
| -LocationSummary* CheckStackOverflowInstr::MakeLocationSummary(bool opt) const { |
| +LocationSummary* CheckStackOverflowInstr::MakeLocationSummary(Isolate* isolate, |
| + bool opt) const { |
| const intptr_t kNumInputs = 0; |
| const intptr_t kNumTemps = 0; |
| LocationSummary* summary = |
| - new LocationSummary(kNumInputs, |
| + new (isolate) LocationSummary(isolate, kNumInputs, |
| kNumTemps, |
| LocationSummary::kCallOnSlowPath); |
| return summary; |
| @@ -2967,12 +3001,13 @@ |
| } |
| -LocationSummary* BinarySmiOpInstr::MakeLocationSummary(bool opt) const { |
| +LocationSummary* BinarySmiOpInstr::MakeLocationSummary(Isolate* isolate, |
| + bool opt) const { |
| const intptr_t kNumInputs = 2; |
| if (op_kind() == Token::kTRUNCDIV) { |
| const intptr_t kNumTemps = 1; |
| LocationSummary* summary = |
| - new LocationSummary(kNumInputs, kNumTemps, LocationSummary::kNoCall); |
| + new (isolate) LocationSummary(isolate, kNumInputs, kNumTemps, LocationSummary::kNoCall); |
| if (RightIsPowerOfTwoConstant()) { |
| summary->set_in(0, Location::RequiresRegister()); |
| ConstantInstr* right_constant = right()->definition()->AsConstant(); |
| @@ -2992,7 +3027,7 @@ |
| } else if (op_kind() == Token::kMOD) { |
| const intptr_t kNumTemps = 1; |
| LocationSummary* summary = |
| - new LocationSummary(kNumInputs, kNumTemps, LocationSummary::kNoCall); |
| + new (isolate) LocationSummary(isolate, kNumInputs, kNumTemps, LocationSummary::kNoCall); |
| // Both inputs must be writable because they will be untagged. |
| summary->set_in(0, Location::RegisterLocation(EDX)); |
| summary->set_in(1, Location::WritableRegister()); |
| @@ -3003,7 +3038,7 @@ |
| } else if (op_kind() == Token::kSHR) { |
| const intptr_t kNumTemps = 0; |
| LocationSummary* summary = |
| - new LocationSummary(kNumInputs, kNumTemps, LocationSummary::kNoCall); |
| + new (isolate) LocationSummary(isolate, kNumInputs, kNumTemps, LocationSummary::kNoCall); |
| summary->set_in(0, Location::RequiresRegister()); |
| summary->set_in(1, Location::FixedRegisterOrSmiConstant(right(), ECX)); |
| summary->set_out(0, Location::SameAsFirstInput()); |
| @@ -3011,7 +3046,7 @@ |
| } else if (op_kind() == Token::kSHL) { |
| const intptr_t kNumTemps = 0; |
| LocationSummary* summary = |
| - new LocationSummary(kNumInputs, kNumTemps, LocationSummary::kNoCall); |
| + new (isolate) LocationSummary(isolate, kNumInputs, kNumTemps, LocationSummary::kNoCall); |
| summary->set_in(0, Location::RequiresRegister()); |
| summary->set_in(1, Location::FixedRegisterOrSmiConstant(right(), ECX)); |
| if (!is_truncating()) { |
| @@ -3022,7 +3057,7 @@ |
| } else { |
| const intptr_t kNumTemps = 0; |
| LocationSummary* summary = |
| - new LocationSummary(kNumInputs, kNumTemps, LocationSummary::kNoCall); |
| + new (isolate) LocationSummary(isolate, kNumInputs, kNumTemps, LocationSummary::kNoCall); |
| summary->set_in(0, Location::RequiresRegister()); |
| ConstantInstr* constant = right()->definition()->AsConstant(); |
| if (constant != NULL) { |
| @@ -3342,7 +3377,8 @@ |
| } |
| -LocationSummary* CheckEitherNonSmiInstr::MakeLocationSummary(bool opt) const { |
| +LocationSummary* CheckEitherNonSmiInstr::MakeLocationSummary(Isolate* isolate, |
| + bool opt) const { |
| intptr_t left_cid = left()->Type()->ToCid(); |
| intptr_t right_cid = right()->Type()->ToCid(); |
| ASSERT((left_cid != kDoubleCid) && (right_cid != kDoubleCid)); |
| @@ -3352,7 +3388,7 @@ |
| && (right_cid != kSmiCid); |
| const intptr_t kNumTemps = need_temp ? 1 : 0; |
| LocationSummary* summary = |
| - new LocationSummary(kNumInputs, kNumTemps, LocationSummary::kNoCall); |
| + new (isolate) LocationSummary(isolate, kNumInputs, kNumTemps, LocationSummary::kNoCall); |
| summary->set_in(0, Location::RequiresRegister()); |
| summary->set_in(1, Location::RequiresRegister()); |
| if (need_temp) summary->set_temp(0, Location::RequiresRegister()); |
| @@ -3386,11 +3422,12 @@ |
| -LocationSummary* BoxDoubleInstr::MakeLocationSummary(bool opt) const { |
| +LocationSummary* BoxDoubleInstr::MakeLocationSummary(Isolate* isolate, |
| + bool opt) const { |
| const intptr_t kNumInputs = 1; |
| const intptr_t kNumTemps = 0; |
| LocationSummary* summary = |
| - new LocationSummary(kNumInputs, |
| + new (isolate) LocationSummary(isolate, kNumInputs, |
| kNumTemps, |
| LocationSummary::kCallOnSlowPath); |
| summary->set_in(0, Location::RequiresFpuRegister()); |
| @@ -3416,14 +3453,15 @@ |
| } |
| -LocationSummary* UnboxDoubleInstr::MakeLocationSummary(bool opt) const { |
| +LocationSummary* UnboxDoubleInstr::MakeLocationSummary(Isolate* isolate, |
| + bool opt) const { |
| const intptr_t kNumInputs = 1; |
| const intptr_t value_cid = value()->Type()->ToCid(); |
| const bool needs_temp = ((value_cid != kSmiCid) && (value_cid != kDoubleCid)); |
| const bool needs_writable_input = (value_cid == kSmiCid); |
| const intptr_t kNumTemps = needs_temp ? 1 : 0; |
| LocationSummary* summary = |
| - new LocationSummary(kNumInputs, kNumTemps, LocationSummary::kNoCall); |
| + new (isolate) LocationSummary(isolate, kNumInputs, kNumTemps, LocationSummary::kNoCall); |
| summary->set_in(0, needs_writable_input |
| ? Location::WritableRegister() |
| : Location::RequiresRegister()); |
| @@ -3474,11 +3512,12 @@ |
| } |
| -LocationSummary* BoxFloat32x4Instr::MakeLocationSummary(bool opt) const { |
| +LocationSummary* BoxFloat32x4Instr::MakeLocationSummary(Isolate* isolate, |
| + bool opt) const { |
| const intptr_t kNumInputs = 1; |
| const intptr_t kNumTemps = 0; |
| LocationSummary* summary = |
| - new LocationSummary(kNumInputs, |
| + new (isolate) LocationSummary(isolate, kNumInputs, |
| kNumTemps, |
| LocationSummary::kCallOnSlowPath); |
| summary->set_in(0, Location::RequiresFpuRegister()); |
| @@ -3504,12 +3543,13 @@ |
| } |
| -LocationSummary* UnboxFloat32x4Instr::MakeLocationSummary(bool opt) const { |
| +LocationSummary* UnboxFloat32x4Instr::MakeLocationSummary(Isolate* isolate, |
| + bool opt) const { |
| const intptr_t value_cid = value()->Type()->ToCid(); |
| const intptr_t kNumInputs = 1; |
| const intptr_t kNumTemps = value_cid == kFloat32x4Cid ? 0 : 1; |
| LocationSummary* summary = |
| - new LocationSummary(kNumInputs, kNumTemps, LocationSummary::kNoCall); |
| + new (isolate) LocationSummary(isolate, kNumInputs, kNumTemps, LocationSummary::kNoCall); |
| summary->set_in(0, Location::RequiresRegister()); |
| if (kNumTemps > 0) { |
| ASSERT(kNumTemps == 1); |
| @@ -3537,11 +3577,12 @@ |
| } |
| -LocationSummary* BoxFloat64x2Instr::MakeLocationSummary(bool opt) const { |
| +LocationSummary* BoxFloat64x2Instr::MakeLocationSummary(Isolate* isolate, |
| + bool opt) const { |
| const intptr_t kNumInputs = 1; |
| const intptr_t kNumTemps = 0; |
| LocationSummary* summary = |
| - new LocationSummary(kNumInputs, |
| + new (isolate) LocationSummary(isolate, kNumInputs, |
| kNumTemps, |
| LocationSummary::kCallOnSlowPath); |
| summary->set_in(0, Location::RequiresFpuRegister()); |
| @@ -3567,12 +3608,13 @@ |
| } |
| -LocationSummary* UnboxFloat64x2Instr::MakeLocationSummary(bool opt) const { |
| +LocationSummary* UnboxFloat64x2Instr::MakeLocationSummary(Isolate* isolate, |
| + bool opt) const { |
| const intptr_t value_cid = value()->Type()->ToCid(); |
| const intptr_t kNumInputs = 1; |
| const intptr_t kNumTemps = value_cid == kFloat64x2Cid ? 0 : 1; |
| LocationSummary* summary = |
| - new LocationSummary(kNumInputs, kNumTemps, LocationSummary::kNoCall); |
| + new (isolate) LocationSummary(isolate, kNumInputs, kNumTemps, LocationSummary::kNoCall); |
| summary->set_in(0, Location::RequiresRegister()); |
| if (kNumTemps > 0) { |
| ASSERT(kNumTemps == 1); |
| @@ -3600,11 +3642,12 @@ |
| } |
| -LocationSummary* BoxInt32x4Instr::MakeLocationSummary(bool opt) const { |
| +LocationSummary* BoxInt32x4Instr::MakeLocationSummary(Isolate* isolate, |
| + bool opt) const { |
| const intptr_t kNumInputs = 1; |
| const intptr_t kNumTemps = 0; |
| LocationSummary* summary = |
| - new LocationSummary(kNumInputs, |
| + new (isolate) LocationSummary(isolate, kNumInputs, |
| kNumTemps, |
| LocationSummary::kCallOnSlowPath); |
| summary->set_in(0, Location::RequiresFpuRegister()); |
| @@ -3662,12 +3705,13 @@ |
| } |
| -LocationSummary* UnboxInt32x4Instr::MakeLocationSummary(bool opt) const { |
| +LocationSummary* UnboxInt32x4Instr::MakeLocationSummary(Isolate* isolate, |
| + bool opt) const { |
| const intptr_t value_cid = value()->Type()->ToCid(); |
| const intptr_t kNumInputs = 1; |
| const intptr_t kNumTemps = value_cid == kInt32x4Cid ? 0 : 1; |
| LocationSummary* summary = |
| - new LocationSummary(kNumInputs, kNumTemps, LocationSummary::kNoCall); |
| + new (isolate) LocationSummary(isolate, kNumInputs, kNumTemps, LocationSummary::kNoCall); |
| summary->set_in(0, Location::RequiresRegister()); |
| if (kNumTemps > 0) { |
| ASSERT(kNumTemps == 1); |
| @@ -3696,11 +3740,12 @@ |
| -LocationSummary* BinaryDoubleOpInstr::MakeLocationSummary(bool opt) const { |
| +LocationSummary* BinaryDoubleOpInstr::MakeLocationSummary(Isolate* isolate, |
| + bool opt) const { |
| const intptr_t kNumInputs = 2; |
| const intptr_t kNumTemps = 0; |
| LocationSummary* summary = |
| - new LocationSummary(kNumInputs, kNumTemps, LocationSummary::kNoCall); |
| + new (isolate) LocationSummary(isolate, kNumInputs, kNumTemps, LocationSummary::kNoCall); |
| summary->set_in(0, Location::RequiresFpuRegister()); |
| summary->set_in(1, Location::RequiresFpuRegister()); |
| summary->set_out(0, Location::SameAsFirstInput()); |
| @@ -3724,11 +3769,12 @@ |
| } |
| -LocationSummary* BinaryFloat32x4OpInstr::MakeLocationSummary(bool opt) const { |
| +LocationSummary* BinaryFloat32x4OpInstr::MakeLocationSummary(Isolate* isolate, |
| + bool opt) const { |
| const intptr_t kNumInputs = 2; |
| const intptr_t kNumTemps = 0; |
| LocationSummary* summary = |
| - new LocationSummary(kNumInputs, kNumTemps, LocationSummary::kNoCall); |
| + new (isolate) LocationSummary(isolate, kNumInputs, kNumTemps, LocationSummary::kNoCall); |
| summary->set_in(0, Location::RequiresFpuRegister()); |
| summary->set_in(1, Location::RequiresFpuRegister()); |
| summary->set_out(0, Location::SameAsFirstInput()); |
| @@ -3752,11 +3798,12 @@ |
| } |
| -LocationSummary* BinaryFloat64x2OpInstr::MakeLocationSummary(bool opt) const { |
| +LocationSummary* BinaryFloat64x2OpInstr::MakeLocationSummary(Isolate* isolate, |
| + bool opt) const { |
| const intptr_t kNumInputs = 2; |
| const intptr_t kNumTemps = 0; |
| LocationSummary* summary = |
| - new LocationSummary(kNumInputs, kNumTemps, LocationSummary::kNoCall); |
| + new (isolate) LocationSummary(isolate, kNumInputs, kNumTemps, LocationSummary::kNoCall); |
| summary->set_in(0, Location::RequiresFpuRegister()); |
| summary->set_in(1, Location::RequiresFpuRegister()); |
| summary->set_out(0, Location::SameAsFirstInput()); |
| @@ -3780,11 +3827,12 @@ |
| } |
| -LocationSummary* Simd32x4ShuffleInstr::MakeLocationSummary(bool opt) const { |
| +LocationSummary* Simd32x4ShuffleInstr::MakeLocationSummary(Isolate* isolate, |
| + bool opt) const { |
| const intptr_t kNumInputs = 1; |
| const intptr_t kNumTemps = 0; |
| LocationSummary* summary = |
| - new LocationSummary(kNumInputs, kNumTemps, LocationSummary::kNoCall); |
| + new (isolate) LocationSummary(isolate, kNumInputs, kNumTemps, LocationSummary::kNoCall); |
| summary->set_in(0, Location::RequiresFpuRegister()); |
| summary->set_out(0, Location::SameAsFirstInput()); |
| return summary; |
| @@ -3822,11 +3870,12 @@ |
| } |
| -LocationSummary* Simd32x4ShuffleMixInstr::MakeLocationSummary(bool opt) const { |
| +LocationSummary* Simd32x4ShuffleMixInstr::MakeLocationSummary(Isolate* isolate, |
| + bool opt) const { |
| const intptr_t kNumInputs = 2; |
| const intptr_t kNumTemps = 0; |
| LocationSummary* summary = |
| - new LocationSummary(kNumInputs, kNumTemps, LocationSummary::kNoCall); |
| + new (isolate) LocationSummary(isolate, kNumInputs, kNumTemps, LocationSummary::kNoCall); |
| summary->set_in(0, Location::RequiresFpuRegister()); |
| summary->set_in(1, Location::RequiresFpuRegister()); |
| summary->set_out(0, Location::SameAsFirstInput()); |
| @@ -3849,11 +3898,12 @@ |
| } |
| -LocationSummary* Simd32x4GetSignMaskInstr::MakeLocationSummary(bool opt) const { |
| +LocationSummary* Simd32x4GetSignMaskInstr::MakeLocationSummary(Isolate* isolate, |
| + bool opt) const { |
| const intptr_t kNumInputs = 1; |
| const intptr_t kNumTemps = 0; |
| LocationSummary* summary = |
| - new LocationSummary(kNumInputs, kNumTemps, LocationSummary::kNoCall); |
| + new (isolate) LocationSummary(isolate, kNumInputs, kNumTemps, LocationSummary::kNoCall); |
| summary->set_in(0, Location::RequiresFpuRegister()); |
| summary->set_out(0, Location::RequiresRegister()); |
| return summary; |
| @@ -3870,11 +3920,11 @@ |
| LocationSummary* Float32x4ConstructorInstr::MakeLocationSummary( |
| - bool opt) const { |
| + Isolate* isolate, bool opt) const { |
| const intptr_t kNumInputs = 4; |
| const intptr_t kNumTemps = 0; |
| LocationSummary* summary = |
| - new LocationSummary(kNumInputs, kNumTemps, LocationSummary::kNoCall); |
| + new (isolate) LocationSummary(isolate, kNumInputs, kNumTemps, LocationSummary::kNoCall); |
| summary->set_in(0, Location::RequiresFpuRegister()); |
| summary->set_in(1, Location::RequiresFpuRegister()); |
| summary->set_in(2, Location::RequiresFpuRegister()); |
| @@ -3907,11 +3957,12 @@ |
| } |
| -LocationSummary* Float32x4ZeroInstr::MakeLocationSummary(bool opt) const { |
| +LocationSummary* Float32x4ZeroInstr::MakeLocationSummary(Isolate* isolate, |
| + bool opt) const { |
| const intptr_t kNumInputs = 0; |
| const intptr_t kNumTemps = 0; |
| LocationSummary* summary = |
| - new LocationSummary(kNumInputs, kNumTemps, LocationSummary::kNoCall); |
| + new (isolate) LocationSummary(isolate, kNumInputs, kNumTemps, LocationSummary::kNoCall); |
| summary->set_out(0, Location::RequiresFpuRegister()); |
| return summary; |
| } |
| @@ -3923,11 +3974,12 @@ |
| } |
| -LocationSummary* Float32x4SplatInstr::MakeLocationSummary(bool opt) const { |
| +LocationSummary* Float32x4SplatInstr::MakeLocationSummary(Isolate* isolate, |
| + bool opt) const { |
| const intptr_t kNumInputs = 1; |
| const intptr_t kNumTemps = 0; |
| LocationSummary* summary = |
| - new LocationSummary(kNumInputs, kNumTemps, LocationSummary::kNoCall); |
| + new (isolate) LocationSummary(isolate, kNumInputs, kNumTemps, LocationSummary::kNoCall); |
| summary->set_in(0, Location::RequiresFpuRegister()); |
| summary->set_out(0, Location::SameAsFirstInput()); |
| return summary; |
| @@ -3944,11 +3996,12 @@ |
| } |
| -LocationSummary* Float32x4ComparisonInstr::MakeLocationSummary(bool opt) const { |
| +LocationSummary* Float32x4ComparisonInstr::MakeLocationSummary(Isolate* isolate, |
| + bool opt) const { |
| const intptr_t kNumInputs = 2; |
| const intptr_t kNumTemps = 0; |
| LocationSummary* summary = |
| - new LocationSummary(kNumInputs, kNumTemps, LocationSummary::kNoCall); |
| + new (isolate) LocationSummary(isolate, kNumInputs, kNumTemps, LocationSummary::kNoCall); |
| summary->set_in(0, Location::RequiresFpuRegister()); |
| summary->set_in(1, Location::RequiresFpuRegister()); |
| summary->set_out(0, Location::SameAsFirstInput()); |
| @@ -3987,11 +4040,12 @@ |
| } |
| -LocationSummary* Float32x4MinMaxInstr::MakeLocationSummary(bool opt) const { |
| +LocationSummary* Float32x4MinMaxInstr::MakeLocationSummary(Isolate* isolate, |
| + bool opt) const { |
| const intptr_t kNumInputs = 2; |
| const intptr_t kNumTemps = 0; |
| LocationSummary* summary = |
| - new LocationSummary(kNumInputs, kNumTemps, LocationSummary::kNoCall); |
| + new (isolate) LocationSummary(isolate, kNumInputs, kNumTemps, LocationSummary::kNoCall); |
| summary->set_in(0, Location::RequiresFpuRegister()); |
| summary->set_in(1, Location::RequiresFpuRegister()); |
| summary->set_out(0, Location::SameAsFirstInput()); |
| @@ -4017,11 +4071,12 @@ |
| } |
| -LocationSummary* Float32x4ScaleInstr::MakeLocationSummary(bool opt) const { |
| +LocationSummary* Float32x4ScaleInstr::MakeLocationSummary(Isolate* isolate, |
| + bool opt) const { |
| const intptr_t kNumInputs = 2; |
| const intptr_t kNumTemps = 0; |
| LocationSummary* summary = |
| - new LocationSummary(kNumInputs, kNumTemps, LocationSummary::kNoCall); |
| + new (isolate) LocationSummary(isolate, kNumInputs, kNumTemps, LocationSummary::kNoCall); |
| summary->set_in(0, Location::RequiresFpuRegister()); |
| summary->set_in(1, Location::RequiresFpuRegister()); |
| summary->set_out(0, Location::SameAsFirstInput()); |
| @@ -4046,11 +4101,12 @@ |
| } |
| -LocationSummary* Float32x4SqrtInstr::MakeLocationSummary(bool opt) const { |
| +LocationSummary* Float32x4SqrtInstr::MakeLocationSummary(Isolate* isolate, |
| + bool opt) const { |
| const intptr_t kNumInputs = 1; |
| const intptr_t kNumTemps = 0; |
| LocationSummary* summary = |
| - new LocationSummary(kNumInputs, kNumTemps, LocationSummary::kNoCall); |
| + new (isolate) LocationSummary(isolate, kNumInputs, kNumTemps, LocationSummary::kNoCall); |
| summary->set_in(0, Location::RequiresFpuRegister()); |
| summary->set_out(0, Location::SameAsFirstInput()); |
| return summary; |
| @@ -4077,11 +4133,12 @@ |
| } |
| -LocationSummary* Float32x4ZeroArgInstr::MakeLocationSummary(bool opt) const { |
| +LocationSummary* Float32x4ZeroArgInstr::MakeLocationSummary(Isolate* isolate, |
| + bool opt) const { |
| const intptr_t kNumInputs = 1; |
| const intptr_t kNumTemps = 0; |
| LocationSummary* summary = |
| - new LocationSummary(kNumInputs, kNumTemps, LocationSummary::kNoCall); |
| + new (isolate) LocationSummary(isolate, kNumInputs, kNumTemps, LocationSummary::kNoCall); |
| summary->set_in(0, Location::RequiresFpuRegister()); |
| summary->set_out(0, Location::SameAsFirstInput()); |
| return summary; |
| @@ -4104,11 +4161,12 @@ |
| } |
| -LocationSummary* Float32x4ClampInstr::MakeLocationSummary(bool opt) const { |
| +LocationSummary* Float32x4ClampInstr::MakeLocationSummary(Isolate* isolate, |
| + bool opt) const { |
| const intptr_t kNumInputs = 3; |
| const intptr_t kNumTemps = 0; |
| LocationSummary* summary = |
| - new LocationSummary(kNumInputs, kNumTemps, LocationSummary::kNoCall); |
| + new (isolate) LocationSummary(isolate, kNumInputs, kNumTemps, LocationSummary::kNoCall); |
| summary->set_in(0, Location::RequiresFpuRegister()); |
| summary->set_in(1, Location::RequiresFpuRegister()); |
| summary->set_in(2, Location::RequiresFpuRegister()); |
| @@ -4127,11 +4185,12 @@ |
| } |
| -LocationSummary* Float32x4WithInstr::MakeLocationSummary(bool opt) const { |
| +LocationSummary* Float32x4WithInstr::MakeLocationSummary(Isolate* isolate, |
| + bool opt) const { |
| const intptr_t kNumInputs = 2; |
| const intptr_t kNumTemps = 0; |
| LocationSummary* summary = |
| - new LocationSummary(kNumInputs, kNumTemps, LocationSummary::kNoCall); |
| + new (isolate) LocationSummary(isolate, kNumInputs, kNumTemps, LocationSummary::kNoCall); |
| summary->set_in(0, Location::RequiresFpuRegister()); |
| summary->set_in(1, Location::RequiresFpuRegister()); |
| summary->set_out(0, Location::SameAsFirstInput()); |
| @@ -4195,11 +4254,12 @@ |
| } |
| -LocationSummary* Float32x4ToInt32x4Instr::MakeLocationSummary(bool opt) const { |
| +LocationSummary* Float32x4ToInt32x4Instr::MakeLocationSummary(Isolate* isolate, |
| + bool opt) const { |
| const intptr_t kNumInputs = 1; |
| const intptr_t kNumTemps = 0; |
| LocationSummary* summary = |
| - new LocationSummary(kNumInputs, kNumTemps, LocationSummary::kNoCall); |
| + new (isolate) LocationSummary(isolate, kNumInputs, kNumTemps, LocationSummary::kNoCall); |
| summary->set_in(0, Location::RequiresFpuRegister()); |
| summary->set_out(0, Location::SameAsFirstInput()); |
| return summary; |
| @@ -4211,11 +4271,12 @@ |
| } |
| -LocationSummary* Simd64x2ShuffleInstr::MakeLocationSummary(bool opt) const { |
| +LocationSummary* Simd64x2ShuffleInstr::MakeLocationSummary(Isolate* isolate, |
| + bool opt) const { |
| const intptr_t kNumInputs = 1; |
| const intptr_t kNumTemps = 0; |
| LocationSummary* summary = |
| - new LocationSummary(kNumInputs, kNumTemps, LocationSummary::kNoCall); |
| + new (isolate) LocationSummary(isolate, kNumInputs, kNumTemps, LocationSummary::kNoCall); |
| summary->set_in(0, Location::RequiresFpuRegister()); |
| summary->set_out(0, Location::SameAsFirstInput()); |
| return summary; |
| @@ -4240,11 +4301,12 @@ |
| -LocationSummary* Float64x2ZeroInstr::MakeLocationSummary(bool opt) const { |
| +LocationSummary* Float64x2ZeroInstr::MakeLocationSummary(Isolate* isolate, |
| + bool opt) const { |
| const intptr_t kNumInputs = 0; |
| const intptr_t kNumTemps = 0; |
| LocationSummary* summary = |
| - new LocationSummary(kNumInputs, kNumTemps, LocationSummary::kNoCall); |
| + new (isolate) LocationSummary(isolate, kNumInputs, kNumTemps, LocationSummary::kNoCall); |
| summary->set_out(0, Location::RequiresFpuRegister()); |
| return summary; |
| } |
| @@ -4256,11 +4318,12 @@ |
| } |
| -LocationSummary* Float64x2SplatInstr::MakeLocationSummary(bool opt) const { |
| +LocationSummary* Float64x2SplatInstr::MakeLocationSummary(Isolate* isolate, |
| + bool opt) const { |
| const intptr_t kNumInputs = 1; |
| const intptr_t kNumTemps = 0; |
| LocationSummary* summary = |
| - new LocationSummary(kNumInputs, kNumTemps, LocationSummary::kNoCall); |
| + new (isolate) LocationSummary(isolate, kNumInputs, kNumTemps, LocationSummary::kNoCall); |
| summary->set_in(0, Location::RequiresFpuRegister()); |
| summary->set_out(0, Location::SameAsFirstInput()); |
| return summary; |
| @@ -4274,11 +4337,11 @@ |
| LocationSummary* Float64x2ConstructorInstr::MakeLocationSummary( |
| - bool opt) const { |
| + Isolate* isolate, bool opt) const { |
| const intptr_t kNumInputs = 2; |
| const intptr_t kNumTemps = 0; |
| LocationSummary* summary = |
| - new LocationSummary(kNumInputs, kNumTemps, LocationSummary::kNoCall); |
| + new (isolate) LocationSummary(isolate, kNumInputs, kNumTemps, LocationSummary::kNoCall); |
| summary->set_in(0, Location::RequiresFpuRegister()); |
| summary->set_in(1, Location::RequiresFpuRegister()); |
| summary->set_out(0, Location::SameAsFirstInput()); |
| @@ -4299,11 +4362,11 @@ |
| LocationSummary* Float64x2ToFloat32x4Instr::MakeLocationSummary( |
| - bool opt) const { |
| + Isolate* isolate, bool opt) const { |
| const intptr_t kNumInputs = 1; |
| const intptr_t kNumTemps = 0; |
| LocationSummary* summary = |
| - new LocationSummary(kNumInputs, kNumTemps, LocationSummary::kNoCall); |
| + new (isolate) LocationSummary(isolate, kNumInputs, kNumTemps, LocationSummary::kNoCall); |
| summary->set_in(0, Location::RequiresFpuRegister()); |
| summary->set_out(0, Location::SameAsFirstInput()); |
| return summary; |
| @@ -4317,11 +4380,11 @@ |
| LocationSummary* Float32x4ToFloat64x2Instr::MakeLocationSummary( |
| - bool opt) const { |
| + Isolate* isolate, bool opt) const { |
| const intptr_t kNumInputs = 1; |
| const intptr_t kNumTemps = 0; |
| LocationSummary* summary = |
| - new LocationSummary(kNumInputs, kNumTemps, LocationSummary::kNoCall); |
| + new (isolate) LocationSummary(isolate, kNumInputs, kNumTemps, LocationSummary::kNoCall); |
| summary->set_in(0, Location::RequiresFpuRegister()); |
| summary->set_out(0, Location::SameAsFirstInput()); |
| return summary; |
| @@ -4334,11 +4397,12 @@ |
| } |
| -LocationSummary* Float64x2ZeroArgInstr::MakeLocationSummary(bool opt) const { |
| +LocationSummary* Float64x2ZeroArgInstr::MakeLocationSummary(Isolate* isolate, |
| + bool opt) const { |
| const intptr_t kNumInputs = 1; |
| const intptr_t kNumTemps = 0; |
| LocationSummary* summary = |
| - new LocationSummary(kNumInputs, kNumTemps, LocationSummary::kNoCall); |
| + new (isolate) LocationSummary(isolate, kNumInputs, kNumTemps, LocationSummary::kNoCall); |
| summary->set_in(0, Location::RequiresFpuRegister()); |
| if (representation() == kTagged) { |
| ASSERT(op_kind() == MethodRecognizer::kFloat64x2GetSignMask); |
| @@ -4376,11 +4440,12 @@ |
| } |
| -LocationSummary* Float64x2OneArgInstr::MakeLocationSummary(bool opt) const { |
| +LocationSummary* Float64x2OneArgInstr::MakeLocationSummary(Isolate* isolate, |
| + bool opt) const { |
| const intptr_t kNumInputs = 2; |
| const intptr_t kNumTemps = 0; |
| LocationSummary* summary = |
| - new LocationSummary(kNumInputs, kNumTemps, LocationSummary::kNoCall); |
| + new (isolate) LocationSummary(isolate, kNumInputs, kNumTemps, LocationSummary::kNoCall); |
| summary->set_in(0, Location::RequiresFpuRegister()); |
| summary->set_in(1, Location::RequiresFpuRegister()); |
| summary->set_out(0, Location::SameAsFirstInput()); |
| @@ -4430,11 +4495,11 @@ |
| LocationSummary* Int32x4BoolConstructorInstr::MakeLocationSummary( |
| - bool opt) const { |
| + Isolate* isolate, bool opt) const { |
| const intptr_t kNumInputs = 4; |
| const intptr_t kNumTemps = 0; |
| LocationSummary* summary = |
| - new LocationSummary(kNumInputs, kNumTemps, LocationSummary::kNoCall); |
| + new (isolate) LocationSummary(isolate, kNumInputs, kNumTemps, LocationSummary::kNoCall); |
| summary->set_in(0, Location::RequiresRegister()); |
| summary->set_in(1, Location::RequiresRegister()); |
| summary->set_in(2, Location::RequiresRegister()); |
| @@ -4492,11 +4557,12 @@ |
| } |
| -LocationSummary* Int32x4GetFlagInstr::MakeLocationSummary(bool opt) const { |
| +LocationSummary* Int32x4GetFlagInstr::MakeLocationSummary(Isolate* isolate, |
| + bool opt) const { |
| const intptr_t kNumInputs = 1; |
| const intptr_t kNumTemps = 0; |
| LocationSummary* summary = |
| - new LocationSummary(kNumInputs, kNumTemps, LocationSummary::kNoCall); |
| + new (isolate) LocationSummary(isolate, kNumInputs, kNumTemps, LocationSummary::kNoCall); |
| summary->set_in(0, Location::RequiresFpuRegister()); |
| summary->set_out(0, Location::RequiresRegister()); |
| return summary; |
| @@ -4537,11 +4603,12 @@ |
| } |
| -LocationSummary* Int32x4SelectInstr::MakeLocationSummary(bool opt) const { |
| +LocationSummary* Int32x4SelectInstr::MakeLocationSummary(Isolate* isolate, |
| + bool opt) const { |
| const intptr_t kNumInputs = 3; |
| const intptr_t kNumTemps = 1; |
| LocationSummary* summary = |
| - new LocationSummary(kNumInputs, kNumTemps, LocationSummary::kNoCall); |
| + new (isolate) LocationSummary(isolate, kNumInputs, kNumTemps, LocationSummary::kNoCall); |
| summary->set_in(0, Location::RequiresFpuRegister()); |
| summary->set_in(1, Location::RequiresFpuRegister()); |
| summary->set_in(2, Location::RequiresFpuRegister()); |
| @@ -4571,11 +4638,12 @@ |
| } |
| -LocationSummary* Int32x4SetFlagInstr::MakeLocationSummary(bool opt) const { |
| +LocationSummary* Int32x4SetFlagInstr::MakeLocationSummary(Isolate* isolate, |
| + bool opt) const { |
| const intptr_t kNumInputs = 2; |
| const intptr_t kNumTemps = 0; |
| LocationSummary* summary = |
| - new LocationSummary(kNumInputs, kNumTemps, LocationSummary::kNoCall); |
| + new (isolate) LocationSummary(isolate, kNumInputs, kNumTemps, LocationSummary::kNoCall); |
| summary->set_in(0, Location::RequiresFpuRegister()); |
| summary->set_in(1, Location::RequiresRegister()); |
| summary->set_out(0, Location::SameAsFirstInput()); |
| @@ -4627,11 +4695,12 @@ |
| } |
| -LocationSummary* Int32x4ToFloat32x4Instr::MakeLocationSummary(bool opt) const { |
| +LocationSummary* Int32x4ToFloat32x4Instr::MakeLocationSummary(Isolate* isolate, |
| + bool opt) const { |
| const intptr_t kNumInputs = 1; |
| const intptr_t kNumTemps = 0; |
| LocationSummary* summary = |
| - new LocationSummary(kNumInputs, kNumTemps, LocationSummary::kNoCall); |
| + new (isolate) LocationSummary(isolate, kNumInputs, kNumTemps, LocationSummary::kNoCall); |
| summary->set_in(0, Location::RequiresFpuRegister()); |
| summary->set_out(0, Location::SameAsFirstInput()); |
| return summary; |
| @@ -4643,11 +4712,12 @@ |
| } |
| -LocationSummary* BinaryInt32x4OpInstr::MakeLocationSummary(bool opt) const { |
| +LocationSummary* BinaryInt32x4OpInstr::MakeLocationSummary(Isolate* isolate, |
| + bool opt) const { |
| const intptr_t kNumInputs = 2; |
| const intptr_t kNumTemps = 0; |
| LocationSummary* summary = |
| - new LocationSummary(kNumInputs, kNumTemps, LocationSummary::kNoCall); |
| + new (isolate) LocationSummary(isolate, kNumInputs, kNumTemps, LocationSummary::kNoCall); |
| summary->set_in(0, Location::RequiresFpuRegister()); |
| summary->set_in(1, Location::RequiresFpuRegister()); |
| summary->set_out(0, Location::SameAsFirstInput()); |
| @@ -4683,12 +4753,13 @@ |
| } |
| -LocationSummary* MathUnaryInstr::MakeLocationSummary(bool opt) const { |
| +LocationSummary* MathUnaryInstr::MakeLocationSummary(Isolate* isolate, |
| + bool opt) const { |
| if ((kind() == MathUnaryInstr::kSin) || (kind() == MathUnaryInstr::kCos)) { |
| const intptr_t kNumInputs = 1; |
| const intptr_t kNumTemps = 1; |
| LocationSummary* summary = |
| - new LocationSummary(kNumInputs, kNumTemps, LocationSummary::kCall); |
| + new (isolate) LocationSummary(isolate, kNumInputs, kNumTemps, LocationSummary::kCall); |
| summary->set_in(0, Location::FpuRegisterLocation(XMM1)); |
| // EDI is chosen because it is callee saved so we do not need to back it |
| // up before calling into the runtime. |
| @@ -4701,7 +4772,7 @@ |
| const intptr_t kNumInputs = 1; |
| const intptr_t kNumTemps = 0; |
| LocationSummary* summary = |
| - new LocationSummary(kNumInputs, kNumTemps, LocationSummary::kNoCall); |
| + new (isolate) LocationSummary(isolate, kNumInputs, kNumTemps, LocationSummary::kNoCall); |
| summary->set_in(0, Location::RequiresFpuRegister()); |
| if (kind() == MathUnaryInstr::kDoubleSquare) { |
| summary->set_out(0, Location::SameAsFirstInput()); |
| @@ -4735,12 +4806,13 @@ |
| } |
| -LocationSummary* MathMinMaxInstr::MakeLocationSummary(bool opt) const { |
| +LocationSummary* MathMinMaxInstr::MakeLocationSummary(Isolate* isolate, |
| + bool opt) const { |
| if (result_cid() == kDoubleCid) { |
| const intptr_t kNumInputs = 2; |
| const intptr_t kNumTemps = 1; |
| LocationSummary* summary = |
| - new LocationSummary(kNumInputs, kNumTemps, LocationSummary::kNoCall); |
| + new (isolate) LocationSummary(isolate, kNumInputs, kNumTemps, LocationSummary::kNoCall); |
| summary->set_in(0, Location::RequiresFpuRegister()); |
| summary->set_in(1, Location::RequiresFpuRegister()); |
| // Reuse the left register so that code can be made shorter. |
| @@ -4753,7 +4825,7 @@ |
| const intptr_t kNumInputs = 2; |
| const intptr_t kNumTemps = 0; |
| LocationSummary* summary = |
| - new LocationSummary(kNumInputs, kNumTemps, LocationSummary::kNoCall); |
| + new (isolate) LocationSummary(isolate, kNumInputs, kNumTemps, LocationSummary::kNoCall); |
| summary->set_in(0, Location::RequiresRegister()); |
| summary->set_in(1, Location::RequiresRegister()); |
| // Reuse the left register so that code can be made shorter. |
| @@ -4823,7 +4895,8 @@ |
| } |
| -LocationSummary* UnarySmiOpInstr::MakeLocationSummary(bool opt) const { |
| +LocationSummary* UnarySmiOpInstr::MakeLocationSummary(Isolate* isolate, |
| + bool opt) const { |
| const intptr_t kNumInputs = 1; |
| return LocationSummary::Make(kNumInputs, |
| Location::SameAsFirstInput(), |
| @@ -4851,11 +4924,12 @@ |
| } |
| -LocationSummary* UnaryDoubleOpInstr::MakeLocationSummary(bool opt) const { |
| +LocationSummary* UnaryDoubleOpInstr::MakeLocationSummary(Isolate* isolate, |
| + bool opt) const { |
| const intptr_t kNumInputs = 1; |
| const intptr_t kNumTemps = 0; |
| LocationSummary* summary = |
| - new LocationSummary(kNumInputs, kNumTemps, LocationSummary::kNoCall); |
| + new (isolate) LocationSummary(isolate, kNumInputs, kNumTemps, LocationSummary::kNoCall); |
| summary->set_in(0, Location::RequiresFpuRegister()); |
| summary->set_out(0, Location::SameAsFirstInput()); |
| return summary; |
| @@ -4869,11 +4943,12 @@ |
| } |
| -LocationSummary* SmiToDoubleInstr::MakeLocationSummary(bool opt) const { |
| +LocationSummary* SmiToDoubleInstr::MakeLocationSummary(Isolate* isolate, |
| + bool opt) const { |
| const intptr_t kNumInputs = 1; |
| const intptr_t kNumTemps = 0; |
| LocationSummary* result = |
| - new LocationSummary(kNumInputs, kNumTemps, LocationSummary::kNoCall); |
| + new (isolate) LocationSummary(isolate, kNumInputs, kNumTemps, LocationSummary::kNoCall); |
| result->set_in(0, Location::WritableRegister()); |
| result->set_out(0, Location::RequiresFpuRegister()); |
| return result; |
| @@ -4888,11 +4963,12 @@ |
| } |
| -LocationSummary* DoubleToIntegerInstr::MakeLocationSummary(bool opt) const { |
| +LocationSummary* DoubleToIntegerInstr::MakeLocationSummary(Isolate* isolate, |
| + bool opt) const { |
| const intptr_t kNumInputs = 1; |
| const intptr_t kNumTemps = 0; |
| LocationSummary* result = |
| - new LocationSummary(kNumInputs, kNumTemps, LocationSummary::kCall); |
| + new (isolate) LocationSummary(isolate, kNumInputs, kNumTemps, LocationSummary::kCall); |
| result->set_in(0, Location::RegisterLocation(ECX)); |
| result->set_out(0, Location::RegisterLocation(EAX)); |
| return result; |
| @@ -4932,10 +5008,11 @@ |
| } |
| -LocationSummary* DoubleToSmiInstr::MakeLocationSummary(bool opt) const { |
| +LocationSummary* DoubleToSmiInstr::MakeLocationSummary(Isolate* isolate, |
| + bool opt) const { |
| const intptr_t kNumInputs = 1; |
| const intptr_t kNumTemps = 0; |
| - LocationSummary* result = new LocationSummary( |
| + LocationSummary* result = new (isolate) LocationSummary(isolate, |
| kNumInputs, kNumTemps, LocationSummary::kNoCall); |
| result->set_in(0, Location::RequiresFpuRegister()); |
| result->set_out(0, Location::RequiresRegister()); |
| @@ -4955,11 +5032,12 @@ |
| } |
| -LocationSummary* DoubleToDoubleInstr::MakeLocationSummary(bool opt) const { |
| +LocationSummary* DoubleToDoubleInstr::MakeLocationSummary(Isolate* isolate, |
| + bool opt) const { |
| const intptr_t kNumInputs = 1; |
| const intptr_t kNumTemps = 0; |
| LocationSummary* result = |
| - new LocationSummary(kNumInputs, kNumTemps, LocationSummary::kNoCall); |
| + new (isolate) LocationSummary(isolate, kNumInputs, kNumTemps, LocationSummary::kNoCall); |
| result->set_in(0, Location::RequiresFpuRegister()); |
| result->set_out(0, Location::RequiresFpuRegister()); |
| return result; |
| @@ -4985,11 +5063,12 @@ |
| } |
| -LocationSummary* DoubleToFloatInstr::MakeLocationSummary(bool opt) const { |
| +LocationSummary* DoubleToFloatInstr::MakeLocationSummary(Isolate* isolate, |
| + bool opt) const { |
| const intptr_t kNumInputs = 1; |
| const intptr_t kNumTemps = 0; |
| LocationSummary* result = |
| - new LocationSummary(kNumInputs, kNumTemps, LocationSummary::kNoCall); |
| + new (isolate) LocationSummary(isolate, kNumInputs, kNumTemps, LocationSummary::kNoCall); |
| result->set_in(0, Location::RequiresFpuRegister()); |
| result->set_out(0, Location::SameAsFirstInput()); |
| return result; |
| @@ -5001,11 +5080,12 @@ |
| } |
| -LocationSummary* FloatToDoubleInstr::MakeLocationSummary(bool opt) const { |
| +LocationSummary* FloatToDoubleInstr::MakeLocationSummary(Isolate* isolate, |
| + bool opt) const { |
| const intptr_t kNumInputs = 1; |
| const intptr_t kNumTemps = 0; |
| LocationSummary* result = |
| - new LocationSummary(kNumInputs, kNumTemps, LocationSummary::kNoCall); |
| + new (isolate) LocationSummary(isolate, kNumInputs, kNumTemps, LocationSummary::kNoCall); |
| result->set_in(0, Location::RequiresFpuRegister()); |
| result->set_out(0, Location::SameAsFirstInput()); |
| return result; |
| @@ -5017,11 +5097,12 @@ |
| } |
| -LocationSummary* InvokeMathCFunctionInstr::MakeLocationSummary(bool opt) const { |
| +LocationSummary* InvokeMathCFunctionInstr::MakeLocationSummary(Isolate* isolate, |
| + bool opt) const { |
| ASSERT((InputCount() == 1) || (InputCount() == 2)); |
| const intptr_t kNumTemps = 1; |
| LocationSummary* result = |
| - new LocationSummary(InputCount(), kNumTemps, LocationSummary::kCall); |
| + new (isolate) LocationSummary(isolate, InputCount(), kNumTemps, LocationSummary::kCall); |
| // EDI is chosen because it is callee saved so we do not need to back it |
| // up before calling into the runtime. |
| result->set_temp(0, Location::RegisterLocation(EDI)); |
| @@ -5193,12 +5274,13 @@ |
| } |
| -LocationSummary* ExtractNthOutputInstr::MakeLocationSummary(bool opt) const { |
| +LocationSummary* ExtractNthOutputInstr::MakeLocationSummary(Isolate* isolate, |
| + bool opt) const { |
| // Only use this instruction in optimized code. |
| ASSERT(opt); |
| const intptr_t kNumInputs = 1; |
| LocationSummary* summary = |
| - new LocationSummary(kNumInputs, 0, LocationSummary::kNoCall); |
| + new (isolate) LocationSummary(isolate, kNumInputs, 0, LocationSummary::kNoCall); |
| if (representation() == kUnboxedDouble) { |
| if (index() == 0) { |
| summary->set_in(0, Location::Pair(Location::RequiresFpuRegister(), |
| @@ -5242,12 +5324,13 @@ |
| } |
| -LocationSummary* MergedMathInstr::MakeLocationSummary(bool opt) const { |
| +LocationSummary* MergedMathInstr::MakeLocationSummary(Isolate* isolate, |
| + bool opt) const { |
| if (kind() == MergedMathInstr::kTruncDivMod) { |
| const intptr_t kNumInputs = 2; |
| const intptr_t kNumTemps = 0; |
| LocationSummary* summary = |
| - new LocationSummary(kNumInputs, kNumTemps, LocationSummary::kNoCall); |
| + new (isolate) LocationSummary(isolate, kNumInputs, kNumTemps, LocationSummary::kNoCall); |
| // Both inputs must be writable because they will be untagged. |
| summary->set_in(0, Location::RegisterLocation(EAX)); |
| summary->set_in(1, Location::WritableRegister()); |
| @@ -5260,7 +5343,7 @@ |
| const intptr_t kNumInputs = 1; |
| const intptr_t kNumTemps = 0; |
| LocationSummary* summary = |
| - new LocationSummary(kNumInputs, kNumTemps, LocationSummary::kNoCall); |
| + new (isolate) LocationSummary(isolate, kNumInputs, kNumTemps, LocationSummary::kNoCall); |
| summary->set_in(0, Location::RequiresFpuRegister()); |
| summary->set_out(0, Location::Pair(Location::RequiresFpuRegister(), |
| Location::RequiresFpuRegister())); |
| @@ -5374,7 +5457,7 @@ |
| LocationSummary* PolymorphicInstanceCallInstr::MakeLocationSummary( |
| - bool opt) const { |
| + Isolate* isolate, bool opt) const { |
| return MakeCallSummary(); |
| } |
| @@ -5417,8 +5500,9 @@ |
| } |
| -LocationSummary* BranchInstr::MakeLocationSummary(bool opt) const { |
| - comparison()->InitializeLocationSummary(opt); |
| +LocationSummary* BranchInstr::MakeLocationSummary(Isolate* isolate, |
| + bool opt) const { |
| + comparison()->InitializeLocationSummary(isolate, opt); |
| // Branches don't produce a result. |
| comparison()->locs()->set_out(0, Location::NoLocation()); |
| return comparison()->locs(); |
| @@ -5430,11 +5514,12 @@ |
| } |
| -LocationSummary* CheckClassInstr::MakeLocationSummary(bool opt) const { |
| +LocationSummary* CheckClassInstr::MakeLocationSummary(Isolate* isolate, |
| + bool opt) const { |
| const intptr_t kNumInputs = 1; |
| const intptr_t kNumTemps = 0; |
| LocationSummary* summary = |
| - new LocationSummary(kNumInputs, kNumTemps, LocationSummary::kNoCall); |
| + new (isolate) LocationSummary(isolate, kNumInputs, kNumTemps, LocationSummary::kNoCall); |
| summary->set_in(0, Location::RequiresRegister()); |
| if (!IsNullCheck()) { |
| summary->AddTemp(Location::RequiresRegister()); |
| @@ -5490,11 +5575,12 @@ |
| } |
| -LocationSummary* CheckSmiInstr::MakeLocationSummary(bool opt) const { |
| +LocationSummary* CheckSmiInstr::MakeLocationSummary(Isolate* isolate, |
| + bool opt) const { |
| const intptr_t kNumInputs = 1; |
| const intptr_t kNumTemps = 0; |
| LocationSummary* summary = |
| - new LocationSummary(kNumInputs, kNumTemps, LocationSummary::kNoCall); |
| + new (isolate) LocationSummary(isolate, kNumInputs, kNumTemps, LocationSummary::kNoCall); |
| summary->set_in(0, Location::RequiresRegister()); |
| return summary; |
| } |
| @@ -5510,11 +5596,12 @@ |
| // Length: register or constant. |
| // Index: register, constant or stack slot. |
| -LocationSummary* CheckArrayBoundInstr::MakeLocationSummary(bool opt) const { |
| +LocationSummary* CheckArrayBoundInstr::MakeLocationSummary(Isolate* isolate, |
| + bool opt) const { |
| const intptr_t kNumInputs = 2; |
| const intptr_t kNumTemps = 0; |
| LocationSummary* locs = |
| - new LocationSummary(kNumInputs, kNumTemps, LocationSummary::kNoCall); |
| + new (isolate) LocationSummary(isolate, kNumInputs, kNumTemps, LocationSummary::kNoCall); |
| locs->set_in(kLengthPos, Location::RegisterOrSmiConstant(length())); |
| ConstantInstr* index_constant = index()->definition()->AsConstant(); |
| if (index_constant != NULL) { |
| @@ -5572,11 +5659,12 @@ |
| } |
| -LocationSummary* UnboxIntegerInstr::MakeLocationSummary(bool opt) const { |
| +LocationSummary* UnboxIntegerInstr::MakeLocationSummary(Isolate* isolate, |
| + bool opt) const { |
| const intptr_t kNumInputs = 1; |
| const intptr_t kNumTemps = 0; |
| LocationSummary* summary = |
| - new LocationSummary(kNumInputs, kNumTemps, LocationSummary::kNoCall); |
| + new (isolate) LocationSummary(isolate, kNumInputs, kNumTemps, LocationSummary::kNoCall); |
| summary->set_in(0, Location::RequiresRegister()); |
| summary->set_out(0, Location::Pair(Location::RegisterLocation(EAX), |
| Location::RegisterLocation(EDX))); |
| @@ -5625,11 +5713,12 @@ |
| } |
| -LocationSummary* BoxIntegerInstr::MakeLocationSummary(bool opt) const { |
| +LocationSummary* BoxIntegerInstr::MakeLocationSummary(Isolate* isolate, |
| + bool opt) const { |
| const intptr_t kNumInputs = 1; |
| const intptr_t kNumTemps = 1; |
| LocationSummary* summary = |
| - new LocationSummary(kNumInputs, |
| + new (isolate) LocationSummary(isolate, kNumInputs, |
| kNumTemps, |
| LocationSummary::kCallOnSlowPath); |
| summary->set_in(0, Location::Pair(Location::RequiresRegister(), |
| @@ -5718,7 +5807,8 @@ |
| } |
| -LocationSummary* BinaryMintOpInstr::MakeLocationSummary(bool opt) const { |
| +LocationSummary* BinaryMintOpInstr::MakeLocationSummary(Isolate* isolate, |
| + bool opt) const { |
| const intptr_t kNumInputs = 2; |
| switch (op_kind()) { |
| case Token::kBIT_AND: |
| @@ -5726,7 +5816,7 @@ |
| case Token::kBIT_XOR: { |
| const intptr_t kNumTemps = 0; |
| LocationSummary* summary = |
| - new LocationSummary(kNumInputs, kNumTemps, LocationSummary::kNoCall); |
| + new (isolate) LocationSummary(isolate, kNumInputs, kNumTemps, LocationSummary::kNoCall); |
| summary->set_in(0, Location::Pair(Location::RequiresRegister(), |
| Location::RequiresRegister())); |
| summary->set_in(1, Location::Pair(Location::RequiresRegister(), |
| @@ -5738,7 +5828,7 @@ |
| case Token::kSUB: { |
| const intptr_t kNumTemps = 0; |
| LocationSummary* summary = |
| - new LocationSummary(kNumInputs, kNumTemps, LocationSummary::kNoCall); |
| + new (isolate) LocationSummary(isolate, kNumInputs, kNumTemps, LocationSummary::kNoCall); |
| summary->set_in(0, Location::Pair(Location::RequiresRegister(), |
| Location::RequiresRegister())); |
| summary->set_in(1, Location::Pair(Location::RequiresRegister(), |
| @@ -5806,11 +5896,12 @@ |
| } |
| -LocationSummary* ShiftMintOpInstr::MakeLocationSummary(bool opt) const { |
| +LocationSummary* ShiftMintOpInstr::MakeLocationSummary(Isolate* isolate, |
| + bool opt) const { |
| const intptr_t kNumInputs = 2; |
| const intptr_t kNumTemps = op_kind() == Token::kSHL ? 2 : 0; |
| LocationSummary* summary = |
| - new LocationSummary(kNumInputs, kNumTemps, LocationSummary::kNoCall); |
| + new (isolate) LocationSummary(isolate, kNumInputs, kNumTemps, LocationSummary::kNoCall); |
| summary->set_in(0, Location::Pair(Location::RequiresRegister(), |
| Location::RequiresRegister())); |
| summary->set_in(1, Location::RegisterLocation(ECX)); |
| @@ -5878,11 +5969,12 @@ |
| } |
| -LocationSummary* UnaryMintOpInstr::MakeLocationSummary(bool opt) const { |
| +LocationSummary* UnaryMintOpInstr::MakeLocationSummary(Isolate* isolate, |
| + bool opt) const { |
| const intptr_t kNumInputs = 1; |
| const intptr_t kNumTemps = 0; |
| LocationSummary* summary = |
| - new LocationSummary(kNumInputs, kNumTemps, LocationSummary::kNoCall); |
| + new (isolate) LocationSummary(isolate, kNumInputs, kNumTemps, LocationSummary::kNoCall); |
| summary->set_in(0, Location::Pair(Location::RequiresRegister(), |
| Location::RequiresRegister())); |
| summary->set_out(0, Location::SameAsFirstInput()); |
| @@ -5918,8 +6010,9 @@ |
| } |
| -LocationSummary* ThrowInstr::MakeLocationSummary(bool opt) const { |
| - return new LocationSummary(0, 0, LocationSummary::kCall); |
| +LocationSummary* ThrowInstr::MakeLocationSummary(Isolate* isolate, |
| + bool opt) const { |
| + return new (isolate) LocationSummary(isolate, 0, 0, LocationSummary::kCall); |
| } |
| @@ -5934,8 +6027,9 @@ |
| } |
| -LocationSummary* ReThrowInstr::MakeLocationSummary(bool opt) const { |
| - return new LocationSummary(0, 0, LocationSummary::kCall); |
| +LocationSummary* ReThrowInstr::MakeLocationSummary(Isolate* isolate, |
| + bool opt) const { |
| + return new (isolate) LocationSummary(isolate, 0, 0, LocationSummary::kCall); |
| } |
| @@ -5974,8 +6068,9 @@ |
| } |
| -LocationSummary* GotoInstr::MakeLocationSummary(bool opt) const { |
| - return new LocationSummary(0, 0, LocationSummary::kNoCall); |
| +LocationSummary* GotoInstr::MakeLocationSummary(Isolate* isolate, |
| + bool opt) const { |
| + return new (isolate) LocationSummary(isolate, 0, 0, LocationSummary::kNoCall); |
| } |
| @@ -6003,7 +6098,8 @@ |
| } |
| -LocationSummary* CurrentContextInstr::MakeLocationSummary(bool opt) const { |
| +LocationSummary* CurrentContextInstr::MakeLocationSummary(Isolate* isolate, |
| + bool opt) const { |
| return LocationSummary::Make(0, |
| Location::RequiresRegister(), |
| LocationSummary::kNoCall); |
| @@ -6015,19 +6111,20 @@ |
| } |
| -LocationSummary* StrictCompareInstr::MakeLocationSummary(bool opt) const { |
| +LocationSummary* StrictCompareInstr::MakeLocationSummary(Isolate* isolate, |
| + bool opt) const { |
| const intptr_t kNumInputs = 2; |
| const intptr_t kNumTemps = 0; |
| if (needs_number_check()) { |
| LocationSummary* locs = |
| - new LocationSummary(kNumInputs, kNumTemps, LocationSummary::kCall); |
| + new (isolate) LocationSummary(isolate, kNumInputs, kNumTemps, LocationSummary::kCall); |
| locs->set_in(0, Location::RegisterLocation(EAX)); |
| locs->set_in(1, Location::RegisterLocation(ECX)); |
| locs->set_out(0, Location::RegisterLocation(EAX)); |
| return locs; |
| } |
| LocationSummary* locs = |
| - new LocationSummary(kNumInputs, kNumTemps, LocationSummary::kNoCall); |
| + new (isolate) LocationSummary(isolate, kNumInputs, kNumTemps, LocationSummary::kNoCall); |
| locs->set_in(0, Location::RegisterOrConstant(left())); |
| // Only one of the inputs can be a constant. Choose register if the first one |
| // is a constant. |
| @@ -6101,8 +6198,9 @@ |
| } |
| -LocationSummary* IfThenElseInstr::MakeLocationSummary(bool opt) const { |
| - comparison()->InitializeLocationSummary(opt); |
| +LocationSummary* IfThenElseInstr::MakeLocationSummary(Isolate* isolate, |
| + bool opt) const { |
| + comparison()->InitializeLocationSummary(isolate, opt); |
| // TODO(vegorov): support byte register constraints in the register allocator. |
| comparison()->locs()->set_out(0, Location::RegisterLocation(EDX)); |
| return comparison()->locs(); |
| @@ -6158,11 +6256,12 @@ |
| } |
| -LocationSummary* ClosureCallInstr::MakeLocationSummary(bool opt) const { |
| +LocationSummary* ClosureCallInstr::MakeLocationSummary(Isolate* isolate, |
| + bool opt) const { |
| const intptr_t kNumInputs = 1; |
| const intptr_t kNumTemps = 0; |
| LocationSummary* summary = |
| - new LocationSummary(kNumInputs, kNumTemps, LocationSummary::kCall); |
| + new (isolate) LocationSummary(isolate, kNumInputs, kNumTemps, LocationSummary::kCall); |
| summary->set_in(0, Location::RegisterLocation(EAX)); // Function. |
| summary->set_out(0, Location::RegisterLocation(EAX)); |
| return summary; |
| @@ -6208,7 +6307,8 @@ |
| } |
| -LocationSummary* BooleanNegateInstr::MakeLocationSummary(bool opt) const { |
| +LocationSummary* BooleanNegateInstr::MakeLocationSummary(Isolate* isolate, |
| + bool opt) const { |
| return LocationSummary::Make(1, |
| Location::RequiresRegister(), |
| LocationSummary::kNoCall); |
| @@ -6228,7 +6328,8 @@ |
| } |
| -LocationSummary* AllocateObjectInstr::MakeLocationSummary(bool opt) const { |
| +LocationSummary* AllocateObjectInstr::MakeLocationSummary(Isolate* isolate, |
| + bool opt) const { |
| return MakeCallSummary(); |
| } |