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 |