RFR: 8214257: IC cache not clean after cleaning assertion failure

Erik Österlund erik.osterlund at oracle.com
Tue Nov 27 13:00:57 UTC 2018


Back in 8212681, an abstract CompiledICLocker was introduce to protect 
inline caches from concurrent patching.

Unfortunately, not all patching of ICs started using the 
CompiledICLocker. There were still some callsites using the 
Patching_lock. Therefore, the assert may trigger sometimes saying the IC 
cache is not clean right after cleaning, due to other concurrent 
modifications under the Patching_lock.

Also, in CompiledIC::set_to_clean(), the condition for safe_transition 
was altered incorrectly from is_at_safepoint() to 
CompiledICLocker::is_safe(), causing cleaning to not used transition, so 
I reinstated that in this patch.

This patch depends on 8214338 by assuming that the CompiledICLocker does 
not use safepoint checks, as it is now used from leaf calls where 
safepointing is not allowed.




More information about the hotspot-dev mailing list