Chromium Code Reviews| Index: runtime/vm/intermediate_language_arm.cc | 
| =================================================================== | 
| --- runtime/vm/intermediate_language_arm.cc (revision 36483) | 
| +++ runtime/vm/intermediate_language_arm.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 R0. | 
| 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(R0)); | 
| return result; | 
| } | 
| -LocationSummary* PushArgumentInstr::MakeLocationSummary(bool opt) const { | 
| +LocationSummary* PushArgumentInstr::MakeLocationSummary(Isolate* isolate, | 
| + bool opt) const { | 
| 
 
Ivan Posva
2014/05/23 09:19:29
Fixing the formatting of this in the file.
 
 | 
| 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; | 
| } | 
| @@ -64,11 +67,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); | 
| + LocationSummary* locs = new(isolate) LocationSummary( | 
| + isolate, kNumInputs, kNumTemps, LocationSummary::kNoCall); | 
| locs->set_in(0, Location::RegisterLocation(R0)); | 
| return locs; | 
| } | 
| @@ -123,8 +127,9 @@ | 
| } | 
| -LocationSummary* IfThenElseInstr::MakeLocationSummary(bool opt) const { | 
| - comparison()->InitializeLocationSummary(opt); | 
| +LocationSummary* IfThenElseInstr::MakeLocationSummary(Isolate* isolate, | 
| + bool opt) const { | 
| 
 
Cutch
2014/05/23 09:28:36
wrong indent on bool opt
 
 | 
| + comparison()->InitializeLocationSummary(isolate, opt); | 
| return comparison()->locs(); | 
| } | 
| @@ -182,11 +187,12 @@ | 
| } | 
| -LocationSummary* ClosureCallInstr::MakeLocationSummary(bool opt) const { | 
| +LocationSummary* ClosureCallInstr::MakeLocationSummary(Isolate* isolate, | 
| + bool opt) const { | 
| 
 
Cutch
2014/05/23 09:28:36
here too
 
 | 
| const intptr_t kNumInputs = 1; | 
| const intptr_t kNumTemps = 0; | 
| - LocationSummary* summary = | 
| - new LocationSummary(kNumInputs, kNumTemps, LocationSummary::kCall); | 
| + LocationSummary* summary = new(isolate) LocationSummary( | 
| + isolate, kNumInputs, kNumTemps, LocationSummary::kCall); | 
| summary->set_in(0, Location::RegisterLocation(R0)); // Function. | 
| summary->set_out(0, Location::RegisterLocation(R0)); | 
| return summary; | 
| @@ -232,7 +238,8 @@ | 
| } | 
| -LocationSummary* LoadLocalInstr::MakeLocationSummary(bool opt) const { | 
| +LocationSummary* LoadLocalInstr::MakeLocationSummary(Isolate* isolate, | 
| + bool opt) const { | 
| return LocationSummary::Make(0, | 
| Location::RequiresRegister(), | 
| LocationSummary::kNoCall); | 
| @@ -245,7 +252,8 @@ | 
| } | 
| -LocationSummary* StoreLocalInstr::MakeLocationSummary(bool opt) const { | 
| +LocationSummary* StoreLocalInstr::MakeLocationSummary(Isolate* isolate, | 
| + bool opt) const { | 
| return LocationSummary::Make(1, | 
| Location::SameAsFirstInput(), | 
| LocationSummary::kNoCall); | 
| @@ -260,7 +268,8 @@ | 
| } | 
| -LocationSummary* ConstantInstr::MakeLocationSummary(bool opt) const { | 
| +LocationSummary* ConstantInstr::MakeLocationSummary(Isolate* isolate, | 
| + bool opt) const { | 
| return LocationSummary::Make(0, | 
| Location::RequiresRegister(), | 
| LocationSummary::kNoCall); | 
| @@ -276,11 +285,12 @@ | 
| } | 
| -LocationSummary* UnboxedConstantInstr::MakeLocationSummary(bool opt) const { | 
| +LocationSummary* UnboxedConstantInstr::MakeLocationSummary(Isolate* isolate, | 
| + bool opt) const { | 
| const intptr_t kNumInputs = 0; | 
| const intptr_t kNumTemps = 1; | 
| - LocationSummary* locs = | 
| - new LocationSummary(kNumInputs, kNumTemps, LocationSummary::kNoCall); | 
| + LocationSummary* locs = new(isolate) LocationSummary( | 
| + isolate, kNumInputs, kNumTemps, LocationSummary::kNoCall); | 
| locs->set_out(0, Location::RequiresFpuRegister()); | 
| locs->set_temp(0, Location::RequiresRegister()); | 
| return locs; | 
| @@ -303,11 +313,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); | 
| + LocationSummary* summary = new(isolate) LocationSummary( | 
| + isolate, kNumInputs, kNumTemps, LocationSummary::kCall); | 
| summary->set_in(0, Location::RegisterLocation(R0)); // Value. | 
| summary->set_in(1, Location::RegisterLocation(R2)); // Instantiator. | 
| summary->set_in(2, Location::RegisterLocation(R1)); // Type arguments. | 
| @@ -316,11 +327,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); | 
| + LocationSummary* locs = new(isolate) LocationSummary( | 
| + isolate, kNumInputs, kNumTemps, LocationSummary::kCall); | 
| locs->set_in(0, Location::RegisterLocation(R0)); | 
| locs->set_out(0, Location::RegisterLocation(R0)); | 
| return locs; | 
| @@ -377,12 +389,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); | 
| + LocationSummary* locs = 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(), | 
| @@ -392,8 +405,8 @@ | 
| } | 
| if (operation_cid() == kDoubleCid) { | 
| 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::RequiresFpuRegister()); | 
| locs->set_in(1, Location::RequiresFpuRegister()); | 
| locs->set_out(0, Location::RequiresRegister()); | 
| @@ -401,8 +414,8 @@ | 
| } | 
| if (operation_cid() == kSmiCid) { | 
| 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::RegisterOrConstant(left())); | 
| // Only one input can be a constant operand. The case of two constant | 
| // operands should be handled by constant propagation. | 
| @@ -660,11 +673,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); | 
| + LocationSummary* locs = 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. | 
| @@ -704,11 +718,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); | 
| + LocationSummary* locs = 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()); | 
| @@ -776,13 +791,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 = 1; | 
| - LocationSummary* locs = | 
| - new LocationSummary(kNumInputs, kNumTemps, LocationSummary::kNoCall); | 
| + LocationSummary* locs = 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(), | 
| @@ -792,16 +808,16 @@ | 
| return locs; | 
| } | 
| if (operation_cid() == kDoubleCid) { | 
| - LocationSummary* summary = | 
| - new LocationSummary(kNumInputs, kNumTemps, LocationSummary::kNoCall); | 
| + LocationSummary* summary = 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()); | 
| return summary; | 
| } | 
| ASSERT(operation_cid() == kSmiCid); | 
| - LocationSummary* summary = | 
| - new LocationSummary(kNumInputs, kNumTemps, LocationSummary::kNoCall); | 
| + LocationSummary* summary = 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. | 
| @@ -874,11 +890,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); | 
| + LocationSummary* locs = new(isolate) LocationSummary( | 
| + isolate, kNumInputs, kNumTemps, LocationSummary::kCall); | 
| locs->set_temp(0, Location::RegisterLocation(R1)); | 
| locs->set_temp(1, Location::RegisterLocation(R2)); | 
| locs->set_temp(2, Location::RegisterLocation(R5)); | 
| @@ -935,7 +952,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, | 
| @@ -954,7 +972,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(), | 
| @@ -974,11 +993,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); | 
| + LocationSummary* summary = new(isolate) LocationSummary( | 
| + isolate, kNumInputs, kNumTemps, LocationSummary::kCall); | 
| summary->set_in(0, Location::RegisterLocation(R0)); | 
| summary->set_out(0, Location::RegisterLocation(R0)); | 
| return summary; | 
| @@ -1000,7 +1020,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(), | 
| @@ -1015,7 +1036,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(), | 
| @@ -1115,11 +1137,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); | 
| + LocationSummary* locs = new(isolate) LocationSummary( | 
| + isolate, kNumInputs, kNumTemps, LocationSummary::kNoCall); | 
| locs->set_in(0, Location::RequiresRegister()); | 
| // The smi index is either untagged (element size == 1), or it is left smi | 
| // tagged (for all element sizes > 1). | 
| @@ -1359,11 +1382,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); | 
| + LocationSummary* locs = new(isolate) LocationSummary( | 
| + isolate, kNumInputs, kNumTemps, LocationSummary::kNoCall); | 
| locs->set_in(0, Location::RequiresRegister()); | 
| // The smi index is either untagged (element size == 1), or it is left smi | 
| // tagged (for all element sizes > 1). | 
| @@ -1593,10 +1617,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); | 
| + LocationSummary* summary = new(isolate) LocationSummary( | 
| + isolate, kNumInputs, 0, LocationSummary::kNoCall); | 
| summary->set_in(0, Location::RequiresRegister()); | 
| const bool field_has_length = field().needs_length_check(); | 
| summary->AddTemp(Location::RequiresRegister()); | 
| @@ -1947,11 +1972,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, | 
| + LocationSummary* summary = new(isolate) LocationSummary( | 
| + isolate, kNumInputs, kNumTemps, | 
| !field().IsNull() && | 
| ((field().guarded_cid() == kIllegalCid) || is_initialization_) | 
| ? LocationSummary::kCallOnSlowPath | 
| @@ -2188,11 +2214,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); | 
| + LocationSummary* summary = new(isolate) LocationSummary( | 
| + isolate, kNumInputs, kNumTemps, LocationSummary::kNoCall); | 
| summary->set_in(0, Location::RequiresRegister()); | 
| summary->set_out(0, Location::RequiresRegister()); | 
| return summary; | 
| @@ -2212,8 +2239,10 @@ | 
| } | 
| -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()); | 
| @@ -2236,11 +2265,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); | 
| + LocationSummary* summary = new(isolate) LocationSummary( | 
| + isolate, kNumInputs, kNumTemps, LocationSummary::kCall); | 
| summary->set_in(0, Location::RegisterLocation(R0)); | 
| summary->set_in(1, Location::RegisterLocation(R2)); | 
| summary->set_in(2, Location::RegisterLocation(R1)); | 
| @@ -2263,11 +2293,12 @@ | 
| } | 
| -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); | 
| + LocationSummary* locs = new(isolate) LocationSummary( | 
| + isolate, kNumInputs, kNumTemps, LocationSummary::kCall); | 
| locs->set_in(kElementTypePos, Location::RegisterLocation(R1)); | 
| locs->set_in(kLengthPos, Location::RegisterLocation(R2)); | 
| locs->set_out(0, Location::RegisterLocation(R0)); | 
| @@ -2483,12 +2514,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( | 
| - kNumInputs, kNumTemps, | 
| + LocationSummary* locs = new(isolate) LocationSummary( | 
| + isolate, kNumInputs, kNumTemps, | 
| (opt && !IsPotentialUnboxedLoad()) | 
| ? LocationSummary::kNoCall | 
| : LocationSummary::kCallOnSlowPath); | 
| @@ -2631,11 +2662,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); | 
| + LocationSummary* locs = new(isolate) LocationSummary( | 
| + isolate, kNumInputs, kNumTemps, LocationSummary::kCall); | 
| locs->set_in(0, Location::RegisterLocation(R0)); | 
| locs->set_out(0, Location::RegisterLocation(R0)); | 
| return locs; | 
| @@ -2663,11 +2695,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); | 
| + LocationSummary* locs = new(isolate) LocationSummary( | 
| + isolate, kNumInputs, kNumTemps, LocationSummary::kCall); | 
| locs->set_in(0, Location::RegisterLocation(R0)); | 
| locs->set_out(0, Location::RegisterLocation(R0)); | 
| return locs; | 
| @@ -2731,11 +2763,12 @@ | 
| } | 
| -LocationSummary* AllocateContextInstr::MakeLocationSummary(bool opt) const { | 
| +LocationSummary* AllocateContextInstr::MakeLocationSummary(Isolate* isolate, | 
| + bool opt) const { | 
| const intptr_t kNumInputs = 0; | 
| const intptr_t kNumTemps = 1; | 
| - LocationSummary* locs = | 
| - new LocationSummary(kNumInputs, kNumTemps, LocationSummary::kCall); | 
| + LocationSummary* locs = new(isolate) LocationSummary( | 
| + isolate, kNumInputs, kNumTemps, LocationSummary::kCall); | 
| locs->set_temp(0, Location::RegisterLocation(R1)); | 
| locs->set_out(0, Location::RegisterLocation(R0)); | 
| return locs; | 
| @@ -2756,11 +2789,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); | 
| + LocationSummary* locs = new(isolate) LocationSummary( | 
| + isolate, kNumInputs, kNumTemps, LocationSummary::kCall); | 
| locs->set_in(0, Location::RegisterLocation(R0)); | 
| locs->set_out(0, Location::RegisterLocation(R0)); | 
| return locs; | 
| @@ -2783,7 +2817,8 @@ | 
| } | 
| -LocationSummary* CatchBlockEntryInstr::MakeLocationSummary(bool opt) const { | 
| +LocationSummary* CatchBlockEntryInstr::MakeLocationSummary(Isolate* isolate, | 
| + bool opt) const { | 
| UNREACHABLE(); | 
| return NULL; | 
| } | 
| @@ -2820,11 +2855,12 @@ | 
| } | 
| -LocationSummary* CheckStackOverflowInstr::MakeLocationSummary(bool opt) const { | 
| +LocationSummary* CheckStackOverflowInstr::MakeLocationSummary(Isolate* isolate, | 
| + bool opt) const { | 
| const intptr_t kNumInputs = 0; | 
| const intptr_t kNumTemps = 1; | 
| - LocationSummary* summary = | 
| - new LocationSummary(kNumInputs, | 
| + LocationSummary* summary = new(isolate) LocationSummary( | 
| + isolate, kNumInputs, | 
| kNumTemps, | 
| LocationSummary::kCallOnSlowPath); | 
| summary->set_temp(0, Location::RequiresRegister()); | 
| @@ -3022,11 +3058,12 @@ | 
| } | 
| -LocationSummary* BinarySmiOpInstr::MakeLocationSummary(bool opt) const { | 
| +LocationSummary* BinarySmiOpInstr::MakeLocationSummary(Isolate* isolate, | 
| + bool opt) const { | 
| const intptr_t kNumInputs = 2; | 
| const intptr_t kNumTemps = 0; | 
| - LocationSummary* summary = | 
| - new LocationSummary(kNumInputs, kNumTemps, LocationSummary::kNoCall); | 
| + LocationSummary* summary = new(isolate) LocationSummary( | 
| + isolate, kNumInputs, kNumTemps, LocationSummary::kNoCall); | 
| if (op_kind() == Token::kTRUNCDIV) { | 
| summary->set_in(0, Location::RequiresRegister()); | 
| if (RightIsPowerOfTwoConstant()) { | 
| @@ -3387,14 +3424,15 @@ | 
| } | 
| -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)); | 
| const intptr_t kNumInputs = 2; | 
| const intptr_t kNumTemps = 0; | 
| - LocationSummary* summary = | 
| - new LocationSummary(kNumInputs, kNumTemps, LocationSummary::kNoCall); | 
| + LocationSummary* summary = new(isolate) LocationSummary( | 
| + isolate, kNumInputs, kNumTemps, LocationSummary::kNoCall); | 
| summary->set_in(0, Location::RequiresRegister()); | 
| summary->set_in(1, Location::RequiresRegister()); | 
| return summary; | 
| @@ -3422,11 +3460,12 @@ | 
| } | 
| -LocationSummary* BoxDoubleInstr::MakeLocationSummary(bool opt) const { | 
| +LocationSummary* BoxDoubleInstr::MakeLocationSummary(Isolate* isolate, | 
| + bool opt) const { | 
| const intptr_t kNumInputs = 1; | 
| const intptr_t kNumTemps = 1; | 
| - LocationSummary* summary = | 
| - new LocationSummary(kNumInputs, | 
| + LocationSummary* summary = new(isolate) LocationSummary( | 
| + isolate, kNumInputs, | 
| kNumTemps, | 
| LocationSummary::kCallOnSlowPath); | 
| summary->set_in(0, Location::RequiresFpuRegister()); | 
| @@ -3452,14 +3491,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); | 
| + LocationSummary* summary = new(isolate) LocationSummary( | 
| + isolate, kNumInputs, kNumTemps, LocationSummary::kNoCall); | 
| summary->set_in(0, needs_writable_input | 
| ? Location::WritableRegister() | 
| : Location::RequiresRegister()); | 
| @@ -3512,11 +3552,12 @@ | 
| } | 
| -LocationSummary* BoxFloat32x4Instr::MakeLocationSummary(bool opt) const { | 
| +LocationSummary* BoxFloat32x4Instr::MakeLocationSummary(Isolate* isolate, | 
| + bool opt) const { | 
| const intptr_t kNumInputs = 1; | 
| const intptr_t kNumTemps = 1; | 
| - LocationSummary* summary = | 
| - new LocationSummary(kNumInputs, | 
| + LocationSummary* summary = new(isolate) LocationSummary( | 
| + isolate, kNumInputs, | 
| kNumTemps, | 
| LocationSummary::kCallOnSlowPath); | 
| summary->set_in(0, Location::RequiresFpuRegister()); | 
| @@ -3545,12 +3586,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); | 
| + LocationSummary* summary = new(isolate) LocationSummary( | 
| + isolate, kNumInputs, kNumTemps, LocationSummary::kNoCall); | 
| summary->set_in(0, Location::RequiresRegister()); | 
| if (kNumTemps > 0) { | 
| ASSERT(kNumTemps == 1); | 
| @@ -3581,11 +3623,12 @@ | 
| } | 
| -LocationSummary* BoxFloat64x2Instr::MakeLocationSummary(bool opt) const { | 
| +LocationSummary* BoxFloat64x2Instr::MakeLocationSummary(Isolate* isolate, | 
| + bool opt) const { | 
| const intptr_t kNumInputs = 1; | 
| const intptr_t kNumTemps = 1; | 
| - LocationSummary* summary = | 
| - new LocationSummary(kNumInputs, | 
| + LocationSummary* summary = new(isolate) LocationSummary( | 
| + isolate, kNumInputs, | 
| kNumTemps, | 
| LocationSummary::kCallOnSlowPath); | 
| summary->set_in(0, Location::RequiresFpuRegister()); | 
| @@ -3614,12 +3657,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); | 
| + LocationSummary* summary = new(isolate) LocationSummary( | 
| + isolate, kNumInputs, kNumTemps, LocationSummary::kNoCall); | 
| summary->set_in(0, Location::RequiresRegister()); | 
| if (kNumTemps > 0) { | 
| ASSERT(kNumTemps == 1); | 
| @@ -3650,11 +3694,12 @@ | 
| } | 
| -LocationSummary* BoxInt32x4Instr::MakeLocationSummary(bool opt) const { | 
| +LocationSummary* BoxInt32x4Instr::MakeLocationSummary(Isolate* isolate, | 
| + bool opt) const { | 
| const intptr_t kNumInputs = 1; | 
| const intptr_t kNumTemps = 1; | 
| - LocationSummary* summary = | 
| - new LocationSummary(kNumInputs, | 
| + LocationSummary* summary = new(isolate) LocationSummary( | 
| + isolate, kNumInputs, | 
| kNumTemps, | 
| LocationSummary::kCallOnSlowPath); | 
| summary->set_in(0, Location::RequiresFpuRegister()); | 
| @@ -3714,12 +3759,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); | 
| + LocationSummary* summary = new(isolate) LocationSummary( | 
| + isolate, kNumInputs, kNumTemps, LocationSummary::kNoCall); | 
| summary->set_in(0, Location::RequiresRegister()); | 
| if (kNumTemps > 0) { | 
| ASSERT(kNumTemps == 1); | 
| @@ -3750,11 +3796,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); | 
| + LocationSummary* summary = 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::RequiresFpuRegister()); | 
| @@ -3776,11 +3823,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); | 
| + LocationSummary* summary = 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::RequiresFpuRegister()); | 
| @@ -3803,11 +3851,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); | 
| + LocationSummary* summary = 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::RequiresFpuRegister()); | 
| @@ -3851,11 +3900,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); | 
| + LocationSummary* summary = new(isolate) LocationSummary( | 
| + isolate, kNumInputs, kNumTemps, LocationSummary::kNoCall); | 
| // Low (< Q7) Q registers are needed for the vcvtds and vmovs instructions. | 
| summary->set_in(0, Location::FpuRegisterLocation(Q5)); | 
| summary->set_out(0, Location::FpuRegisterLocation(Q6)); | 
| @@ -3931,11 +3981,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); | 
| + LocationSummary* summary = new(isolate) LocationSummary( | 
| + isolate, kNumInputs, kNumTemps, LocationSummary::kNoCall); | 
| // Low (< Q7) Q registers are needed for the vcvtds and vmovs instructions. | 
| summary->set_in(0, Location::FpuRegisterLocation(Q4)); | 
| summary->set_in(1, Location::FpuRegisterLocation(Q5)); | 
| @@ -3987,11 +4038,12 @@ | 
| } | 
| -LocationSummary* Simd32x4GetSignMaskInstr::MakeLocationSummary(bool opt) const { | 
| +LocationSummary* Simd32x4GetSignMaskInstr::MakeLocationSummary(Isolate* isolate, | 
| + bool opt) const { | 
| const intptr_t kNumInputs = 1; | 
| const intptr_t kNumTemps = 1; | 
| - LocationSummary* summary = | 
| - new LocationSummary(kNumInputs, kNumTemps, LocationSummary::kNoCall); | 
| + LocationSummary* summary = new(isolate) LocationSummary( | 
| + isolate, kNumInputs, kNumTemps, LocationSummary::kNoCall); | 
| summary->set_in(0, Location::FpuRegisterLocation(Q5)); | 
| summary->set_temp(0, Location::RequiresRegister()); | 
| summary->set_out(0, Location::RequiresRegister()); | 
| @@ -4028,11 +4080,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); | 
| + LocationSummary* summary = 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()); | 
| @@ -4060,11 +4112,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); | 
| + LocationSummary* summary = new(isolate) LocationSummary( | 
| + isolate, kNumInputs, kNumTemps, LocationSummary::kNoCall); | 
| summary->set_out(0, Location::RequiresFpuRegister()); | 
| return summary; | 
| } | 
| @@ -4076,11 +4129,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); | 
| + LocationSummary* summary = new(isolate) LocationSummary( | 
| + isolate, kNumInputs, kNumTemps, LocationSummary::kNoCall); | 
| summary->set_in(0, Location::RequiresFpuRegister()); | 
| summary->set_out(0, Location::RequiresFpuRegister()); | 
| return summary; | 
| @@ -4101,11 +4155,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); | 
| + LocationSummary* summary = 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::RequiresFpuRegister()); | 
| @@ -4145,11 +4200,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); | 
| + LocationSummary* summary = 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::RequiresFpuRegister()); | 
| @@ -4174,11 +4230,12 @@ | 
| } | 
| -LocationSummary* Float32x4SqrtInstr::MakeLocationSummary(bool opt) const { | 
| +LocationSummary* Float32x4SqrtInstr::MakeLocationSummary(Isolate* isolate, | 
| + bool opt) const { | 
| const intptr_t kNumInputs = 1; | 
| const intptr_t kNumTemps = 1; | 
| - LocationSummary* summary = | 
| - new LocationSummary(kNumInputs, kNumTemps, LocationSummary::kNoCall); | 
| + LocationSummary* summary = new(isolate) LocationSummary( | 
| + isolate, kNumInputs, kNumTemps, LocationSummary::kNoCall); | 
| summary->set_in(0, Location::RequiresFpuRegister()); | 
| summary->set_out(0, Location::RequiresFpuRegister()); | 
| summary->set_temp(0, Location::RequiresFpuRegister()); | 
| @@ -4206,11 +4263,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); | 
| + LocationSummary* summary = 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::RequiresFpuRegister()); | 
| @@ -4234,11 +4292,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); | 
| + LocationSummary* summary = new(isolate) LocationSummary( | 
| + isolate, kNumInputs, kNumTemps, LocationSummary::kNoCall); | 
| summary->set_in(0, Location::RequiresFpuRegister()); | 
| summary->set_out(0, Location::RequiresFpuRegister()); | 
| return summary; | 
| @@ -4261,11 +4320,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); | 
| + LocationSummary* summary = 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()); | 
| @@ -4284,11 +4344,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); | 
| + LocationSummary* summary = new(isolate) LocationSummary( | 
| + isolate, kNumInputs, kNumTemps, LocationSummary::kNoCall); | 
| summary->set_in(0, Location::RequiresFpuRegister()); | 
| summary->set_in(1, Location::RequiresFpuRegister()); | 
| // Low (< 7) Q registers are needed for the vmovs instruction. | 
| @@ -4332,11 +4393,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); | 
| + LocationSummary* summary = new(isolate) LocationSummary( | 
| + isolate, kNumInputs, kNumTemps, LocationSummary::kNoCall); | 
| summary->set_in(0, Location::RequiresFpuRegister()); | 
| summary->set_out(0, Location::RequiresFpuRegister()); | 
| return summary; | 
| @@ -4353,11 +4415,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); | 
| + LocationSummary* summary = new(isolate) LocationSummary( | 
| + isolate, kNumInputs, kNumTemps, LocationSummary::kNoCall); | 
| summary->set_in(0, Location::RequiresFpuRegister()); | 
| summary->set_out(0, Location::RequiresFpuRegister()); | 
| return summary; | 
| @@ -4386,11 +4449,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); | 
| + LocationSummary* summary = new(isolate) LocationSummary( | 
| + isolate, kNumInputs, kNumTemps, LocationSummary::kNoCall); | 
| summary->set_out(0, Location::RequiresFpuRegister()); | 
| return summary; | 
| } | 
| @@ -4402,11 +4466,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); | 
| + LocationSummary* summary = new(isolate) LocationSummary( | 
| + isolate, kNumInputs, kNumTemps, LocationSummary::kNoCall); | 
| summary->set_in(0, Location::RequiresFpuRegister()); | 
| summary->set_out(0, Location::RequiresFpuRegister()); | 
| return summary; | 
| @@ -4430,11 +4495,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); | 
| + LocationSummary* summary = 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::RequiresFpuRegister()); | 
| @@ -4459,11 +4524,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); | 
| + LocationSummary* summary = new(isolate) LocationSummary( | 
| + isolate, kNumInputs, kNumTemps, LocationSummary::kNoCall); | 
| summary->set_in(0, Location::RequiresFpuRegister()); | 
| // Low (< 7) Q registers are needed for the vcvtsd instruction. | 
| summary->set_out(0, Location::FpuRegisterLocation(Q6)); | 
| @@ -4490,11 +4555,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); | 
| + LocationSummary* summary = new(isolate) LocationSummary( | 
| + isolate, kNumInputs, kNumTemps, LocationSummary::kNoCall); | 
| summary->set_in(0, Location::RequiresFpuRegister()); | 
| // Low (< 7) Q registers are needed for the vcvtsd instruction. | 
| summary->set_out(0, Location::FpuRegisterLocation(Q6)); | 
| @@ -4518,11 +4583,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); | 
| + LocationSummary* summary = new(isolate) LocationSummary( | 
| + isolate, kNumInputs, kNumTemps, LocationSummary::kNoCall); | 
| if (representation() == kTagged) { | 
| ASSERT(op_kind() == MethodRecognizer::kFloat64x2GetSignMask); | 
| @@ -4585,11 +4651,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); | 
| + LocationSummary* summary = 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()); | 
| @@ -4658,11 +4725,11 @@ | 
| LocationSummary* Int32x4BoolConstructorInstr::MakeLocationSummary( | 
| - bool opt) const { | 
| + Isolate* isolate, bool opt) const { | 
| const intptr_t kNumInputs = 4; | 
| const intptr_t kNumTemps = 1; | 
| - LocationSummary* summary = | 
| - new LocationSummary(kNumInputs, kNumTemps, LocationSummary::kNoCall); | 
| + LocationSummary* summary = 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()); | 
| @@ -4705,11 +4772,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); | 
| + LocationSummary* summary = new(isolate) LocationSummary( | 
| + isolate, kNumInputs, kNumTemps, LocationSummary::kNoCall); | 
| // Low (< 7) Q registers are needed for the vmovrs instruction. | 
| summary->set_in(0, Location::FpuRegisterLocation(Q6)); | 
| summary->set_out(0, Location::RequiresRegister()); | 
| @@ -4750,11 +4818,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); | 
| + LocationSummary* summary = 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()); | 
| @@ -4784,11 +4853,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); | 
| + LocationSummary* summary = new(isolate) LocationSummary( | 
| + isolate, kNumInputs, kNumTemps, LocationSummary::kNoCall); | 
| summary->set_in(0, Location::RequiresFpuRegister()); | 
| summary->set_in(1, Location::RequiresRegister()); | 
| // Low (< 7) Q register needed for the vmovsr instruction. | 
| @@ -4834,11 +4904,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); | 
| + LocationSummary* summary = new(isolate) LocationSummary( | 
| + isolate, kNumInputs, kNumTemps, LocationSummary::kNoCall); | 
| summary->set_in(0, Location::RequiresFpuRegister()); | 
| summary->set_out(0, Location::RequiresFpuRegister()); | 
| return summary; | 
| @@ -4855,11 +4926,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); | 
| + LocationSummary* summary = 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::RequiresFpuRegister()); | 
| @@ -4895,12 +4967,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 = 0; | 
| - LocationSummary* summary = | 
| - new LocationSummary(kNumInputs, kNumTemps, LocationSummary::kCall); | 
| + LocationSummary* summary = new(isolate) LocationSummary( | 
| + isolate, kNumInputs, kNumTemps, LocationSummary::kCall); | 
| summary->set_in(0, Location::FpuRegisterLocation(Q0)); | 
| summary->set_out(0, Location::FpuRegisterLocation(Q0)); | 
| if (!TargetCPUFeatures::hardfp_supported()) { | 
| @@ -4915,8 +4988,8 @@ | 
| (kind() == MathUnaryInstr::kDoubleSquare)); | 
| const intptr_t kNumInputs = 1; | 
| const intptr_t kNumTemps = 0; | 
| - LocationSummary* summary = | 
| - new LocationSummary(kNumInputs, kNumTemps, LocationSummary::kNoCall); | 
| + LocationSummary* summary = new(isolate) LocationSummary( | 
| + isolate, kNumInputs, kNumTemps, LocationSummary::kNoCall); | 
| summary->set_in(0, Location::RequiresFpuRegister()); | 
| summary->set_out(0, Location::RequiresFpuRegister()); | 
| return summary; | 
| @@ -4951,12 +5024,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); | 
| + LocationSummary* summary = 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. | 
| @@ -4967,8 +5041,8 @@ | 
| ASSERT(result_cid() == kSmiCid); | 
| const intptr_t kNumInputs = 2; | 
| const intptr_t kNumTemps = 0; | 
| - LocationSummary* summary = | 
| - new LocationSummary(kNumInputs, kNumTemps, LocationSummary::kNoCall); | 
| + LocationSummary* summary = 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. | 
| @@ -5036,11 +5110,12 @@ | 
| } | 
| -LocationSummary* UnarySmiOpInstr::MakeLocationSummary(bool opt) const { | 
| +LocationSummary* UnarySmiOpInstr::MakeLocationSummary(Isolate* isolate, | 
| + bool opt) const { | 
| const intptr_t kNumInputs = 1; | 
| const intptr_t kNumTemps = 0; | 
| - LocationSummary* summary = | 
| - new LocationSummary(kNumInputs, kNumTemps, LocationSummary::kNoCall); | 
| + LocationSummary* summary = new(isolate) LocationSummary( | 
| + isolate, kNumInputs, kNumTemps, LocationSummary::kNoCall); | 
| summary->set_in(0, Location::RequiresRegister()); | 
| // We make use of 3-operand instructions by not requiring result register | 
| // to be identical to first input register as on Intel. | 
| @@ -5070,11 +5145,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); | 
| + LocationSummary* summary = new(isolate) LocationSummary( | 
| + isolate, kNumInputs, kNumTemps, LocationSummary::kNoCall); | 
| summary->set_in(0, Location::RequiresFpuRegister()); | 
| summary->set_out(0, Location::RequiresFpuRegister()); | 
| return summary; | 
| @@ -5088,11 +5164,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); | 
| + LocationSummary* result = new(isolate) LocationSummary( | 
| + isolate, kNumInputs, kNumTemps, LocationSummary::kNoCall); | 
| result->set_in(0, Location::WritableRegister()); | 
| result->set_out(0, Location::RequiresFpuRegister()); | 
| return result; | 
| @@ -5108,11 +5185,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); | 
| + LocationSummary* result = new(isolate) LocationSummary( | 
| + isolate, kNumInputs, kNumTemps, LocationSummary::kCall); | 
| result->set_in(0, Location::RegisterLocation(R1)); | 
| result->set_out(0, Location::RegisterLocation(R0)); | 
| return result; | 
| @@ -5160,11 +5238,12 @@ | 
| } | 
| -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( | 
| - kNumInputs, kNumTemps, LocationSummary::kNoCall); | 
| + LocationSummary* result = new(isolate) LocationSummary( | 
| + isolate, kNumInputs, kNumTemps, LocationSummary::kNoCall); | 
| result->set_in(0, Location::RequiresFpuRegister()); | 
| result->set_out(0, Location::RequiresRegister()); | 
| return result; | 
| @@ -5190,7 +5269,8 @@ | 
| } | 
| -LocationSummary* DoubleToDoubleInstr::MakeLocationSummary(bool opt) const { | 
| +LocationSummary* DoubleToDoubleInstr::MakeLocationSummary(Isolate* isolate, | 
| + bool opt) const { | 
| UNIMPLEMENTED(); | 
| return NULL; | 
| } | 
| @@ -5201,11 +5281,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); | 
| + LocationSummary* result = new(isolate) LocationSummary( | 
| + isolate, kNumInputs, kNumTemps, LocationSummary::kNoCall); | 
| // Low (<= Q7) Q registers are needed for the conversion instructions. | 
| result->set_in(0, Location::RequiresFpuRegister()); | 
| result->set_out(0, Location::FpuRegisterLocation(Q7)); | 
| @@ -5221,11 +5302,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); | 
| + LocationSummary* result = new(isolate) LocationSummary( | 
| + isolate, kNumInputs, kNumTemps, LocationSummary::kNoCall); | 
| // Low (<= Q7) Q registers are needed for the conversion instructions. | 
| result->set_in(0, Location::FpuRegisterLocation(Q7)); | 
| result->set_out(0, Location::RequiresFpuRegister()); | 
| @@ -5241,11 +5323,12 @@ | 
| } | 
| -LocationSummary* InvokeMathCFunctionInstr::MakeLocationSummary(bool opt) const { | 
| +LocationSummary* InvokeMathCFunctionInstr::MakeLocationSummary(Isolate* isolate, | 
| + bool opt) const { | 
| ASSERT((InputCount() == 1) || (InputCount() == 2)); | 
| const intptr_t kNumTemps = 0; | 
| - LocationSummary* result = | 
| - new LocationSummary(InputCount(), kNumTemps, LocationSummary::kCall); | 
| + LocationSummary* result = new(isolate) LocationSummary( | 
| + isolate, InputCount(), kNumTemps, LocationSummary::kCall); | 
| result->set_in(0, Location::FpuRegisterLocation(Q0)); | 
| if (InputCount() == 2) { | 
| result->set_in(1, Location::FpuRegisterLocation(Q1)); | 
| @@ -5424,12 +5507,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); | 
| + LocationSummary* summary = new(isolate) LocationSummary( | 
| + isolate, kNumInputs, 0, LocationSummary::kNoCall); | 
| if (representation() == kUnboxedDouble) { | 
| if (index() == 0) { | 
| summary->set_in(0, Location::Pair(Location::RequiresFpuRegister(), | 
| @@ -5473,12 +5557,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 = 2; | 
| - LocationSummary* summary = | 
| - new LocationSummary(kNumInputs, kNumTemps, LocationSummary::kNoCall); | 
| + LocationSummary* summary = new(isolate) LocationSummary( | 
| + isolate, kNumInputs, kNumTemps, LocationSummary::kNoCall); | 
| summary->set_in(0, Location::RequiresRegister()); | 
| summary->set_in(1, Location::RequiresRegister()); | 
| summary->set_temp(0, Location::RequiresRegister()); | 
| @@ -5556,7 +5641,7 @@ | 
| LocationSummary* PolymorphicInstanceCallInstr::MakeLocationSummary( | 
| - bool opt) const { | 
| + Isolate* isolate, bool opt) const { | 
| return MakeCallSummary(); | 
| } | 
| @@ -5599,8 +5684,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(); | 
| @@ -5612,11 +5698,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); | 
| + LocationSummary* summary = new(isolate) LocationSummary( | 
| + isolate, kNumInputs, kNumTemps, LocationSummary::kNoCall); | 
| summary->set_in(0, Location::RequiresRegister()); | 
| if (!IsNullCheck()) { | 
| summary->AddTemp(Location::RequiresRegister()); | 
| @@ -5666,11 +5753,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); | 
| + LocationSummary* summary = new(isolate) LocationSummary( | 
| + isolate, kNumInputs, kNumTemps, LocationSummary::kNoCall); | 
| summary->set_in(0, Location::RequiresRegister()); | 
| return summary; | 
| } | 
| @@ -5684,11 +5772,12 @@ | 
| } | 
| -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); | 
| + LocationSummary* locs = new(isolate) LocationSummary( | 
| + isolate, kNumInputs, kNumTemps, LocationSummary::kNoCall); | 
| locs->set_in(kLengthPos, Location::RegisterOrSmiConstant(length())); | 
| locs->set_in(kIndexPos, Location::RegisterOrSmiConstant(index())); | 
| return locs; | 
| @@ -5752,11 +5841,12 @@ | 
| } | 
| -LocationSummary* UnboxIntegerInstr::MakeLocationSummary(bool opt) const { | 
| +LocationSummary* UnboxIntegerInstr::MakeLocationSummary(Isolate* isolate, | 
| + bool opt) const { | 
| const intptr_t kNumInputs = 1; | 
| const intptr_t kNumTemps = 1; | 
| - LocationSummary* summary = | 
| - new LocationSummary(kNumInputs, kNumTemps, LocationSummary::kNoCall); | 
| + LocationSummary* summary = new(isolate) LocationSummary( | 
| + isolate, kNumInputs, kNumTemps, LocationSummary::kNoCall); | 
| summary->set_in(0, Location::RequiresRegister()); | 
| summary->set_temp(0, Location::RequiresRegister()); | 
| summary->set_out(0, Location::Pair(Location::RequiresRegister(), | 
| @@ -5828,11 +5918,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, | 
| + LocationSummary* summary = new(isolate) LocationSummary( | 
| + isolate, kNumInputs, | 
| kNumTemps, | 
| LocationSummary::kCallOnSlowPath); | 
| summary->set_in(0, Location::Pair(Location::RequiresRegister(), | 
| @@ -5934,11 +6025,12 @@ | 
| } | 
| -LocationSummary* BinaryMintOpInstr::MakeLocationSummary(bool opt) const { | 
| +LocationSummary* BinaryMintOpInstr::MakeLocationSummary(Isolate* isolate, | 
| + bool opt) const { | 
| const intptr_t kNumInputs = 2; | 
| const intptr_t kNumTemps = 0; | 
| - LocationSummary* summary = | 
| - new LocationSummary(kNumInputs, kNumTemps, LocationSummary::kNoCall); | 
| + LocationSummary* summary = 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(), | 
| @@ -6007,11 +6099,12 @@ | 
| } | 
| -LocationSummary* ShiftMintOpInstr::MakeLocationSummary(bool opt) const { | 
| +LocationSummary* ShiftMintOpInstr::MakeLocationSummary(Isolate* isolate, | 
| + bool opt) const { | 
| const intptr_t kNumInputs = 2; | 
| const intptr_t kNumTemps = 1; | 
| - LocationSummary* summary = | 
| - new LocationSummary(kNumInputs, kNumTemps, LocationSummary::kNoCall); | 
| + LocationSummary* summary = new(isolate) LocationSummary( | 
| + isolate, kNumInputs, kNumTemps, LocationSummary::kNoCall); | 
| summary->set_in(0, Location::Pair(Location::RequiresRegister(), | 
| Location::RequiresRegister())); | 
| summary->set_in(1, Location::WritableRegister()); | 
| @@ -6098,11 +6191,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); | 
| + LocationSummary* summary = new(isolate) LocationSummary( | 
| + isolate, kNumInputs, kNumTemps, LocationSummary::kNoCall); | 
| summary->set_in(0, Location::Pair(Location::RequiresRegister(), | 
| Location::RequiresRegister())); | 
| summary->set_out(0, Location::Pair(Location::RequiresRegister(), | 
| @@ -6134,8 +6228,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); | 
| } | 
| @@ -6149,8 +6244,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); | 
| } | 
| @@ -6190,8 +6286,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); | 
| } | 
| @@ -6219,7 +6316,8 @@ | 
| } | 
| -LocationSummary* CurrentContextInstr::MakeLocationSummary(bool opt) const { | 
| +LocationSummary* CurrentContextInstr::MakeLocationSummary(Isolate* isolate, | 
| + bool opt) const { | 
| return LocationSummary::Make(0, | 
| Location::RequiresRegister(), | 
| LocationSummary::kNoCall); | 
| @@ -6231,19 +6329,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); | 
| + LocationSummary* locs = new(isolate) LocationSummary( | 
| + isolate, kNumInputs, kNumTemps, LocationSummary::kCall); | 
| locs->set_in(0, Location::RegisterLocation(R0)); | 
| locs->set_in(1, Location::RegisterLocation(R1)); | 
| locs->set_out(0, Location::RegisterLocation(R0)); | 
| return locs; | 
| } | 
| - LocationSummary* locs = | 
| - new LocationSummary(kNumInputs, kNumTemps, LocationSummary::kNoCall); | 
| + LocationSummary* locs = 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. | 
| @@ -6304,7 +6403,8 @@ | 
| } | 
| -LocationSummary* BooleanNegateInstr::MakeLocationSummary(bool opt) const { | 
| +LocationSummary* BooleanNegateInstr::MakeLocationSummary(Isolate* isolate, | 
| + bool opt) const { | 
| return LocationSummary::Make(1, | 
| Location::RequiresRegister(), | 
| LocationSummary::kNoCall); | 
| @@ -6321,7 +6421,8 @@ | 
| } | 
| -LocationSummary* AllocateObjectInstr::MakeLocationSummary(bool opt) const { | 
| +LocationSummary* AllocateObjectInstr::MakeLocationSummary(Isolate* isolate, | 
| + bool opt) const { | 
| return MakeCallSummary(); | 
| } |