8215491: ICStubInterface::finalize finds zombie nmethod with ZGC concurrent class unloading
Reviewed-by: dlong, coleenp
This commit is contained in:
parent
1cc5cf4c02
commit
83adde9866
src/hotspot/share
@ -1283,6 +1283,13 @@ bool nmethod::make_not_entrant_or_zombie(int state) {
|
||||
flush_dependencies(/*delete_immediately*/true);
|
||||
}
|
||||
|
||||
// Clear ICStubs to prevent back patching stubs of zombie or flushed
|
||||
// nmethods during the next safepoint (see ICStub::finalize).
|
||||
{
|
||||
CompiledICLocker ml(this);
|
||||
clear_ic_stubs();
|
||||
}
|
||||
|
||||
// zombie only - if a JVMTI agent has enabled the CompiledMethodUnload
|
||||
// event and it hasn't already been reported for this nmethod then
|
||||
// report it now. The event may have been reported earlier if the GC
|
||||
|
@ -717,12 +717,6 @@ NMethodSweeper::MethodStateChange NMethodSweeper::process_compiled_method(Compil
|
||||
// stack we can safely convert it to a zombie method
|
||||
OrderAccess::loadload(); // _stack_traversal_mark and _state
|
||||
if (cm->can_convert_to_zombie()) {
|
||||
// Clear ICStubs to prevent back patching stubs of zombie or flushed
|
||||
// nmethods during the next safepoint (see ICStub::finalize).
|
||||
{
|
||||
CompiledICLocker ml(cm);
|
||||
cm->clear_ic_stubs();
|
||||
}
|
||||
// Code cache state change is tracked in make_zombie()
|
||||
cm->make_zombie();
|
||||
SWEEP(cm);
|
||||
|
Loading…
x
Reference in New Issue
Block a user