comparison src/share/vm/opto/compile.cpp @ 22985:eb8b5cc64669

8063137: Never-taken branches should be pruned when GWT LambdaForms are shared Reviewed-by: jrose, kvn
author vlivanov
date Thu, 29 Jan 2015 10:25:59 -0800
parents ddce0b7cee93
children bf41eee321e5
comparison
equal deleted inserted replaced
22984:c97ba20ad404 22985:eb8b5cc64669
3073 } 3073 }
3074 break; 3074 break;
3075 default: 3075 default:
3076 assert( !n->is_Call(), "" ); 3076 assert( !n->is_Call(), "" );
3077 assert( !n->is_Mem(), "" ); 3077 assert( !n->is_Mem(), "" );
3078 assert( nop != Op_ProfileBoolean, "should be eliminated during IGVN");
3078 break; 3079 break;
3079 } 3080 }
3080 3081
3081 // Collect CFG split points 3082 // Collect CFG split points
3082 if (n->is_MultiBranch()) 3083 if (n->is_MultiBranch())
3289 // Report if there are too many traps at the current method and bci. 3290 // Report if there are too many traps at the current method and bci.
3290 // Return true if there was a trap, and/or PerMethodTrapLimit is exceeded. 3291 // Return true if there was a trap, and/or PerMethodTrapLimit is exceeded.
3291 bool Compile::too_many_traps(ciMethod* method, 3292 bool Compile::too_many_traps(ciMethod* method,
3292 int bci, 3293 int bci,
3293 Deoptimization::DeoptReason reason) { 3294 Deoptimization::DeoptReason reason) {
3295 if (method->has_injected_profile()) {
3296 return false;
3297 }
3294 ciMethodData* md = method->method_data(); 3298 ciMethodData* md = method->method_data();
3295 if (md->is_empty()) { 3299 if (md->is_empty()) {
3296 // Assume the trap has not occurred, or that it occurred only 3300 // Assume the trap has not occurred, or that it occurred only
3297 // because of a transient condition during start-up in the interpreter. 3301 // because of a transient condition during start-up in the interpreter.
3298 return false; 3302 return false;
3338 // Is not eager to return true, since this will cause the compiler to use 3342 // Is not eager to return true, since this will cause the compiler to use
3339 // Action_none for a trap point, to avoid too many recompilations. 3343 // Action_none for a trap point, to avoid too many recompilations.
3340 bool Compile::too_many_recompiles(ciMethod* method, 3344 bool Compile::too_many_recompiles(ciMethod* method,
3341 int bci, 3345 int bci,
3342 Deoptimization::DeoptReason reason) { 3346 Deoptimization::DeoptReason reason) {
3347 if (method->has_injected_profile()) {
3348 return false;
3349 }
3343 ciMethodData* md = method->method_data(); 3350 ciMethodData* md = method->method_data();
3344 if (md->is_empty()) { 3351 if (md->is_empty()) {
3345 // Assume the trap has not occurred, or that it occurred only 3352 // Assume the trap has not occurred, or that it occurred only
3346 // because of a transient condition during start-up in the interpreter. 3353 // because of a transient condition during start-up in the interpreter.
3347 return false; 3354 return false;