aboutsummaryrefslogtreecommitdiff
path: root/src/share/vm/classfile/javaClasses.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/share/vm/classfile/javaClasses.cpp')
-rw-r--r--src/share/vm/classfile/javaClasses.cpp47
1 files changed, 8 insertions, 39 deletions
diff --git a/src/share/vm/classfile/javaClasses.cpp b/src/share/vm/classfile/javaClasses.cpp
index c5fad6487..80b15fbd2 100644
--- a/src/share/vm/classfile/javaClasses.cpp
+++ b/src/share/vm/classfile/javaClasses.cpp
@@ -47,20 +47,9 @@
#include "runtime/java.hpp"
#include "runtime/javaCalls.hpp"
#include "runtime/safepoint.hpp"
+#include "runtime/thread.inline.hpp"
#include "runtime/vframe.hpp"
#include "utilities/preserveException.hpp"
-#ifdef TARGET_OS_FAMILY_linux
-# include "thread_linux.inline.hpp"
-#endif
-#ifdef TARGET_OS_FAMILY_solaris
-# include "thread_solaris.inline.hpp"
-#endif
-#ifdef TARGET_OS_FAMILY_windows
-# include "thread_windows.inline.hpp"
-#endif
-#ifdef TARGET_OS_FAMILY_bsd
-# include "thread_bsd.inline.hpp"
-#endif
#define INJECTED_FIELD_COMPUTE_OFFSET(klass, name, signature, may_be_java) \
klass::_##name##_offset = JavaClasses::compute_injected_offset(JavaClasses::klass##_##name##_enum);
@@ -2555,8 +2544,8 @@ Metadata* java_lang_invoke_MemberName::vmtarget(oop mname) {
void java_lang_invoke_MemberName::set_vmtarget(oop mname, Metadata* ref) {
assert(is_instance(mname), "wrong type");
-#ifdef ASSERT
// check the type of the vmtarget
+ oop dependency = NULL;
if (ref != NULL) {
switch (flags(mname) & (MN_IS_METHOD |
MN_IS_CONSTRUCTOR |
@@ -2564,28 +2553,21 @@ void java_lang_invoke_MemberName::set_vmtarget(oop mname, Metadata* ref) {
case MN_IS_METHOD:
case MN_IS_CONSTRUCTOR:
assert(ref->is_method(), "should be a method");
+ dependency = ((Method*)ref)->method_holder()->java_mirror();
break;
case MN_IS_FIELD:
assert(ref->is_klass(), "should be a class");
+ dependency = ((Klass*)ref)->java_mirror();
break;
default:
ShouldNotReachHere();
}
}
-#endif //ASSERT
mname->address_field_put(_vmtarget_offset, (address)ref);
- oop loader = NULL;
- if (ref != NULL) {
- if (ref->is_klass()) {
- loader = ((Klass*)ref)->class_loader();
- } else if (ref->is_method()) {
- loader = ((Method*)ref)->method_holder()->class_loader();
- } else {
- ShouldNotReachHere();
- }
- }
- // Add a reference to the loader to ensure the metadata is kept alive
- mname->obj_field_put(_vmloader_offset, loader);
+ // Add a reference to the loader (actually mirror because anonymous classes will not have
+ // distinct loaders) to ensure the metadata is kept alive
+ // This mirror may be different than the one in clazz field.
+ mname->obj_field_put(_vmloader_offset, dependency);
}
intptr_t java_lang_invoke_MemberName::vmindex(oop mname) {
@@ -2750,7 +2732,6 @@ oop java_security_AccessControlContext::create(objArrayHandle context, bool isPr
bool java_lang_ClassLoader::offsets_computed = false;
int java_lang_ClassLoader::_loader_data_offset = -1;
-int java_lang_ClassLoader::_dependencies_offset = -1;
int java_lang_ClassLoader::parallelCapable_offset = -1;
ClassLoaderData** java_lang_ClassLoader::loader_data_addr(oop loader) {
@@ -2762,18 +2743,6 @@ ClassLoaderData* java_lang_ClassLoader::loader_data(oop loader) {
return *java_lang_ClassLoader::loader_data_addr(loader);
}
-oop java_lang_ClassLoader::dependencies(oop loader) {
- return loader->obj_field(_dependencies_offset);
-}
-
-HeapWord* java_lang_ClassLoader::dependencies_addr(oop loader) {
- if (UseCompressedOops) {
- return (HeapWord*)loader->obj_field_addr<narrowOop>(_dependencies_offset);
- } else {
- return (HeapWord*)loader->obj_field_addr<oop>(_dependencies_offset);
- }
-}
-
void java_lang_ClassLoader::compute_offsets() {
assert(!offsets_computed, "offsets should be initialized only once");
offsets_computed = true;