v8_4_5/src/hydrogen-instructions.cc
/*
 * Compute the limit that is imposed on an induction variable when entering
 * "block" (if any).
 * If the limit is the "proper" induction limit (the one that makes the loop
 * terminate when the induction variable reaches it) it is stored directly in
 * the induction variable data.
 * Otherwise the limit is written in "additional_limit" and the method
 * returns true.
 */
Compute the limit that is imposed on an induction variable when entering
"block" (if any).
If the limit is the "proper" induction limit (the one that makes the loop
terminate when the induction variable reaches it) it is stored directly in
the induction variable data.
Otherwise the limit is written in "additional_limit" and the method
returns true.
Compute the limit that is imposed on an induction variable when entering " block " ( if any ) . If the limit is the " proper " induction limit ( the one that makes the loop terminate when the induction variable reaches it ) it is stored directly in the induction variable data . Otherwise the limit is written in " additional_limit " and the method returns true .
bool InductionVariableData::ComputeInductionVariableLimit(
    HBasicBlock* block,
    InductionVariableLimitUpdate* additional_limit) {
  LimitFromPredecessorBlock limit;
  ComputeLimitFromPredecessorBlock(block, &limit);
  if (!limit.LimitIsValid()) return false;
  if (limit.variable->CheckIfBranchIsLoopGuard(limit.token,
                                               block,
                                               limit.other_target)) {
    limit.variable->limit_ = limit.limit;
    limit.variable->limit_included_ = limit.LimitIsIncluded();
    limit.variable->limit_validity_ = block;
    limit.variable->induction_exit_block_ = block->predecessors()->at(0);
    limit.variable->induction_exit_target_ = limit.other_target;
    return false;
  } else {
    additional_limit->updated_variable = limit.variable;
    additional_limit->limit = limit.limit;
    additional_limit->limit_is_upper = limit.LimitIsUpper();
    additional_limit->limit_is_included = limit.LimitIsIncluded();
    return true;
  }
}
bool InductionVariableData :: ComputeInductionVariableLimit ( HBasicBlock * block , InductionVariableLimitUpdate * additional_limit ) { LimitFromPredecessorBlock limit ; ComputeLimitFromPredecessorBlock ( block , & limit ) ; if ( ! limit . LimitIsValid ( ) ) return false ; if ( limit . variable -> CheckIfBranchIsLoopGuard ( limit . token , block , limit . other_target ) ) { limit . variable -> limit_ = limit . limit ; limit . variable -> limit_included_ = limit . LimitIsIncluded ( ) ; limit . variable -> limit_validity_ = block ; limit . variable -> induction_exit_block_ = block -> predecessors ( ) -> at ( 0 ) ; limit . variable -> induction_exit_target_ = limit . other_target ; return false ; } else { additional_limit -> updated_variable = limit . variable ; additional_limit -> limit = limit . limit ; additional_limit -> limit_is_upper = limit . LimitIsUpper ( ) ; additional_limit -> limit_is_included = limit . LimitIsIncluded ( ) ; return true ; } }
Compute the limit that is imposed on an induction variable when entering
 "block" (if any).
Compute the limit that is imposed on an induction variable when entering " block " ( if any ) .