Mercurial > hg > truffle
diff src/share/vm/opto/stringopts.cpp @ 2383:9dc311b8473e
7008866: Missing loop predicate for loop with multiple entries
Summary: Add predicates when loop head bytecode is parsed instead of when back branch bytecode is parsed.
Reviewed-by: never
author | kvn |
---|---|
date | Mon, 21 Mar 2011 11:28:14 -0700 |
parents | 2ddb2fab82cb |
children | 0e3ed5a14f73 |
line wrap: on
line diff
--- a/src/share/vm/opto/stringopts.cpp Mon Mar 21 02:30:49 2011 -0700 +++ b/src/share/vm/opto/stringopts.cpp Mon Mar 21 11:28:14 2011 -0700 @@ -969,6 +969,10 @@ // for (int i=0; ; i++) // if (x <= sizeTable[i]) // return i+1; + + // Add loop predicate first. + kit.add_predicate(); + RegionNode *loop = new (C, 3) RegionNode(3); loop->init_req(1, kit.control()); kit.gvn().set_type(loop, Type::CONTROL); @@ -1086,6 +1090,9 @@ // } { + // Add loop predicate first. + kit.add_predicate(); + RegionNode *head = new (C, 3) RegionNode(3); head->init_req(1, kit.control()); kit.gvn().set_type(head, Type::CONTROL);