8227755: Need more than 2 distinct CodeCache unloading cycles
Reviewed-by: eosterlund, rkennke
--- a/src/hotspot/share/code/codeCache.cpp Thu Jul 18 11:54:54 2019 -0400
+++ b/src/hotspot/share/code/codeCache.cpp Wed Jul 17 08:33:38 2019 -0400
@@ -771,9 +771,10 @@
uint8_t CodeCache::_unloading_cycle = 1;
void CodeCache::increment_unloading_cycle() {
- if (_unloading_cycle == 1) {
- _unloading_cycle = 2;
- } else {
+ // 2-bit value (see IsUnloadingState in nmethod.cpp for details)
+ // 0 is reserved for new methods.
+ _unloading_cycle = (_unloading_cycle + 1) % 4;
+ if (_unloading_cycle == 0) {
_unloading_cycle = 1;
}
}