src/share/vm/opto/compile.cpp
Index
Unified diffs
Context diffs
Sdiffs
Patch
New
Old
Previous File
Next File
*** old/src/share/vm/opto/compile.cpp Wed Jan 21 14:39:28 2015
--- new/src/share/vm/opto/compile.cpp Wed Jan 21 14:39:28 2015
*** 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