Lines Matching refs:loop

37  * path to a loop, and raise a uncommon trap if the check of the condition fails.
38 * The condition checks are promoted from inside the loop body, and thus
39 * the checks inside the loop could be eliminated. Currently, loop predication
40 * optimization has been applied to remove array range check and loop invariant
102 void PhaseIdealLoop::register_control(Node* n, IdealLoopTree *loop, Node* pred) {
105 loop->_body.push(n);
106 set_loop(n, loop);
130 // rgn loop | iff
138 // rgn loop
161 IdealLoopTree* loop = get_loop(call);
164 register_control(rgn, loop, uncommon_proj);
340 // Clone loop predicates to cloned loops (peeled, unswitched, split_if).
363 if (predicate_proj != NULL) { // right pattern that can be used by loop predication
376 // Clone loop limit check last to insert it before loop.
378 // for this counted loop (only one limit check is needed).
403 if (predicate != NULL) { // right pattern that can be used by loop predication
437 if (predicate != NULL) { // right pattern that can be used by loop predication
443 if (predicate != NULL) { // right pattern that can be used by loop predication
584 // Note: this function is particularly designed for loop predication. We require load_range
585 // and offset to be loop invariant computed on the fly by "invar"
645 BoolNode* PhaseIdealLoop::rc_predicate(IdealLoopTree *loop, Node* ctrl,
661 // Note, counted loop's test is '<' or '>'.
662 limit = exact_limit(loop);
703 // Insert loop predicates for null checks and range checks
704 bool PhaseIdealLoop::loop_predication_impl(IdealLoopTree *loop) {
707 if (!loop->_head->is_Loop()) {
711 LoopNode* head = loop->_head->as_Loop();
723 // Avoid RCE if Counted loop's test is '!='.
731 // Loop limit check predicate should be near the loop.
743 loop->dump_head();
753 Invariance invar(area, loop);
756 // projs in the list, and they all dominate loop->tail()
758 Node *current_proj = loop->tail(); //start from tail
760 if (loop == get_loop(current_proj) && // still in the loop ?
777 if (loop->is_loop_exit(iff)) {
782 // Both arms are inside the loop. There are two cases:
788 // does not dominate loop->tail(), so it can not be in the if_proj list.
818 loop->dump_head();
821 loop->dump_head();
824 } else if (cl != NULL && loop->is_range_check_if(iff, this, invar)) {
853 // late schedule will place invariant things in the loop.
856 assert(invar.is_invariant(offset), "offset must be loop invariant");
861 Node* lower_bound_bol = rc_predicate(loop, ctrl, scale, offset, init, limit, stride, rng, false);
868 Node* upper_bound_bol = rc_predicate(loop, lower_bound_proj, scale, offset, init, limit, stride, rng, true);
881 loop->dump_head();
885 // Loop variant check (for example, range check in non-counted loop)
893 // Eliminate the old If in the loop body
901 // report that the loop predication has been actually performed
902 // for this loop
905 loop->dump_head();
913 // driver routine for loop predication optimization