]> source.dussan.org Git - dcevm.git/commitdiff
Need to always clear f1 for invokedynamic/invokehandle light-jdk8u74+9
authorIvan Dubrov <idubrov@guidewire.com>
Wed, 6 Apr 2016 20:37:57 +0000 (13:37 -0700)
committerIvan Dubrov <idubrov@guidewire.com>
Wed, 6 Apr 2016 20:37:57 +0000 (13:37 -0700)
hotspot/.hg/patches/dont-clear-f1.patch

index 8b6bd0d58c69e32f0ffa021ff6d819b39f935abf..381a000135fbb7d556b22a08ed75fd9e4c7538f8 100644 (file)
@@ -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) {