Index: src/compiler/common-operator.cc |
diff --git a/src/compiler/common-operator.cc b/src/compiler/common-operator.cc |
index 011bd2e683a9edcb777a6c8c1a88529f88984d9d..4246e5b60bcd6344bc2e2b92a5c9e315c52d7813 100644 |
--- a/src/compiler/common-operator.cc |
+++ b/src/compiler/common-operator.cc |
@@ -73,7 +73,8 @@ std::ostream& operator<<(std::ostream& os, IfExceptionHint hint) { |
bool operator==(SelectParameters const& lhs, SelectParameters const& rhs) { |
- return lhs.type() == rhs.type() && lhs.hint() == rhs.hint(); |
+ return lhs.representation() == rhs.representation() && |
+ lhs.hint() == rhs.hint(); |
} |
@@ -83,12 +84,12 @@ bool operator!=(SelectParameters const& lhs, SelectParameters const& rhs) { |
size_t hash_value(SelectParameters const& p) { |
- return base::hash_combine(p.type(), p.hint()); |
+ return base::hash_combine(p.representation(), p.hint()); |
} |
std::ostream& operator<<(std::ostream& os, SelectParameters const& p) { |
- return os << p.type() << "|" << p.hint(); |
+ return os << p.representation() << "|" << p.hint(); |
} |
@@ -104,6 +105,12 @@ size_t ProjectionIndexOf(const Operator* const op) { |
} |
+MachineRepresentation PhiRepresentationOf(const Operator* const op) { |
+ DCHECK_EQ(IrOpcode::kPhi, op->opcode()); |
+ return OpParameter<MachineRepresentation>(op); |
+} |
+ |
+ |
int ParameterIndexOf(const Operator* const op) { |
DCHECK_EQ(IrOpcode::kParameter, op->opcode()); |
return OpParameter<ParameterInfo>(op).index(); |
@@ -203,15 +210,15 @@ std::ostream& operator<<(std::ostream& os, ParameterInfo const& i) { |
#define CACHED_PHI_LIST(V) \ |
- V(kMachAnyTagged, 1) \ |
- V(kMachAnyTagged, 2) \ |
- V(kMachAnyTagged, 3) \ |
- V(kMachAnyTagged, 4) \ |
- V(kMachAnyTagged, 5) \ |
- V(kMachAnyTagged, 6) \ |
- V(kMachBool, 2) \ |
- V(kMachFloat64, 2) \ |
- V(kMachInt32, 2) |
+ V(kTagged, 1) \ |
+ V(kTagged, 2) \ |
+ V(kTagged, 3) \ |
+ V(kTagged, 4) \ |
+ V(kTagged, 5) \ |
+ V(kTagged, 6) \ |
+ V(kBit, 2) \ |
+ V(kFloat64, 2) \ |
+ V(kWord32, 2) |
#define CACHED_PROJECTION_LIST(V) \ |
@@ -353,17 +360,18 @@ struct CommonOperatorGlobalCache final { |
CACHED_MERGE_LIST(CACHED_MERGE) |
#undef CACHED_MERGE |
- template <MachineType kType, int kInputCount> |
- struct PhiOperator final : public Operator1<MachineType> { |
+ template <MachineRepresentation kRep, int kInputCount> |
+ struct PhiOperator final : public Operator1<MachineRepresentation> { |
PhiOperator() |
- : Operator1<MachineType>( //-- |
+ : Operator1<MachineRepresentation>( //-- |
IrOpcode::kPhi, Operator::kPure, // opcode |
"Phi", // name |
kInputCount, 0, 1, 1, 0, 0, // counts |
- kType) {} // parameter |
+ kRep) {} // parameter |
}; |
-#define CACHED_PHI(type, input_count) \ |
- PhiOperator<type, input_count> kPhi##type##input_count##Operator; |
+#define CACHED_PHI(rep, input_count) \ |
+ PhiOperator<MachineRepresentation::rep, input_count> \ |
+ kPhi##rep##input_count##Operator; |
CACHED_PHI_LIST(CACHED_PHI) |
#undef CACHED_PHI |
@@ -661,31 +669,32 @@ const Operator* CommonOperatorBuilder::HeapConstant( |
} |
-const Operator* CommonOperatorBuilder::Select(MachineType type, |
+const Operator* CommonOperatorBuilder::Select(MachineRepresentation rep, |
BranchHint hint) { |
return new (zone()) Operator1<SelectParameters>( // -- |
IrOpcode::kSelect, Operator::kPure, // opcode |
"Select", // name |
3, 0, 0, 1, 0, 0, // counts |
- SelectParameters(type, hint)); // parameter |
+ SelectParameters(rep, hint)); // parameter |
} |
-const Operator* CommonOperatorBuilder::Phi(MachineType type, |
+const Operator* CommonOperatorBuilder::Phi(MachineRepresentation rep, |
int value_input_count) { |
DCHECK(value_input_count > 0); // Disallow empty phis. |
-#define CACHED_PHI(kType, kValueInputCount) \ |
- if (kType == type && kValueInputCount == value_input_count) { \ |
- return &cache_.kPhi##kType##kValueInputCount##Operator; \ |
+#define CACHED_PHI(kRep, kValueInputCount) \ |
+ if (MachineRepresentation::kRep == rep && \ |
+ kValueInputCount == value_input_count) { \ |
+ return &cache_.kPhi##kRep##kValueInputCount##Operator; \ |
} |
CACHED_PHI_LIST(CACHED_PHI) |
#undef CACHED_PHI |
// Uncached. |
- return new (zone()) Operator1<MachineType>( // -- |
- IrOpcode::kPhi, Operator::kPure, // opcode |
- "Phi", // name |
- value_input_count, 0, 1, 1, 0, 0, // counts |
- type); // parameter |
+ return new (zone()) Operator1<MachineRepresentation>( // -- |
+ IrOpcode::kPhi, Operator::kPure, // opcode |
+ "Phi", // name |
+ value_input_count, 0, 1, 1, 0, 0, // counts |
+ rep); // parameter |
} |
@@ -832,7 +841,7 @@ const Operator* CommonOperatorBuilder::Projection(size_t index) { |
const Operator* CommonOperatorBuilder::ResizeMergeOrPhi(const Operator* op, |
int size) { |
if (op->opcode() == IrOpcode::kPhi) { |
- return Phi(OpParameter<MachineType>(op), size); |
+ return Phi(PhiRepresentationOf(op), size); |
} else if (op->opcode() == IrOpcode::kEffectPhi) { |
return EffectPhi(size); |
} else if (op->opcode() == IrOpcode::kMerge) { |