Index: src/compiler/operator-properties-inl.h |
diff --git a/src/compiler/operator-properties-inl.h b/src/compiler/operator-properties-inl.h |
index 0488b1b7c6598e028c72e4d6c2ab6bbf70ad674c..409e4f00dfe5a1c3114a2b0b3e959cd5a8b0842d 100644 |
--- a/src/compiler/operator-properties-inl.h |
+++ b/src/compiler/operator-properties-inl.h |
@@ -16,7 +16,7 @@ namespace internal { |
namespace compiler { |
inline bool OperatorProperties::HasValueInput(const Operator* op) { |
- return OperatorProperties::GetValueInputCount(op) > 0; |
+ return op->ValueInputCount() > 0; |
} |
inline bool OperatorProperties::HasContextInput(const Operator* op) { |
@@ -25,11 +25,11 @@ inline bool OperatorProperties::HasContextInput(const Operator* op) { |
} |
inline bool OperatorProperties::HasEffectInput(const Operator* op) { |
- return OperatorProperties::GetEffectInputCount(op) > 0; |
+ return op->EffectInputCount() > 0; |
} |
inline bool OperatorProperties::HasControlInput(const Operator* op) { |
- return OperatorProperties::GetControlInputCount(op) > 0; |
+ return op->ControlInputCount() > 0; |
} |
inline bool OperatorProperties::HasFrameStateInput(const Operator* op) { |
@@ -94,7 +94,7 @@ inline bool OperatorProperties::HasFrameStateInput(const Operator* op) { |
} |
inline int OperatorProperties::GetValueInputCount(const Operator* op) { |
- return op->InputCount(); |
+ return op->ValueInputCount(); |
} |
inline int OperatorProperties::GetContextInputCount(const Operator* op) { |
@@ -106,44 +106,11 @@ inline int OperatorProperties::GetFrameStateInputCount(const Operator* op) { |
} |
inline int OperatorProperties::GetEffectInputCount(const Operator* op) { |
- if (op->opcode() == IrOpcode::kEffectPhi || |
- op->opcode() == IrOpcode::kFinish || |
- op->opcode() == IrOpcode::kTerminate) { |
- return OpParameter<int>(op); |
- } |
- if (op->HasProperty(Operator::kNoRead) && op->HasProperty(Operator::kNoWrite)) |
- return 0; // no effects. |
- return 1; |
+ return op->EffectInputCount(); |
} |
inline int OperatorProperties::GetControlInputCount(const Operator* op) { |
- // TODO(titzer): fix this mess; just make them a count on the operator. |
- switch (op->opcode()) { |
- case IrOpcode::kPhi: |
- case IrOpcode::kEffectPhi: |
- case IrOpcode::kLoad: |
- case IrOpcode::kLoadField: |
- case IrOpcode::kInt32Div: |
- case IrOpcode::kInt32Mod: |
- case IrOpcode::kUint32Div: |
- case IrOpcode::kUint32Mod: |
- return 1; |
-#define OPCODE_CASE(x) case IrOpcode::k##x: |
- CONTROL_OP_LIST(OPCODE_CASE) |
-#undef OPCODE_CASE |
- if (op->opcode() == IrOpcode::kBranch) return 1; |
- if (op->opcode() == IrOpcode::kTerminate) return 1; |
- // Control operators are Operator1<int>. |
- return OpParameter<int>(op); |
- default: |
- // Operators that have write effects must have a control |
- // dependency. Effect dependencies only ensure the correct order of |
- // write/read operations without consideration of control flow. Without an |
- // explicit control dependency writes can be float in the schedule too |
- // early along a path that shouldn't generate a side-effect. |
- return op->HasProperty(Operator::kNoWrite) ? 0 : 1; |
- } |
- return 0; |
+ return op->ControlInputCount(); |
} |
inline int OperatorProperties::GetTotalInputCount(const Operator* op) { |
@@ -156,33 +123,28 @@ inline int OperatorProperties::GetTotalInputCount(const Operator* op) { |
// Output properties. |
inline bool OperatorProperties::HasValueOutput(const Operator* op) { |
- return GetValueOutputCount(op) > 0; |
+ return op->ValueOutputCount() > 0; |
} |
inline bool OperatorProperties::HasEffectOutput(const Operator* op) { |
- return op->opcode() == IrOpcode::kStart || |
- op->opcode() == IrOpcode::kValueEffect || |
- (op->opcode() != IrOpcode::kFinish && |
- op->opcode() != IrOpcode::kTerminate && GetEffectInputCount(op) > 0); |
+ return op->EffectOutputCount() > 0; |
} |
inline bool OperatorProperties::HasControlOutput(const Operator* op) { |
- IrOpcode::Value opcode = static_cast<IrOpcode::Value>(op->opcode()); |
- return (opcode != IrOpcode::kEnd && IrOpcode::IsControlOpcode(opcode)); |
+ return op->ControlOutputCount() > 0; |
} |
inline int OperatorProperties::GetValueOutputCount(const Operator* op) { |
- return op->OutputCount(); |
+ return op->ValueOutputCount(); |
} |
inline int OperatorProperties::GetEffectOutputCount(const Operator* op) { |
- return HasEffectOutput(op) ? 1 : 0; |
+ return op->EffectOutputCount(); |
} |
-inline int OperatorProperties::GetControlOutputCount(const Operator* node) { |
- return node->opcode() == IrOpcode::kBranch ? 2 : HasControlOutput(node) ? 1 |
- : 0; |
+inline int OperatorProperties::GetControlOutputCount(const Operator* op) { |
+ return op->ControlOutputCount(); |
} |