mirror of
https://github.com/openjdk/jdk.git
synced 2025-08-28 07:14:30 +02:00
8210856: Move InstanceKlass DependencyContext cleaning to SystemDictionary::do_unloading()
Already walk classes in ClassLoaderData::unload so generalize to also clean nmethod dependencies. Reviewed-by: eosterlund, dlong, vlivanov
This commit is contained in:
parent
9c60728a28
commit
06a1ea846a
6 changed files with 25 additions and 33 deletions
|
@ -1,5 +1,5 @@
|
|||
/*
|
||||
* Copyright (c) 2016, Oracle and/or its affiliates. All rights reserved.
|
||||
* Copyright (c) 2016, 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
|
||||
|
@ -50,7 +50,7 @@ class TestDependencyContext {
|
|||
}
|
||||
|
||||
~TestDependencyContext() {
|
||||
dependencies().wipe();
|
||||
wipe();
|
||||
CodeCache_lock->unlock();
|
||||
}
|
||||
|
||||
|
@ -63,6 +63,18 @@ class TestDependencyContext {
|
|||
return ctx.find_stale_entries();
|
||||
}
|
||||
#endif
|
||||
|
||||
void wipe() {
|
||||
DependencyContext ctx(&_dependency_context);
|
||||
nmethodBucket* b = ctx.dependencies();
|
||||
ctx.set_dependencies(NULL);
|
||||
ctx.set_has_stale_entries(false);
|
||||
while (b != NULL) {
|
||||
nmethodBucket* next = b->next();
|
||||
delete b;
|
||||
b = next;
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
static void test_remove_dependent_nmethod(int id, bool delete_immediately) {
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue