5#ifndef V8_COMPILER_LOOP_VARIABLE_OPTIMIZER_H_
6#define V8_COMPILER_LOOP_VARIABLE_OPTIMIZER_H_
16class CommonOperatorBuilder;
94 return left != other.left ||
kind != other.kind || right != other.right;
void AddLowerBound(Node *bound, ConstraintKind kind)
ZoneVector< Bound > lower_bounds_
void AddUpperBound(Node *bound, ConstraintKind kind)
ArithmeticType arithmeticType_
const ZoneVector< Bound > & lower_bounds()
ZoneVector< Bound > upper_bounds_
const ZoneVector< Bound > & upper_bounds()
InductionVariable(Node *phi, Node *effect_phi, Node *arith, Node *increment, Node *init_value, Zone *zone, ArithmeticType arithmeticType)
Node * init_value() const
Node * effect_phi() const
CommonOperatorBuilder * common_
void VisitIf(Node *node, bool polarity)
void VisitLoopExit(Node *node)
const InductionVariable * FindInductionVariable(Node *node)
InductionVariable * TryGetInductionVariable(Node *phi)
void ChangeToInductionVariablePhis()
void VisitStart(Node *node)
CommonOperatorBuilder * common()
NodeAuxData< bool > reduced_
void ChangeToPhisAndInsertGuards()
void AddCmpToLimits(VariableLimits *limits, Node *node, InductionVariable::ConstraintKind kind, bool polarity)
ZoneMap< int, InductionVariable * > induction_vars_
void VisitNode(Node *node)
void VisitBackedge(Node *from, Node *loop)
const int kAssumedLoopEntryIndex
void VisitOtherControl(Node *node)
void DetectInductionVariables(Node *loop)
NodeAuxData< VariableLimits > limits_
void VisitMerge(Node *node)
LoopVariableOptimizer(TFGraph *graph, CommonOperatorBuilder *common, Zone *zone)
void VisitLoop(Node *node)
void TakeConditionsFromFirstControl(Node *node)
const ZoneMap< int, InductionVariable * > & induction_variables()
Bound(Node *bound, ConstraintKind kind)
bool operator!=(const Constraint &other) const
InductionVariable::ConstraintKind kind