< prev index next > src/hotspot/share/jvmci/jvmciCompilerToVM.cpp
Print this page
#include "oops/constantPool.inline.hpp"
#include "oops/instanceKlass.inline.hpp"
#include "oops/instanceMirrorKlass.hpp"
#include "oops/method.inline.hpp"
#include "oops/objArrayKlass.inline.hpp"
+ #include "oops/trainingData.hpp"
#include "oops/typeArrayOop.inline.hpp"
#include "prims/jvmtiExport.hpp"
#include "prims/methodHandles.hpp"
#include "prims/nativeLookup.hpp"
#include "runtime/arguments.hpp"
}
goto unexpected;
}
} else if (JVMCIENV->isa_HotSpotMethodData(base_object)) {
jlong base_address = (intptr_t) JVMCIENV->asMethodData(base_object);
- klass = *((Klass**) (intptr_t) (base_address + offset));
- if (klass == nullptr || !klass->is_loader_alive()) {
+ Klass* k = *((Klass**) (intptr_t) (base_address + offset));
+ if (k == nullptr || k->class_loader_data() == nullptr || !TrainingData::is_klass_loaded(k)) {
+ return nullptr;
+ }
+ if (!k->is_loader_alive()) {
// Klasses in methodData might be concurrently unloading so return null in that case.
return nullptr;
}
+ klass = k;
} else {
goto unexpected;
}
} else {
goto unexpected;
< prev index next >