src/share/vm/opto/compile.cpp
Index Unified diffs Context diffs Sdiffs Patch New Old Previous File Next File hotspot Cdiff src/share/vm/opto/compile.cpp

src/share/vm/opto/compile.cpp

Print this page
rev 7652 : 8063137: Never-taken branches should be pruned when GWT LambdaForms are shared
Reviewed-by: ?
rev 7653 : [mq]: branch.freq.1

*** 3103,3112 **** --- 3103,3113 ---- } break; default: assert( !n->is_Call(), "" ); assert( !n->is_Mem(), "" ); + assert( nop != Op_ProfileBranch, "should be eliminated during IGVN"); break; } // Collect CFG split points if (n->is_MultiBranch())
*** 3319,3328 **** --- 3320,3333 ---- // Report if there are too many traps at the current method and bci. // Return true if there was a trap, and/or PerMethodTrapLimit is exceeded. bool Compile::too_many_traps(ciMethod* method, int bci, Deoptimization::DeoptReason reason) { + if (method->is_shared()) { + // Don't trust gathered profile for shared LambdaForms (marked w/ @LambdaForm.Shared). + return false; + } ciMethodData* md = method->method_data(); if (md->is_empty()) { // Assume the trap has not occurred, or that it occurred only // because of a transient condition during start-up in the interpreter. return false;
*** 3368,3377 **** --- 3373,3386 ---- // Is not eager to return true, since this will cause the compiler to use // Action_none for a trap point, to avoid too many recompilations. bool Compile::too_many_recompiles(ciMethod* method, int bci, Deoptimization::DeoptReason reason) { + if (method->is_shared()) { + // Don't trust gathered profile for shared LambdaForms (marked w/ @LambdaForm.Shared). + return false; + } ciMethodData* md = method->method_data(); if (md->is_empty()) { // Assume the trap has not occurred, or that it occurred only // because of a transient condition during start-up in the interpreter. return false;
src/share/vm/opto/compile.cpp
Index Unified diffs Context diffs Sdiffs Patch New Old Previous File Next File