Mercurial > hg > truffle
diff src/share/vm/opto/loopopts.cpp @ 14909:4ca6dc0799b6
Backout jdk9 merge
author | Gilles Duboscq <duboscq@ssw.jku.at> |
---|---|
date | Tue, 01 Apr 2014 13:57:07 +0200 |
parents | cd5d10655495 |
children | 89152779163c |
line wrap: on
line diff
--- a/src/share/vm/opto/loopopts.cpp Tue Apr 01 14:09:03 2014 +0200 +++ b/src/share/vm/opto/loopopts.cpp Tue Apr 01 13:57:07 2014 +0200 @@ -1,5 +1,5 @@ /* - * Copyright (c) 1999, 2013, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1999, 2012, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -43,6 +43,12 @@ return NULL; } + if (n->is_MathExact()) { + // MathExact has projections that are not correctly handled in the code + // below. + return NULL; + } + int wins = 0; assert(!n->is_CFG(), ""); assert(region->is_Region(), ""); @@ -1109,8 +1115,8 @@ Node *n2 = phi->in(i)->in(1)->in(2); phi1->set_req( i, n1 ); phi2->set_req( i, n2 ); - phi1->set_type( phi1->type()->meet_speculative(n1->bottom_type())); - phi2->set_type( phi2->type()->meet_speculative(n2->bottom_type())); + phi1->set_type( phi1->type()->meet(n1->bottom_type()) ); + phi2->set_type( phi2->type()->meet(n2->bottom_type()) ); } // See if these Phis have been made before. // Register with optimizer @@ -1183,8 +1189,8 @@ } phi1->set_req( j, n1 ); phi2->set_req( j, n2 ); - phi1->set_type(phi1->type()->meet_speculative(n1->bottom_type())); - phi2->set_type(phi2->type()->meet_speculative(n2->bottom_type())); + phi1->set_type( phi1->type()->meet(n1->bottom_type()) ); + phi2->set_type( phi2->type()->meet(n2->bottom_type()) ); } // See if these Phis have been made before. @@ -2356,7 +2362,8 @@ opc == Op_Catch || opc == Op_CatchProj || opc == Op_Jump || - opc == Op_JumpProj) { + opc == Op_JumpProj || + opc == Op_FlagsProj) { #if !defined(PRODUCT) if (TracePartialPeeling) { tty->print_cr("\nExit control too complex: lp: %d", head->_idx);