Index: runtime/vm/intermediate_language_x64.cc |
=================================================================== |
--- runtime/vm/intermediate_language_x64.cc (revision 36483) |
+++ runtime/vm/intermediate_language_x64.cc (working copy) |
@@ -28,17 +28,19 @@ |
// Generic summary for call instructions that have all arguments pushed |
// on the stack and return the result in a fixed register RAX. |
LocationSummary* Instruction::MakeCallSummary() { |
- LocationSummary* result = new LocationSummary(0, 0, LocationSummary::kCall); |
+ LocationSummary* result = new LocationSummary( |
+ Isolate::Current(), 0, 0, LocationSummary::kCall); |
result->set_out(0, Location::RegisterLocation(RAX)); |
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; |
} |
@@ -61,11 +63,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(RAX)); |
return locs; |
} |
@@ -121,8 +124,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(RDX)); |
return comparison()->locs(); |
@@ -178,7 +182,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() |
@@ -195,7 +200,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(), |
@@ -211,7 +217,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(), |
@@ -228,11 +235,12 @@ |
} |
-LocationSummary* UnboxedConstantInstr::MakeLocationSummary(bool opt) const { |
+LocationSummary* UnboxedConstantInstr::MakeLocationSummary(Isolate* isolate, |
+ bool opt) const { |
const intptr_t kNumInputs = 0; |
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_out(0, Location::RequiresFpuRegister()); |
return locs; |
} |
@@ -252,11 +260,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(RAX)); // Value. |
summary->set_in(1, Location::RegisterLocation(RCX)); // Instantiator. |
summary->set_in(2, Location::RegisterLocation(RDX)); // Type arguments. |
@@ -265,11 +274,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(RAX)); |
locs->set_out(0, Location::RegisterLocation(RAX)); |
return locs; |
@@ -326,12 +336,13 @@ |
} |
-LocationSummary* EqualityCompareInstr::MakeLocationSummary(bool opt) const { |
+LocationSummary* EqualityCompareInstr::MakeLocationSummary(Isolate* isolate, |
+ bool opt) const { |
const intptr_t kNumInputs = 2; |
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()); |
@@ -339,8 +350,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. |
@@ -509,11 +520,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. |
@@ -554,11 +566,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()); |
@@ -625,20 +638,21 @@ |
} |
-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() == 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. |
@@ -686,11 +700,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(RAX)); |
locs->set_temp(1, Location::RegisterLocation(RBX)); |
locs->set_temp(2, Location::RegisterLocation(R10)); |
@@ -742,7 +757,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, |
@@ -763,7 +779,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(), |
@@ -788,11 +805,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(RAX)); |
summary->set_out(0, Location::RegisterLocation(RAX)); |
return summary; |
@@ -814,7 +832,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(), |
@@ -829,7 +848,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(), |
@@ -920,11 +940,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). |
@@ -1074,11 +1095,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). |
@@ -1248,10 +1270,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(); |
const bool need_value_temp_reg = |
@@ -1622,11 +1645,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 |
@@ -1866,11 +1890,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; |
@@ -1889,8 +1914,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()); |
@@ -1913,11 +1940,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(RAX)); |
summary->set_in(1, Location::RegisterLocation(RCX)); |
summary->set_in(2, Location::RegisterLocation(RDX)); |
@@ -1942,11 +1970,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); |
+ LocationSummary* locs = new(isolate) LocationSummary( |
+ isolate, kNumInputs, kNumTemps, LocationSummary::kCall); |
locs->set_in(0, Location::RegisterLocation(RBX)); |
locs->set_in(1, Location::RegisterLocation(R10)); |
locs->set_out(0, Location::RegisterLocation(RAX)); |
@@ -2162,12 +2191,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); |
@@ -2306,11 +2335,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(RAX)); |
locs->set_out(0, Location::RegisterLocation(RAX)); |
return locs; |
@@ -2338,11 +2368,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(RAX)); |
locs->set_out(0, Location::RegisterLocation(RAX)); |
return locs; |
@@ -2409,11 +2439,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(R10)); |
locs->set_out(0, Location::RegisterLocation(RAX)); |
return locs; |
@@ -2434,11 +2465,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(RAX)); |
locs->set_out(0, Location::RegisterLocation(RAX)); |
return locs; |
@@ -2461,7 +2493,8 @@ |
} |
-LocationSummary* CatchBlockEntryInstr::MakeLocationSummary(bool opt) const { |
+LocationSummary* CatchBlockEntryInstr::MakeLocationSummary(Isolate* isolate, |
+ bool opt) const { |
UNREACHABLE(); |
return NULL; |
} |
@@ -2498,11 +2531,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()); |
@@ -2742,7 +2776,8 @@ |
} |
-LocationSummary* BinarySmiOpInstr::MakeLocationSummary(bool opt) const { |
+LocationSummary* BinarySmiOpInstr::MakeLocationSummary(Isolate* isolate, |
+ bool opt) const { |
const intptr_t kNumInputs = 2; |
ConstantInstr* right_constant = right()->definition()->AsConstant(); |
@@ -2753,8 +2788,8 @@ |
(op_kind() != Token::kMOD) && |
CanBeImmediate(right_constant->value())) { |
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::Constant(right_constant->value())); |
summary->set_out(0, Location::SameAsFirstInput()); |
@@ -2763,8 +2798,8 @@ |
if (op_kind() == Token::kTRUNCDIV) { |
const intptr_t kNumTemps = 1; |
- LocationSummary* summary = |
- new LocationSummary(kNumInputs, kNumTemps, LocationSummary::kNoCall); |
+ LocationSummary* summary = new(isolate) LocationSummary( |
+ isolate, kNumInputs, kNumTemps, LocationSummary::kNoCall); |
if (RightIsPowerOfTwoConstant()) { |
summary->set_in(0, Location::RequiresRegister()); |
ConstantInstr* right_constant = right()->definition()->AsConstant(); |
@@ -2782,8 +2817,8 @@ |
return summary; |
} else if (op_kind() == Token::kMOD) { |
const intptr_t kNumTemps = 1; |
- LocationSummary* summary = |
- new LocationSummary(kNumInputs, kNumTemps, LocationSummary::kNoCall); |
+ LocationSummary* summary = new(isolate) LocationSummary( |
+ isolate, kNumInputs, kNumTemps, LocationSummary::kNoCall); |
// Both inputs must be writable because they will be untagged. |
summary->set_in(0, Location::RegisterLocation(RDX)); |
summary->set_in(1, Location::WritableRegister()); |
@@ -2793,16 +2828,16 @@ |
return summary; |
} else if (op_kind() == Token::kSHR) { |
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::FixedRegisterOrSmiConstant(right(), RCX)); |
summary->set_out(0, Location::SameAsFirstInput()); |
return summary; |
} else if (op_kind() == Token::kSHL) { |
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::FixedRegisterOrSmiConstant(right(), RCX)); |
if (!is_truncating()) { |
@@ -2812,8 +2847,8 @@ |
return summary; |
} else { |
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()); |
ConstantInstr* constant = right()->definition()->AsConstant(); |
if (constant != NULL) { |
@@ -3197,7 +3232,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)); |
@@ -3206,8 +3242,8 @@ |
&& (left_cid != kSmiCid) |
&& (right_cid != kSmiCid); |
const intptr_t kNumTemps = need_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, Location::RequiresRegister()); |
summary->set_in(1, Location::RequiresRegister()); |
if (need_temp) summary->set_temp(0, Location::RequiresRegister()); |
@@ -3238,11 +3274,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, |
+ LocationSummary* summary = new(isolate) LocationSummary( |
+ isolate, kNumInputs, |
kNumTemps, |
LocationSummary::kCallOnSlowPath); |
summary->set_in(0, Location::RequiresFpuRegister()); |
@@ -3268,11 +3305,12 @@ |
} |
-LocationSummary* UnboxDoubleInstr::MakeLocationSummary(bool opt) const { |
+LocationSummary* UnboxDoubleInstr::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); |
const bool needs_writable_input = (value()->Type()->ToCid() != kDoubleCid); |
summary->set_in(0, needs_writable_input |
? Location::WritableRegister() |
@@ -3321,11 +3359,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, |
+ LocationSummary* summary = new(isolate) LocationSummary( |
+ isolate, kNumInputs, |
kNumTemps, |
LocationSummary::kCallOnSlowPath); |
summary->set_in(0, Location::RequiresFpuRegister()); |
@@ -3351,7 +3390,8 @@ |
} |
-LocationSummary* UnboxFloat32x4Instr::MakeLocationSummary(bool opt) const { |
+LocationSummary* UnboxFloat32x4Instr::MakeLocationSummary(Isolate* isolate, |
+ bool opt) const { |
const intptr_t kNumInputs = 1; |
return LocationSummary::Make(kNumInputs, |
Location::RequiresFpuRegister(), |
@@ -3375,11 +3415,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, |
+ LocationSummary* summary = new(isolate) LocationSummary( |
+ isolate, kNumInputs, |
kNumTemps, |
LocationSummary::kCallOnSlowPath); |
summary->set_in(0, Location::RequiresFpuRegister()); |
@@ -3405,12 +3446,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()); |
summary->set_out(0, Location::RequiresFpuRegister()); |
return summary; |
@@ -3433,11 +3475,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, |
+ LocationSummary* summary = new(isolate) LocationSummary( |
+ isolate, kNumInputs, |
kNumTemps, |
LocationSummary::kCallOnSlowPath); |
summary->set_in(0, Location::RequiresFpuRegister()); |
@@ -3495,11 +3538,12 @@ |
} |
-LocationSummary* UnboxInt32x4Instr::MakeLocationSummary(bool opt) const { |
+LocationSummary* UnboxInt32x4Instr::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::RequiresFpuRegister()); |
return summary; |
@@ -3522,11 +3566,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::SameAsFirstInput()); |
@@ -3550,11 +3595,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::SameAsFirstInput()); |
@@ -3578,11 +3624,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::SameAsFirstInput()); |
@@ -3606,11 +3653,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); |
summary->set_in(0, Location::RequiresFpuRegister()); |
summary->set_out(0, Location::SameAsFirstInput()); |
return summary; |
@@ -3648,11 +3696,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); |
summary->set_in(0, Location::RequiresFpuRegister()); |
summary->set_in(1, Location::RequiresFpuRegister()); |
summary->set_out(0, Location::SameAsFirstInput()); |
@@ -3675,11 +3724,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); |
+ LocationSummary* summary = new(isolate) LocationSummary( |
+ isolate, kNumInputs, kNumTemps, LocationSummary::kNoCall); |
summary->set_in(0, Location::RequiresFpuRegister()); |
summary->set_out(0, Location::RequiresRegister()); |
return summary; |
@@ -3696,11 +3746,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()); |
@@ -3733,11 +3783,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; |
} |
@@ -3749,11 +3800,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::SameAsFirstInput()); |
return summary; |
@@ -3770,11 +3822,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::SameAsFirstInput()); |
@@ -3813,11 +3866,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::SameAsFirstInput()); |
@@ -3843,11 +3897,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::SameAsFirstInput()); |
@@ -3872,11 +3927,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); |
+ LocationSummary* summary = new(isolate) LocationSummary( |
+ isolate, kNumInputs, kNumTemps, LocationSummary::kNoCall); |
summary->set_in(0, Location::RequiresFpuRegister()); |
summary->set_out(0, Location::SameAsFirstInput()); |
return summary; |
@@ -3903,11 +3959,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::SameAsFirstInput()); |
return summary; |
@@ -3930,11 +3987,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()); |
@@ -3953,11 +4011,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()); |
summary->set_out(0, Location::SameAsFirstInput()); |
@@ -4021,11 +4080,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::SameAsFirstInput()); |
return summary; |
@@ -4037,11 +4097,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::SameAsFirstInput()); |
return summary; |
@@ -4064,11 +4125,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; |
} |
@@ -4080,11 +4142,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::SameAsFirstInput()); |
return summary; |
@@ -4098,11 +4161,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::SameAsFirstInput()); |
@@ -4123,11 +4186,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()); |
summary->set_out(0, Location::SameAsFirstInput()); |
return summary; |
@@ -4141,11 +4204,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()); |
summary->set_out(0, Location::SameAsFirstInput()); |
return summary; |
@@ -4158,11 +4221,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); |
summary->set_in(0, Location::RequiresFpuRegister()); |
if (representation() == kTagged) { |
ASSERT(op_kind() == MethodRecognizer::kFloat64x2GetSignMask); |
@@ -4200,11 +4264,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()); |
@@ -4254,11 +4319,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()); |
@@ -4323,11 +4388,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); |
summary->set_in(0, Location::RequiresFpuRegister()); |
summary->set_out(0, Location::RequiresRegister()); |
return summary; |
@@ -4368,11 +4434,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()); |
@@ -4402,11 +4469,12 @@ |
} |
-LocationSummary* Int32x4SetFlagInstr::MakeLocationSummary(bool opt) const { |
+LocationSummary* Int32x4SetFlagInstr::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::RequiresFpuRegister()); |
summary->set_in(1, Location::RequiresRegister()); |
summary->set_temp(0, Location::RequiresRegister()); |
@@ -4468,11 +4536,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::SameAsFirstInput()); |
return summary; |
@@ -4484,11 +4553,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::SameAsFirstInput()); |
@@ -4524,7 +4594,8 @@ |
} |
-LocationSummary* MathUnaryInstr::MakeLocationSummary(bool opt) const { |
+LocationSummary* MathUnaryInstr::MakeLocationSummary(Isolate* isolate, |
+ bool opt) const { |
if ((kind() == MathUnaryInstr::kSin) || (kind() == MathUnaryInstr::kCos)) { |
// Calling convention on x64 uses XMM0 and XMM1 to pass the first two |
// double arguments and XMM0 to return the result. Unfortunately |
@@ -4532,8 +4603,8 @@ |
// assumes that XMM0 is free at all times. |
// TODO(vegorov): allow XMM0 to be used. |
const intptr_t kNumTemps = 1; |
- LocationSummary* summary = |
- new LocationSummary(InputCount(), kNumTemps, LocationSummary::kCall); |
+ LocationSummary* summary = new(isolate) LocationSummary( |
+ isolate, InputCount(), kNumTemps, LocationSummary::kCall); |
summary->set_in(0, Location::FpuRegisterLocation(XMM1)); |
// R13 is chosen because it is callee saved so we do not need to back it |
// up before calling into the runtime. |
@@ -4545,8 +4616,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()); |
if (kind() == MathUnaryInstr::kDoubleSquare) { |
summary->set_out(0, Location::SameAsFirstInput()); |
@@ -4579,7 +4650,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(), |
@@ -4611,11 +4683,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::SameAsFirstInput()); |
return summary; |
@@ -4629,12 +4702,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. |
@@ -4645,8 +4719,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. |
@@ -4718,11 +4792,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; |
@@ -4737,11 +4812,12 @@ |
} |
-LocationSummary* DoubleToIntegerInstr::MakeLocationSummary(bool opt) const { |
+LocationSummary* DoubleToIntegerInstr::MakeLocationSummary(Isolate* isolate, |
+ bool opt) const { |
const intptr_t kNumInputs = 1; |
const intptr_t kNumTemps = 1; |
- LocationSummary* result = |
- new LocationSummary(kNumInputs, kNumTemps, LocationSummary::kCall); |
+ LocationSummary* result = new(isolate) LocationSummary( |
+ isolate, kNumInputs, kNumTemps, LocationSummary::kCall); |
result->set_in(0, Location::RegisterLocation(RCX)); |
result->set_out(0, Location::RegisterLocation(RAX)); |
result->set_temp(0, Location::RegisterLocation(RBX)); |
@@ -4788,11 +4864,12 @@ |
} |
-LocationSummary* DoubleToSmiInstr::MakeLocationSummary(bool opt) const { |
+LocationSummary* DoubleToSmiInstr::MakeLocationSummary(Isolate* isolate, |
+ bool opt) const { |
const intptr_t kNumInputs = 1; |
const intptr_t kNumTemps = 1; |
- 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:: Location::RequiresRegister()); |
result->set_temp(0, Location::RequiresRegister()); |
@@ -4820,11 +4897,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); |
+ LocationSummary* result = new(isolate) LocationSummary( |
+ isolate, kNumInputs, kNumTemps, LocationSummary::kNoCall); |
result->set_in(0, Location::RequiresFpuRegister()); |
result->set_out(0, Location::RequiresFpuRegister()); |
return result; |
@@ -4850,11 +4928,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); |
result->set_in(0, Location::RequiresFpuRegister()); |
result->set_out(0, Location::SameAsFirstInput()); |
return result; |
@@ -4866,11 +4945,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); |
result->set_in(0, Location::RequiresFpuRegister()); |
result->set_out(0, Location::SameAsFirstInput()); |
return result; |
@@ -4882,7 +4962,8 @@ |
} |
-LocationSummary* InvokeMathCFunctionInstr::MakeLocationSummary(bool opt) const { |
+LocationSummary* InvokeMathCFunctionInstr::MakeLocationSummary(Isolate* isolate, |
+ bool opt) const { |
// Calling convention on x64 uses XMM0 and XMM1 to pass the first two |
// double arguments and XMM0 to return the result. Unfortunately |
// currently we can't specify these registers because ParallelMoveResolver |
@@ -4890,8 +4971,8 @@ |
// TODO(vegorov): allow XMM0 to be used. |
ASSERT((InputCount() == 1) || (InputCount() == 2)); |
const intptr_t kNumTemps = 1; |
- LocationSummary* result = |
- new LocationSummary(InputCount(), kNumTemps, LocationSummary::kCall); |
+ LocationSummary* result = new(isolate) LocationSummary( |
+ isolate, InputCount(), kNumTemps, LocationSummary::kCall); |
result->set_temp(0, Location::RegisterLocation(R13)); |
result->set_in(0, Location::FpuRegisterLocation(XMM2)); |
if (InputCount() == 2) { |
@@ -5063,12 +5144,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(), |
@@ -5112,12 +5194,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); |
+ LocationSummary* summary = new(isolate) LocationSummary( |
+ isolate, kNumInputs, kNumTemps, LocationSummary::kNoCall); |
// Both inputs must be writable because they will be untagged. |
summary->set_in(0, Location::RegisterLocation(RAX)); |
summary->set_in(1, Location::WritableRegister()); |
@@ -5128,8 +5211,8 @@ |
if (kind() == MergedMathInstr::kSinCos) { |
const intptr_t kNumInputs = 1; |
const intptr_t kNumTemps = 1; |
- LocationSummary* summary = |
- new LocationSummary(kNumInputs, kNumTemps, LocationSummary::kCall); |
+ LocationSummary* summary = new(isolate) LocationSummary( |
+ isolate, kNumInputs, kNumTemps, LocationSummary::kCall); |
// Because we always call into the runtime (LocationSummary::kCall) we |
// must specify each input, temp, and output register explicitly. |
summary->set_in(0, Location::FpuRegisterLocation(XMM1)); |
@@ -5287,7 +5370,7 @@ |
LocationSummary* PolymorphicInstanceCallInstr::MakeLocationSummary( |
- bool opt) const { |
+ Isolate* isolate, bool opt) const { |
return MakeCallSummary(); |
} |
@@ -5328,8 +5411,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(); |
@@ -5341,11 +5425,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()); |
@@ -5400,11 +5485,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; |
} |
@@ -5418,11 +5504,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; |
@@ -5467,7 +5554,8 @@ |
} |
-LocationSummary* UnboxIntegerInstr::MakeLocationSummary(bool opt) const { |
+LocationSummary* UnboxIntegerInstr::MakeLocationSummary(Isolate* isolate, |
+ bool opt) const { |
UNIMPLEMENTED(); |
return NULL; |
} |
@@ -5478,7 +5566,8 @@ |
} |
-LocationSummary* BoxIntegerInstr::MakeLocationSummary(bool opt) const { |
+LocationSummary* BoxIntegerInstr::MakeLocationSummary(Isolate* isolate, |
+ bool opt) const { |
UNIMPLEMENTED(); |
return NULL; |
} |
@@ -5489,7 +5578,8 @@ |
} |
-LocationSummary* BinaryMintOpInstr::MakeLocationSummary(bool opt) const { |
+LocationSummary* BinaryMintOpInstr::MakeLocationSummary(Isolate* isolate, |
+ bool opt) const { |
UNIMPLEMENTED(); |
return NULL; |
} |
@@ -5500,7 +5590,8 @@ |
} |
-LocationSummary* UnaryMintOpInstr::MakeLocationSummary(bool opt) const { |
+LocationSummary* UnaryMintOpInstr::MakeLocationSummary(Isolate* isolate, |
+ bool opt) const { |
UNIMPLEMENTED(); |
return NULL; |
} |
@@ -5511,7 +5602,8 @@ |
} |
-LocationSummary* ShiftMintOpInstr::MakeLocationSummary(bool opt) const { |
+LocationSummary* ShiftMintOpInstr::MakeLocationSummary(Isolate* isolate, |
+ bool opt) const { |
UNIMPLEMENTED(); |
return NULL; |
} |
@@ -5522,8 +5614,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); |
} |
@@ -5537,8 +5630,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); |
} |
@@ -5577,8 +5671,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); |
} |
@@ -5606,7 +5701,8 @@ |
} |
-LocationSummary* CurrentContextInstr::MakeLocationSummary(bool opt) const { |
+LocationSummary* CurrentContextInstr::MakeLocationSummary(Isolate* isolate, |
+ bool opt) const { |
return LocationSummary::Make(0, |
Location::RequiresRegister(), |
LocationSummary::kNoCall); |
@@ -5618,19 +5714,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(RAX)); |
locs->set_in(1, Location::RegisterLocation(RCX)); |
locs->set_out(0, Location::RegisterLocation(RAX)); |
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. |
@@ -5699,11 +5796,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); |
+ LocationSummary* summary = new(isolate) LocationSummary( |
+ isolate, kNumInputs, kNumTemps, LocationSummary::kCall); |
summary->set_in(0, Location::RegisterLocation(RAX)); // Function. |
summary->set_out(0, Location::RegisterLocation(RAX)); |
return summary; |
@@ -5749,7 +5847,8 @@ |
} |
-LocationSummary* BooleanNegateInstr::MakeLocationSummary(bool opt) const { |
+LocationSummary* BooleanNegateInstr::MakeLocationSummary(Isolate* isolate, |
+ bool opt) const { |
return LocationSummary::Make(1, |
Location::RequiresRegister(), |
LocationSummary::kNoCall); |
@@ -5769,7 +5868,8 @@ |
} |
-LocationSummary* AllocateObjectInstr::MakeLocationSummary(bool opt) const { |
+LocationSummary* AllocateObjectInstr::MakeLocationSummary(Isolate* isolate, |
+ bool opt) const { |
return MakeCallSummary(); |
} |