comparison src/share/vm/opto/loopopts.cpp @ 17726:085b304a1cc5

8027754: Enable loop optimizations for loops with MathExact inside Reviewed-by: kvn, iveresov
author rbackman
date Thu, 23 Jan 2014 12:08:28 +0100
parents de95063c0e34
children 4ca6dc0799b6 cd3c534f8f4a
comparison
equal deleted inserted replaced
17725:b4ce4e9eb97d 17726:085b304a1cc5
38 // Split Node 'n' through merge point if there is enough win. 38 // Split Node 'n' through merge point if there is enough win.
39 Node *PhaseIdealLoop::split_thru_phi( Node *n, Node *region, int policy ) { 39 Node *PhaseIdealLoop::split_thru_phi( Node *n, Node *region, int policy ) {
40 if (n->Opcode() == Op_ConvI2L && n->bottom_type() != TypeLong::LONG) { 40 if (n->Opcode() == Op_ConvI2L && n->bottom_type() != TypeLong::LONG) {
41 // ConvI2L may have type information on it which is unsafe to push up 41 // ConvI2L may have type information on it which is unsafe to push up
42 // so disable this for now 42 // so disable this for now
43 return NULL;
44 }
45
46 if (n->is_MathExact()) {
47 // MathExact has projections that are not correctly handled in the code
48 // below.
49 return NULL; 43 return NULL;
50 } 44 }
51 45
52 int wins = 0; 46 int wins = 0;
53 assert(!n->is_CFG(), ""); 47 assert(!n->is_CFG(), "");
2360 int opc = n->Opcode(); 2354 int opc = n->Opcode();
2361 if (n->is_Call() || 2355 if (n->is_Call() ||
2362 opc == Op_Catch || 2356 opc == Op_Catch ||
2363 opc == Op_CatchProj || 2357 opc == Op_CatchProj ||
2364 opc == Op_Jump || 2358 opc == Op_Jump ||
2365 opc == Op_JumpProj || 2359 opc == Op_JumpProj) {
2366 opc == Op_FlagsProj) {
2367 #if !defined(PRODUCT) 2360 #if !defined(PRODUCT)
2368 if (TracePartialPeeling) { 2361 if (TracePartialPeeling) {
2369 tty->print_cr("\nExit control too complex: lp: %d", head->_idx); 2362 tty->print_cr("\nExit control too complex: lp: %d", head->_idx);
2370 } 2363 }
2371 #endif 2364 #endif