-
Enhancement
-
Resolution: Fixed
-
P4
-
None
-
b31
Issue | Fix Version | Assignee | Priority | Status | Resolution | Resolved In Build |
---|---|---|---|---|---|---|
JDK-8014168 | 8 | Stefan Karlsson | P4 | Resolved | Fixed | b89 |
The PermGen Removal changed CompiledICHolders from being Java objects to C++ objects.
CodeCache::do_unloading(...) used to take a keep_alive closure that was applied to CompiledICHolders deep down in nmethod::do_unloading. Since CompileICHolders don't move anymore, and we have other ways to keep them alive, we don't use the keep_alive closures in these functions anymore.
Because of this, CodeCache::do_unloading will not populate the marking stacks, and we can remove the call to drain the stacks after the calls to CodeCache::do_unloading.
This also has the neat effect that we now can verify that the marking has really completed before we start unloading classes, which makes the code easier to maintain/understand.
CodeCache::do_unloading(...) used to take a keep_alive closure that was applied to CompiledICHolders deep down in nmethod::do_unloading. Since CompileICHolders don't move anymore, and we have other ways to keep them alive, we don't use the keep_alive closures in these functions anymore.
Because of this, CodeCache::do_unloading will not populate the marking stacks, and we can remove the call to drain the stacks after the calls to CodeCache::do_unloading.
This also has the neat effect that we now can verify that the marking has really completed before we start unloading classes, which makes the code easier to maintain/understand.
- backported by
-
JDK-8014168 NPG: Remove unnecessary mark stack draining after CodeCache::do_unloading
- Resolved