# HG changeset patch # User kvn # Date 1303845262 25200 # Node ID 273b56978029c0159fc6ea8a91adedf930cf6366 # Parent 548597e74aa402bc6b10a72f60f5e8340e0ec8fb 7039586: test/java/util/Collections/Rotate.java failing with hs21-b09 Summary: A predicate should not be moved in partial peel optimization since it will invalidate jvm state of its uncommon trap. Reviewed-by: never diff -r 548597e74aa4 -r 273b56978029 src/share/vm/opto/loopopts.cpp --- a/src/share/vm/opto/loopopts.cpp Mon Apr 25 16:25:58 2011 -0700 +++ b/src/share/vm/opto/loopopts.cpp Tue Apr 26 12:14:22 2011 -0700 @@ -2262,6 +2262,9 @@ // stmt1 // | // v +// loop predicate +// | +// v // stmt2 clone // | // v @@ -2272,9 +2275,6 @@ // : false true // : | | // : | v -// : | loop predicate -// : | | -// : | v // : | newloop<-----+ // : | | | // : | stmt3 clone | @@ -2330,7 +2330,6 @@ } } - Node* entry = head->in(LoopNode::EntryControl); int dd = dom_depth(head); // Step 1: find cut point @@ -2627,8 +2626,6 @@ // Backedge of the surviving new_head (the clone) is original last_peel _igvn.hash_delete(new_head_clone); - Node* new_entry = move_loop_predicates(entry, new_head_clone->in(LoopNode::EntryControl)); - new_head_clone->set_req(LoopNode::EntryControl, new_entry); new_head_clone->set_req(LoopNode::LoopBackControl, last_peel); _igvn._worklist.push(new_head_clone);