< prev index next >
src/share/vm/oops/instanceKlass.cpp
Print this page
rev 8983 : 8222670: pathological case of JIT recompilation and code cache bloat
Summary: Prevent downgraded compilation tasks from recompiling.
Reviewed-by: thartmann, sgehwolf, phh, andrew
*** 1,7 ****
/*
! * Copyright (c) 1997, 2018, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
* published by the Free Software Foundation.
--- 1,7 ----
/*
! * Copyright (c) 1997, 2019, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
* published by the Free Software Foundation.
*** 2923,2932 ****
--- 2923,2939 ----
}
#endif // INCLUDE_JVMTI
// On-stack replacement stuff
void InstanceKlass::add_osr_nmethod(nmethod* n) {
+ #ifndef PRODUCT
+ if (TieredCompilation) {
+ nmethod * prev = lookup_osr_nmethod(n->method(), n->osr_entry_bci(), n->comp_level(), true);
+ assert(prev == NULL || !prev->is_in_use(),
+ "redundunt OSR recompilation detected. memory leak in CodeCache!");
+ }
+ #endif
// only one compilation can be active
NEEDS_CLEANUP
// This is a short non-blocking critical region, so the no safepoint check is ok.
OsrList_lock->lock_without_safepoint_check();
assert(n->is_osr_method(), "wrong kind of nmethod");
*** 3044,3054 ****
}
}
osr = osr->osr_link();
}
OsrList_lock->unlock();
! if (best != NULL && best->comp_level() >= comp_level && match_level == false) {
return best;
}
return NULL;
}
--- 3051,3063 ----
}
}
osr = osr->osr_link();
}
OsrList_lock->unlock();
!
! assert(match_level == false || best == NULL, "shouldn't pick up anything if match_level is set");
! if (best != NULL && best->comp_level() >= comp_level) {
return best;
}
return NULL;
}
< prev index next >