Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
13 changes: 4 additions & 9 deletions src/hotspot/share/prims/jvm.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -3310,24 +3310,19 @@ JVM_END

JVM_ENTRY(jobject, JVM_LatestUserDefinedLoader(JNIEnv *env))
for (vframeStream vfst(thread); !vfst.at_end(); vfst.next()) {
#if HOTSPOT_TARGET_CLASSLIB == 8
// UseNewReflection
vfst.skip_reflection_related_frames(); // Only needed for 1.4 reflection
oop loader = vfst.method()->method_holder()->class_loader();
if (loader != NULL && !SystemDictionary::is_ext_class_loader(Handle(THREAD, loader))) {
return JNIHandles::make_local(THREAD, loader);
}
#else
InstanceKlass* ik = vfst.method()->method_holder();
oop loader = ik->class_loader();
#if HOTSPOT_TARGET_CLASSLIB == 8
if (loader != nullptr && !SystemDictionary::is_ext_class_loader(Handle(THREAD, loader))) {
#else
if (loader != NULL && !SystemDictionary::is_platform_class_loader(loader)) {
#endif // HOTSPOT_TARGET_CLASSLIB == 8
// Skip reflection related frames
if (!ik->is_subclass_of(vmClasses::reflect_MethodAccessorImpl_klass()) &&
!ik->is_subclass_of(vmClasses::reflect_ConstructorAccessorImpl_klass())) {
return JNIHandles::make_local(THREAD, loader);
}
}
#endif // HOTSPOT_TARGET_CLASSLIB == 8
}
return NULL;
JVM_END
Expand Down
9 changes: 0 additions & 9 deletions src/hotspot/share/runtime/vframe.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -604,15 +604,6 @@ javaVFrame* vframeStreamCommon::asJavaVFrame() {
return result;
}

#if HOTSPOT_TARGET_CLASSLIB == 8
void vframeStreamCommon::skip_reflection_related_frames() {
while (!at_end() &&
(method()->method_holder()->is_subclass_of(vmClasses::reflect_MethodAccessorImpl_klass()) ||
method()->method_holder()->is_subclass_of(vmClasses::reflect_ConstructorAccessorImpl_klass()))) {
next();
}
}
#endif

#ifndef PRODUCT
void vframe::print() {
Expand Down
5 changes: 0 additions & 5 deletions src/hotspot/share/runtime/vframe.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -335,11 +335,6 @@ class vframeStreamCommon : StackObj {
// special security frames and prefixed native methods
void security_get_caller_frame(int depth);

#if HOTSPOT_TARGET_CLASSLIB == 8
// Helper routine for JVM_LatestUserDefinedLoader -- needed for 1.4
// reflection implementation
void skip_reflection_related_frames();
#endif
};

class vframeStream : public vframeStreamCommon {
Expand Down
Loading