8210233: Prepare Klass::is_loader_alive() for concurrent class unloading

Reviewed-by: coleenp, pliden
This commit is contained in:
Erik Österlund 2018-09-10 13:07:42 +02:00
parent a602e0b80c
commit 842bc09b01
3 changed files with 9 additions and 3 deletions

View file

@ -336,6 +336,8 @@ class ClassLoaderData : public CHeapObj<mtClass> {
bool claimed() const { return _claimed == 1; }
bool claim();
// Computes if the CLD is alive or not. This is safe to call in concurrent
// contexts.
bool is_alive() const;
// Accessors
@ -377,6 +379,9 @@ class ClassLoaderData : public CHeapObj<mtClass> {
inline oop class_loader() const;
// Returns true if this class loader data is for a loader going away.
// Note that this is only safe after the GC has computed if the CLD is
// unloading or not. In concurrent contexts where there are no such
// guarantees, is_alive() should be used instead.
bool is_unloading() const {
assert(!(is_the_null_class_loader_data() && _unloading), "The null class loader can never be unloaded");
return _unloading;