Index: runtime/vm/intermediate_language_ia32.cc |
diff --git a/runtime/vm/intermediate_language_ia32.cc b/runtime/vm/intermediate_language_ia32.cc |
index d07a64ff35524927ab79ee99d173c7785854bb18..6abf8c8ca736bfb427c53d2ea239b4f5cf7705ef 100644 |
--- a/runtime/vm/intermediate_language_ia32.cc |
+++ b/runtime/vm/intermediate_language_ia32.cc |
@@ -46,7 +46,8 @@ void BindInstr::EmitNativeCode(FlowGraphCompiler* compiler) { |
LocationSummary* ReturnInstr::MakeLocationSummary() const { |
const intptr_t kNumInputs = 1; |
const intptr_t kNumTemps = 1; |
- LocationSummary* locs = new LocationSummary(kNumInputs, kNumTemps); |
+ LocationSummary* locs = |
+ new LocationSummary(kNumInputs, kNumTemps, LocationSummary::kNoCall); |
locs->set_in(0, Location::RegisterLocation(EAX)); |
locs->set_temp(0, Location::RequiresRegister()); |
return locs; |
@@ -110,9 +111,8 @@ void ReturnInstr::EmitNativeCode(FlowGraphCompiler* compiler) { |
LocationSummary* ClosureCallComp::MakeLocationSummary() const { |
const intptr_t kNumInputs = 0; |
const intptr_t kNumTemps = 1; |
- LocationSummary* result = new LocationSummary(kNumInputs, |
- kNumTemps, |
- LocationSummary::kCall); |
+ LocationSummary* result = |
+ new LocationSummary(kNumInputs, kNumTemps, LocationSummary::kCall); |
result->set_out(Location::RegisterLocation(EAX)); |
result->set_temp(0, Location::RegisterLocation(EDX)); // Arg. descriptor. |
return result; |
@@ -120,7 +120,9 @@ LocationSummary* ClosureCallComp::MakeLocationSummary() const { |
LocationSummary* LoadLocalComp::MakeLocationSummary() const { |
- return LocationSummary::Make(0, Location::RequiresRegister()); |
+ return LocationSummary::Make(0, |
+ Location::RequiresRegister(), |
+ LocationSummary::kNoCall); |
} |
@@ -131,7 +133,9 @@ void LoadLocalComp::EmitNativeCode(FlowGraphCompiler* compiler) { |
LocationSummary* StoreLocalComp::MakeLocationSummary() const { |
- return LocationSummary::Make(1, Location::SameAsFirstInput()); |
+ return LocationSummary::Make(1, |
+ Location::SameAsFirstInput(), |
+ LocationSummary::kNoCall); |
} |
@@ -144,7 +148,9 @@ void StoreLocalComp::EmitNativeCode(FlowGraphCompiler* compiler) { |
LocationSummary* ConstantVal::MakeLocationSummary() const { |
- return LocationSummary::Make(0, Location::RequiresRegister()); |
+ return LocationSummary::Make(0, |
+ Location::RequiresRegister(), |
+ LocationSummary::kNoCall); |
} |
@@ -157,9 +163,8 @@ void ConstantVal::EmitNativeCode(FlowGraphCompiler* compiler) { |
LocationSummary* AssertAssignableComp::MakeLocationSummary() const { |
const intptr_t kNumInputs = 3; |
const intptr_t kNumTemps = 0; |
- LocationSummary* summary = new LocationSummary(kNumInputs, |
- kNumTemps, |
- LocationSummary::kCall); |
+ LocationSummary* summary = |
+ new LocationSummary(kNumInputs, kNumTemps, LocationSummary::kCall); |
summary->set_in(0, Location::RegisterLocation(EAX)); // Value. |
summary->set_in(1, Location::RegisterLocation(ECX)); // Instantiator. |
summary->set_in(2, Location::RegisterLocation(EDX)); // Type arguments. |
@@ -171,9 +176,8 @@ LocationSummary* AssertAssignableComp::MakeLocationSummary() const { |
LocationSummary* AssertBooleanComp::MakeLocationSummary() const { |
const intptr_t kNumInputs = 1; |
const intptr_t kNumTemps = 0; |
- LocationSummary* locs = new LocationSummary(kNumInputs, |
- kNumTemps, |
- LocationSummary::kCall); |
+ LocationSummary* locs = |
+ new LocationSummary(kNumInputs, kNumTemps, LocationSummary::kCall); |
locs->set_in(0, Location::RegisterLocation(EAX)); |
locs->set_out(Location::RegisterLocation(EAX)); |
return locs; |
@@ -225,9 +229,8 @@ LocationSummary* EqualityCompareComp::MakeLocationSummary() const { |
if (receiver_class_id() != kObject) { |
ASSERT((receiver_class_id() == kSmi) || (receiver_class_id() == kDouble)); |
const intptr_t kNumTemps = 1; |
- LocationSummary* locs = new LocationSummary(kNumInputs, |
- kNumTemps, |
- LocationSummary::kNoCall); |
+ LocationSummary* locs = |
+ new LocationSummary(kNumInputs, kNumTemps, LocationSummary::kNoCall); |
locs->set_in(0, Location::RequiresRegister()); |
locs->set_in(1, Location::RequiresRegister()); |
locs->set_temp(0, Location::RequiresRegister()); |
@@ -236,9 +239,8 @@ LocationSummary* EqualityCompareComp::MakeLocationSummary() const { |
} |
if (HasICData() && (ic_data()->NumberOfChecks() > 0)) { |
const intptr_t kNumTemps = 1; |
- LocationSummary* locs = new LocationSummary(kNumInputs, |
- kNumTemps, |
- LocationSummary::kCall); |
+ LocationSummary* locs = |
+ new LocationSummary(kNumInputs, kNumTemps, LocationSummary::kCall); |
locs->set_in(0, Location::RegisterLocation(ECX)); |
locs->set_in(1, Location::RegisterLocation(EDX)); |
locs->set_temp(0, Location::RegisterLocation(EBX)); |
@@ -246,9 +248,8 @@ LocationSummary* EqualityCompareComp::MakeLocationSummary() const { |
return locs; |
} |
const intptr_t kNumTemps = 0; |
- LocationSummary* locs = new LocationSummary(kNumInputs, |
- kNumTemps, |
- LocationSummary::kCall); |
+ LocationSummary* locs = |
+ new LocationSummary(kNumInputs, kNumTemps, LocationSummary::kCall); |
locs->set_in(0, Location::RegisterLocation(ECX)); |
locs->set_in(1, Location::RegisterLocation(EDX)); |
locs->set_out(Location::RegisterLocation(EAX)); |
@@ -504,9 +505,8 @@ LocationSummary* RelationalOpComp::MakeLocationSummary() const { |
if ((operands_class_id() == kSmi) || (operands_class_id() == kDouble)) { |
const intptr_t kNumInputs = 2; |
const intptr_t kNumTemps = 1; |
- LocationSummary* summary = new LocationSummary(kNumInputs, |
- kNumTemps, |
- LocationSummary::kNoCall); |
+ LocationSummary* summary = |
+ new LocationSummary(kNumInputs, kNumTemps, LocationSummary::kNoCall); |
summary->set_in(0, Location::RequiresRegister()); |
summary->set_in(1, Location::RequiresRegister()); |
summary->set_out(Location::RequiresRegister()); |
@@ -661,9 +661,8 @@ void RelationalOpComp::EmitNativeCode(FlowGraphCompiler* compiler) { |
LocationSummary* NativeCallComp::MakeLocationSummary() const { |
const intptr_t kNumInputs = 0; |
const intptr_t kNumTemps = 3; |
- LocationSummary* locs = new LocationSummary(kNumInputs, |
- kNumTemps, |
- LocationSummary::kCall); |
+ LocationSummary* locs = |
+ new LocationSummary(kNumInputs, kNumTemps, LocationSummary::kCall); |
locs->set_temp(0, Location::RegisterLocation(EAX)); |
locs->set_temp(1, Location::RegisterLocation(ECX)); |
locs->set_temp(2, Location::RegisterLocation(EDX)); |
@@ -707,7 +706,8 @@ LocationSummary* LoadIndexedComp::MakeLocationSummary() const { |
(receiver_type() == kArray) || |
(receiver_type() == kImmutableArray)) { |
const intptr_t kNumTemps = 1; |
- LocationSummary* locs = new LocationSummary(kNumInputs, kNumTemps); |
+ LocationSummary* locs = |
+ new LocationSummary(kNumInputs, kNumTemps, LocationSummary::kNoCall); |
locs->set_in(0, Location::RequiresRegister()); |
locs->set_in(1, Location::RequiresRegister()); |
locs->set_temp(0, Location::RequiresRegister()); |
@@ -819,7 +819,8 @@ LocationSummary* StoreIndexedComp::MakeLocationSummary() const { |
if ((receiver_type() == kGrowableObjectArray) || |
(receiver_type() == kArray)) { |
const intptr_t kNumTemps = 1; |
- LocationSummary* locs = new LocationSummary(kNumInputs, kNumTemps); |
+ LocationSummary* locs = |
+ new LocationSummary(kNumInputs, kNumTemps, LocationSummary::kNoCall); |
locs->set_in(0, Location::RequiresRegister()); |
locs->set_in(1, Location::RequiresRegister()); |
locs->set_in(2, Location::RequiresRegister()); |
@@ -1007,7 +1008,9 @@ void InstanceSetterComp::EmitNativeCode(FlowGraphCompiler* compiler) { |
LocationSummary* StaticSetterComp::MakeLocationSummary() const { |
const intptr_t kNumInputs = 1; |
- return LocationSummary::Make(kNumInputs, Location::RequiresRegister()); |
+ return LocationSummary::Make(kNumInputs, |
+ Location::RequiresRegister(), |
+ LocationSummary::kNoCall); |
} |
@@ -1037,7 +1040,9 @@ LocationSummary* LoadInstanceFieldComp::MakeLocationSummary() const { |
// reused for the result (but is not required to) because the input |
// is not used after the result is defined. We should consider adding |
// this information to the input policy. |
- return LocationSummary::Make(1, Location::RequiresRegister()); |
+ return LocationSummary::Make(1, |
+ Location::RequiresRegister(), |
+ LocationSummary::kNoCall); |
} |
@@ -1063,7 +1068,9 @@ void LoadInstanceFieldComp::EmitNativeCode(FlowGraphCompiler* compiler) { |
LocationSummary* LoadStaticFieldComp::MakeLocationSummary() const { |
- return LocationSummary::Make(0, Location::RequiresRegister()); |
+ return LocationSummary::Make(0, |
+ Location::RequiresRegister(), |
+ LocationSummary::kNoCall); |
} |
@@ -1077,9 +1084,8 @@ void LoadStaticFieldComp::EmitNativeCode(FlowGraphCompiler* compiler) { |
LocationSummary* InstanceOfComp::MakeLocationSummary() const { |
const intptr_t kNumInputs = 3; |
const intptr_t kNumTemps = 0; |
- LocationSummary* summary = new LocationSummary(kNumInputs, |
- kNumTemps, |
- LocationSummary::kCall); |
+ LocationSummary* summary = |
+ new LocationSummary(kNumInputs, kNumTemps, LocationSummary::kCall); |
summary->set_in(0, Location::RegisterLocation(EAX)); |
summary->set_in(1, Location::RegisterLocation(ECX)); |
summary->set_in(2, Location::RegisterLocation(EDX)); |
@@ -1109,9 +1115,8 @@ LocationSummary* CreateArrayComp::MakeLocationSummary() const { |
// ArgumentCount getter and an ArgumentAt getter. |
const intptr_t kNumInputs = 1; |
const intptr_t kNumTemps = 1; |
- LocationSummary* locs = new LocationSummary(kNumInputs, |
- kNumTemps, |
- LocationSummary::kCall); |
+ LocationSummary* locs = |
+ new LocationSummary(kNumInputs, kNumTemps, LocationSummary::kCall); |
locs->set_in(0, Location::RegisterLocation(ECX)); |
locs->set_temp(0, Location::RegisterLocation(EDX)); |
locs->set_out(Location::RegisterLocation(EAX)); |
@@ -1146,9 +1151,8 @@ LocationSummary* |
AllocateObjectWithBoundsCheckComp::MakeLocationSummary() const { |
const intptr_t kNumInputs = 2; |
const intptr_t kNumTemps = 0; |
- LocationSummary* locs = new LocationSummary(kNumInputs, |
- kNumTemps, |
- LocationSummary::kCall); |
+ LocationSummary* locs = |
+ new LocationSummary(kNumInputs, kNumTemps, LocationSummary::kCall); |
locs->set_in(0, Location::RegisterLocation(EAX)); |
locs->set_in(1, Location::RegisterLocation(ECX)); |
locs->set_out(Location::RegisterLocation(EAX)); |
@@ -1180,7 +1184,9 @@ void AllocateObjectWithBoundsCheckComp::EmitNativeCode( |
LocationSummary* LoadVMFieldComp::MakeLocationSummary() const { |
- return LocationSummary::Make(1, Location::RequiresRegister()); |
+ return LocationSummary::Make(1, |
+ Location::RequiresRegister(), |
+ LocationSummary::kNoCall); |
} |
@@ -1208,9 +1214,8 @@ void LoadVMFieldComp::EmitNativeCode(FlowGraphCompiler* compiler) { |
LocationSummary* InstantiateTypeArgumentsComp::MakeLocationSummary() const { |
const intptr_t kNumInputs = 1; |
const intptr_t kNumTemps = 1; |
- LocationSummary* locs = new LocationSummary(kNumInputs, |
- kNumTemps, |
- LocationSummary::kCall); |
+ LocationSummary* locs = |
+ new LocationSummary(kNumInputs, kNumTemps, LocationSummary::kCall); |
locs->set_in(0, Location::RegisterLocation(EAX)); |
locs->set_temp(0, Location::RegisterLocation(ECX)); |
locs->set_out(Location::RegisterLocation(EAX)); |
@@ -1272,7 +1277,8 @@ LocationSummary* |
ExtractConstructorTypeArgumentsComp::MakeLocationSummary() const { |
const intptr_t kNumInputs = 1; |
const intptr_t kNumTemps = 1; |
- LocationSummary* locs = new LocationSummary(kNumInputs, kNumTemps); |
+ LocationSummary* locs = |
+ new LocationSummary(kNumInputs, kNumTemps, LocationSummary::kNoCall); |
locs->set_in(0, Location::RequiresRegister()); |
locs->set_out(Location::SameAsFirstInput()); |
locs->set_temp(0, Location::RequiresRegister()); |
@@ -1329,7 +1335,8 @@ LocationSummary* |
ExtractConstructorInstantiatorComp::MakeLocationSummary() const { |
const intptr_t kNumInputs = 1; |
const intptr_t kNumTemps = 1; |
- LocationSummary* locs = new LocationSummary(kNumInputs, kNumTemps); |
+ LocationSummary* locs = |
+ new LocationSummary(kNumInputs, kNumTemps, LocationSummary::kNoCall); |
locs->set_in(0, Location::RequiresRegister()); |
locs->set_out(Location::SameAsFirstInput()); |
locs->set_temp(0, Location::RequiresRegister()); |
@@ -1395,9 +1402,8 @@ void ExtractConstructorInstantiatorComp::EmitNativeCode( |
LocationSummary* AllocateContextComp::MakeLocationSummary() const { |
const intptr_t kNumInputs = 0; |
const intptr_t kNumTemps = 1; |
- LocationSummary* locs = new LocationSummary(kNumInputs, |
- kNumTemps, |
- LocationSummary::kCall); |
+ LocationSummary* locs = |
+ new LocationSummary(kNumInputs, kNumTemps, LocationSummary::kCall); |
locs->set_temp(0, Location::RegisterLocation(EDX)); |
locs->set_out(Location::RegisterLocation(EAX)); |
return locs; |
@@ -1421,9 +1427,8 @@ void AllocateContextComp::EmitNativeCode(FlowGraphCompiler* compiler) { |
LocationSummary* CloneContextComp::MakeLocationSummary() const { |
const intptr_t kNumInputs = 1; |
const intptr_t kNumTemps = 0; |
- LocationSummary* locs = new LocationSummary(kNumInputs, |
- kNumTemps, |
- LocationSummary::kCall); |
+ LocationSummary* locs = |
+ new LocationSummary(kNumInputs, kNumTemps, LocationSummary::kCall); |
locs->set_in(0, Location::RegisterLocation(EAX)); |
locs->set_out(Location::RegisterLocation(EAX)); |
return locs; |
@@ -1446,7 +1451,9 @@ void CloneContextComp::EmitNativeCode(FlowGraphCompiler* compiler) { |
LocationSummary* CatchEntryComp::MakeLocationSummary() const { |
- return LocationSummary::Make(0, Location::NoLocation()); |
+ return LocationSummary::Make(0, |
+ Location::NoLocation(), |
+ LocationSummary::kNoCall); |
} |
@@ -1474,9 +1481,8 @@ LocationSummary* CheckStackOverflowComp::MakeLocationSummary() const { |
const intptr_t kNumInputs = 0; |
const intptr_t kNumTemps = 0; |
// TODO(vegorov): spilling is required only on an infrequently executed path. |
- LocationSummary* summary = new LocationSummary(kNumInputs, |
- kNumTemps, |
- LocationSummary::kCall); |
+ LocationSummary* summary = |
+ new LocationSummary(kNumInputs, kNumTemps, LocationSummary::kCall); |
return summary; |
} |
@@ -1517,7 +1523,8 @@ LocationSummary* BinaryOpComp::MakeLocationSummary() const { |
if (op_kind() == Token::kTRUNCDIV) { |
const intptr_t kNumTemps = 3; |
- LocationSummary* summary = new LocationSummary(kNumInputs, kNumTemps); |
+ LocationSummary* summary = |
+ new LocationSummary(kNumInputs, kNumTemps, LocationSummary::kNoCall); |
summary->set_in(0, Location::RegisterLocation(EAX)); |
summary->set_in(1, Location::RegisterLocation(ECX)); |
summary->set_out(Location::SameAsFirstInput()); |
@@ -1528,7 +1535,8 @@ LocationSummary* BinaryOpComp::MakeLocationSummary() const { |
return summary; |
} else if (op_kind() == Token::kSHR) { |
const intptr_t kNumTemps = 1; |
- LocationSummary* summary = new LocationSummary(kNumInputs, kNumTemps); |
+ LocationSummary* summary = |
+ new LocationSummary(kNumInputs, kNumTemps, LocationSummary::kNoCall); |
summary->set_in(0, Location::RequiresRegister()); |
summary->set_in(1, Location::RegisterLocation(ECX)); |
summary->set_out(Location::SameAsFirstInput()); |
@@ -1547,7 +1555,8 @@ LocationSummary* BinaryOpComp::MakeLocationSummary() const { |
return summary; |
} else { |
const intptr_t kNumTemps = 1; |
- LocationSummary* summary = new LocationSummary(kNumInputs, kNumTemps); |
+ LocationSummary* summary = |
+ new LocationSummary(kNumInputs, kNumTemps, LocationSummary::kNoCall); |
summary->set_in(0, Location::RequiresRegister()); |
summary->set_in(1, Location::RequiresRegister()); |
summary->set_out(Location::SameAsFirstInput()); |
@@ -1867,7 +1876,8 @@ void BinaryOpComp::EmitNativeCode(FlowGraphCompiler* compiler) { |
LocationSummary* UnarySmiOpComp::MakeLocationSummary() const { |
const intptr_t kNumInputs = 1; |
const intptr_t kNumTemps = 0; |
- LocationSummary* summary = new LocationSummary(kNumInputs, kNumTemps); |
+ LocationSummary* summary = |
+ new LocationSummary(kNumInputs, kNumTemps, LocationSummary::kNoCall); |
summary->set_in(0, Location::RequiresRegister()); |
summary->set_out(Location::SameAsFirstInput()); |
return summary; |
@@ -1916,9 +1926,8 @@ void UnarySmiOpComp::EmitNativeCode(FlowGraphCompiler* compiler) { |
LocationSummary* NumberNegateComp::MakeLocationSummary() const { |
const intptr_t kNumInputs = 1; |
const intptr_t kNumTemps = 1; // Needed for doubles. |
- LocationSummary* summary = new LocationSummary(kNumInputs, |
- kNumTemps, |
- LocationSummary::kCall); |
+ LocationSummary* summary = |
+ new LocationSummary(kNumInputs, kNumTemps, LocationSummary::kCall); |
summary->set_in(0, Location::RegisterLocation(EAX)); |
summary->set_temp(0, Location::RegisterLocation(ECX)); |
summary->set_out(Location::RegisterLocation(EAX)); |
@@ -1978,7 +1987,8 @@ LocationSummary* ToDoubleComp::MakeLocationSummary() const { |
const intptr_t kNumInputs = 1; |
if (from() == kDouble) { |
const intptr_t kNumTemps = 1; |
- LocationSummary* locs = new LocationSummary(kNumInputs, kNumTemps); |
+ LocationSummary* locs = |
+ new LocationSummary(kNumInputs, kNumTemps, LocationSummary::kNoCall); |
locs->set_in(0, Location::RequiresRegister()); |
locs->set_temp(0, Location::RequiresRegister()); |
locs->set_out(Location::SameAsFirstInput()); |
@@ -2102,9 +2112,8 @@ LocationSummary* BranchInstr::MakeLocationSummary() const { |
if ((kind() == Token::kEQ_STRICT) || (kind() == Token::kNE_STRICT)) { |
const int kNumInputs = 2; |
const int kNumTemps = 0; |
- LocationSummary* locs = new LocationSummary(kNumInputs, |
- kNumTemps, |
- LocationSummary::kNoCall); |
+ LocationSummary* locs = |
+ new LocationSummary(kNumInputs, kNumTemps, LocationSummary::kNoCall); |
locs->set_in(0, Location::RequiresRegister()); |
locs->set_in(1, Location::RequiresRegister()); |
return locs; |
@@ -2114,9 +2123,8 @@ LocationSummary* BranchInstr::MakeLocationSummary() const { |
ICDataWithBothClassIds(*ic_data(), kDouble)) { |
const intptr_t kNumInputs = 2; |
const intptr_t kNumTemps = 1; |
- LocationSummary* summary = new LocationSummary(kNumInputs, |
- kNumTemps, |
- LocationSummary::kNoCall); |
+ LocationSummary* summary = |
+ new LocationSummary(kNumInputs, kNumTemps, LocationSummary::kNoCall); |
summary->set_in(0, Location::RequiresRegister()); |
summary->set_in(1, Location::RequiresRegister()); |
summary->set_temp(0, Location::RequiresRegister()); |
@@ -2125,9 +2133,8 @@ LocationSummary* BranchInstr::MakeLocationSummary() const { |
if ((kind() == Token::kEQ) || (kind() == Token::kNE)) { |
const intptr_t kNumInputs = 2; |
const intptr_t kNumTemps = 1; |
- LocationSummary* locs = new LocationSummary(kNumInputs, |
- kNumTemps, |
- LocationSummary::kCall); |
+ LocationSummary* locs = |
+ new LocationSummary(kNumInputs, kNumTemps, LocationSummary::kCall); |
locs->set_in(0, Location::RegisterLocation(EAX)); |
locs->set_in(1, Location::RegisterLocation(ECX)); |
locs->set_temp(0, Location::RegisterLocation(EDX)); |