From: Ivan Dubrov Date: Wed, 6 Apr 2016 20:37:57 +0000 (-0700) Subject: Need to always clear f1 for invokedynamic/invokehandle X-Git-Tag: light-jdk8u74+9 X-Git-Url: https://source.dussan.org/?a=commitdiff_plain;h=3da52230cb076d192d2fffff01ed502b78497699;p=dcevm.git Need to always clear f1 for invokedynamic/invokehandle --- diff --git a/hotspot/.hg/patches/dont-clear-f1.patch b/hotspot/.hg/patches/dont-clear-f1.patch index 8b6bd0d5..381a0001 100644 --- a/hotspot/.hg/patches/dont-clear-f1.patch +++ b/hotspot/.hg/patches/dont-clear-f1.patch @@ -1,21 +1,33 @@ # HG changeset patch -# Parent 6f6f329e829b021b30ff9d2b21c1308f6427af2f +# Parent 89c7125da633a3b47b117c4c7ccbc60b6daa7581 -diff -r 6f6f329e829b -r f41a9c701b38 src/share/vm/oops/cpCache.cpp ---- a/src/share/vm/oops/cpCache.cpp Tue Apr 05 11:28:40 2016 -0700 -+++ b/src/share/vm/oops/cpCache.cpp Tue Apr 05 15:31:55 2016 -0700 -@@ -537,7 +537,7 @@ +diff -r 89c7125da633 src/share/vm/oops/cpCache.cpp +--- a/src/share/vm/oops/cpCache.cpp Wed Apr 06 12:04:17 2016 -0700 ++++ b/src/share/vm/oops/cpCache.cpp Wed Apr 06 13:37:24 2016 -0700 +@@ -536,8 +536,9 @@ + // Enhanced RedefineClasses() API support (DCEVM): // Clear cached entry, let it be re-resolved void ConstantPoolCacheEntry::clear_entry() { ++ // Always clear for invokehandle/invokedynamic to re-resolve them ++ bool clearF1 = bytecode_1() == Bytecodes::_invokehandle || bytecode_1() == Bytecodes::_invokedynamic; _indices = constant_pool_index(); - _f1 = NULL; -+ //_f1 = NULL; if (!is_resolved_reference()) { _f2 = 0; } -diff -r 6f6f329e829b -r f41a9c701b38 src/share/vm/oops/cpCache.hpp ---- a/src/share/vm/oops/cpCache.hpp Tue Apr 05 11:28:40 2016 -0700 -+++ b/src/share/vm/oops/cpCache.hpp Tue Apr 05 15:31:55 2016 -0700 +@@ -547,6 +548,9 @@ + // For example, it's used in TemplateInterpreterGenerator::generate_return_entry_for + // Also, we need to keep flag marking entry as one containing resolved_reference + _flags &= parameter_size_mask | (1 << is_resolved_ref_shift); ++ if (clearF1) { ++ _f1 = NULL; ++ } + } + #endif // INCLUDE_JVMTI + +diff -r 89c7125da633 src/share/vm/oops/cpCache.hpp +--- a/src/share/vm/oops/cpCache.hpp Wed Apr 06 12:04:17 2016 -0700 ++++ b/src/share/vm/oops/cpCache.hpp Wed Apr 06 13:37:24 2016 -0700 @@ -141,7 +141,7 @@ void set_bytecode_2(Bytecodes::Code code); void set_f1(Metadata* f1) {