diff options
Diffstat (limited to 'hotspot')
-rw-r--r-- | hotspot/.hg/patches/light-jdk8u5-b13.patch | 17 |
1 files changed, 9 insertions, 8 deletions
diff --git a/hotspot/.hg/patches/light-jdk8u5-b13.patch b/hotspot/.hg/patches/light-jdk8u5-b13.patch index 58844702..f065525f 100644 --- a/hotspot/.hg/patches/light-jdk8u5-b13.patch +++ b/hotspot/.hg/patches/light-jdk8u5-b13.patch @@ -1564,7 +1564,7 @@ diff --git a/src/share/vm/prims/jvmtiRedefineClasses2.cpp b/src/share/vm/prims/j new file mode 100644 --- /dev/null +++ b/src/share/vm/prims/jvmtiRedefineClasses2.cpp -@@ -0,0 +1,2100 @@ +@@ -0,0 +1,2101 @@ +/* + * Copyright (c) 2003, 2011, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. @@ -2769,14 +2769,15 @@ new file mode 100644 + int flags = java_lang_invoke_MemberName::flags(mem_name); + int ref_kind = (flags >> REFERENCE_KIND_SHIFT) & REFERENCE_KIND_MASK; + if (MethodHandles::ref_kind_is_field(ref_kind)) { -+ if (java_lang_invoke_DirectMethodHandle_StaticAccessor::is_instance(obj)) { -+ InstanceKlass* ik = InstanceKlass::cast(obj->klass()); -+ if (java_lang_invoke_MemberName::vmindex(mem_name) != 0) { -+ // Note: we don't care about staticBase field (which is java.lang.Class) -+ // It should be processed during normal object update. -+ // Update offset in StaticAccessor -+ int offset = java_lang_invoke_MemberName::vmindex(mem_name); ++ // Note: we don't care about staticBase field (which is java.lang.Class) ++ // It should be processed during normal object update. ++ // Update offset in StaticAccessor ++ int offset = java_lang_invoke_MemberName::vmindex(mem_name); ++ if (offset != 0) { // index of 0 means that field no longer exist ++ if (java_lang_invoke_DirectMethodHandle_StaticAccessor::is_instance(obj)) { + java_lang_invoke_DirectMethodHandle_StaticAccessor::set_static_offset(obj, offset); ++ } else if (java_lang_invoke_DirectMethodHandle_Accessor::is_instance(obj)) { ++ java_lang_invoke_DirectMethodHandle_Accessor::set_field_offset(obj, offset); + } + } + } |