[openjdk-8-jre-dcevm] 04/04: New upstream release (8u112-b16)

Emmanuel Bourg ebourg-guest at moszumanska.debian.org
Tue Dec 6 14:03:52 UTC 2016


This is an automated email from the git hooks/post-receive script.

ebourg-guest pushed a commit to branch master
in repository openjdk-8-jre-dcevm.

commit 357b8e37782a0d894c33950db32888d617049a60
Author: Emmanuel Bourg <ebourg at apache.org>
Date:   Tue Dec 6 14:42:46 2016 +0100

    New upstream release (8u112-b16)
---
 debian/changelog                                  |   7 +-
 debian/orig-tar.sh                                |   2 +-
 debian/patches/jvmti-getLoadedClasses-java8.patch |  19 +++
 debian/patches/light-jdk8u66-b17-deopt-cp.patch   | 145 ++++++++++++++--------
 debian/patches/series                             |   1 +
 5 files changed, 121 insertions(+), 53 deletions(-)

diff --git a/debian/changelog b/debian/changelog
index d6d16a0..b4c965d 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,9 +1,10 @@
-openjdk-8-jre-dcevm (8u92-2) UNRELEASED; urgency=medium
+openjdk-8-jre-dcevm (8u112-1) unstable; urgency=medium
 
-  * Team upload.
+  * New upstream release
+    - Imported the light-jdk8u112-b16 DCEVM patches (build 7)
   * Switch to debhelper level 10
 
- -- Emmanuel Bourg <ebourg at apache.org>  Tue, 06 Dec 2016 13:33:41 +0100
+ -- Emmanuel Bourg <ebourg at apache.org>  Tue, 06 Dec 2016 14:32:21 +0100
 
 openjdk-8-jre-dcevm (8u92-1) unstable; urgency=medium
 
diff --git a/debian/orig-tar.sh b/debian/orig-tar.sh
index 482851d..14ca623 100755
--- a/debian/orig-tar.sh
+++ b/debian/orig-tar.sh
@@ -3,7 +3,7 @@
 PACKAGE=$(dpkg-parsechangelog -S Source)
 VERSION=$2
 TAR=../${PACKAGE}_${VERSION}.orig.tar.gz
-TAG=jdk8u92-b14
+TAG=jdk8u112-b16
 
 rm -f $3
 
diff --git a/debian/patches/jvmti-getLoadedClasses-java8.patch b/debian/patches/jvmti-getLoadedClasses-java8.patch
new file mode 100644
index 0000000..cde459d
--- /dev/null
+++ b/debian/patches/jvmti-getLoadedClasses-java8.patch
@@ -0,0 +1,19 @@
+diff --git a/src/share/vm/prims/jvmtiGetLoadedClasses.cpp b/src/share/vm/prims/jvmtiGetLoadedClasses.cpp
+index 70aede5..381868b 100644
+--- a/src/share/vm/prims/jvmtiGetLoadedClasses.cpp
++++ b/src/share/vm/prims/jvmtiGetLoadedClasses.cpp
+@@ -42,7 +42,13 @@
+ 
+   void do_klass(Klass* k) {
+     // Collect all jclasses
+-    _classStack.push((jclass) _env->jni_reference(k->java_mirror()));
++    // DCEVM : LoadedClassesClosure in dcevm7 iterates over classes from SystemDictionary therefore the class "k" is always
++    //         the new version (SystemDictionary stores only new versions). But the LoadedClassesClosure's functionality was
++    //         changed in java8  where jvmtiLoadedClasses collects all classes from all classloaders, therefore we
++    //         must use new versions only.
++    if (k->new_version()==NULL) {
++      _classStack.push((jclass) _env->jni_reference(k->java_mirror()));
++    }
+   }
+ 
+   int extract(jclass* result_list) {
diff --git a/debian/patches/light-jdk8u66-b17-deopt-cp.patch b/debian/patches/light-jdk8u66-b17-deopt-cp.patch
index bef4c19..9362352 100644
--- a/debian/patches/light-jdk8u66-b17-deopt-cp.patch
+++ b/debian/patches/light-jdk8u66-b17-deopt-cp.patch
@@ -1,40 +1,79 @@
-# HG changeset patch
-# Parent  5c1a815b73abcb755c43eb820f6557d37aeb4f9f
-
-diff -r 5c1a815b73ab src/share/vm/classfile/classFileParser.cpp
---- a/src/share/vm/classfile/classFileParser.cpp	Mon Dec 07 17:08:29 2015 -0800
-+++ b/src/share/vm/classfile/classFileParser.cpp	Mon Dec 07 17:11:00 2015 -0800
-@@ -4257,6 +4257,11 @@
+diff --git a/src/share/vm/classfile/classFileParser.cpp b/src/share/vm/classfile/classFileParser.cpp
+index fa7986b..0910a7d 100644
+--- a/src/share/vm/classfile/classFileParser.cpp
++++ b/src/share/vm/classfile/classFileParser.cpp
+@@ -4264,6 +4264,30 @@
        }
      }
  
-+    if (cfs->source() != NULL && HotswapDeoptClassPath != NULL) {
-+      if (strstr(cfs->source(), HotswapDeoptClassPath) != NULL) 
-+        this_klass->set_deoptimization_incl(true);
++    if (this_klass->external_name() != NULL && HotswapDeoptClassPath != NULL) {
++      const char* deopt_path = HotswapDeoptClassPath;
++      const char* const end = deopt_path + strlen(deopt_path);
++      bool deopt_found = false;
++      while (!deopt_found && deopt_path < end) {
++        const char* tmp_end = strchr(deopt_path, ',');
++        if (tmp_end == NULL) {
++          tmp_end = end;
++        }
++        char* deopt_segm_path = NEW_C_HEAP_ARRAY(char, tmp_end - deopt_path + 1, mtInternal);
++        memcpy(deopt_segm_path, deopt_path, tmp_end - deopt_path);
++        deopt_segm_path[tmp_end - deopt_path] = '\0';
++        if (strstr(this_klass->external_name(), deopt_segm_path) != NULL) {
++          if (TraceRedefineClasses > 0) {
++            tty->print_cr("Including in deoptimization : %s", this_klass->external_name());
++          }
++          this_klass->set_deoptimization_incl(true);
++          deopt_found = true;
++        }
++        FREE_C_HEAP_ARRAY(char, deopt_segm_path, mtInternal);
++        deopt_path = tmp_end + 1;
++      }
 +    }
 +
      if (TraceClassResolution) {
        ResourceMark rm;
        // print out the superclass.
-diff -r 5c1a815b73ab src/share/vm/classfile/systemDictionary.cpp
---- a/src/share/vm/classfile/systemDictionary.cpp	Mon Dec 07 17:08:29 2015 -0800
-+++ b/src/share/vm/classfile/systemDictionary.cpp	Mon Dec 07 17:11:00 2015 -0800
-@@ -1245,6 +1245,11 @@
+diff --git a/src/share/vm/classfile/systemDictionary.cpp b/src/share/vm/classfile/systemDictionary.cpp
+index e40b061..588e0e5 100644
+--- a/src/share/vm/classfile/systemDictionary.cpp
++++ b/src/share/vm/classfile/systemDictionary.cpp
+@@ -1255,6 +1255,31 @@
        ik->restore_unshareable_info(loader_data, protection_domain, CHECK_(nh));
      }
  
 +    if (HotswapDeoptClassPath != NULL) {
-+      if (strstr(HotswapDeoptClassPath, ik->external_name()) != NULL)
-+        ik->set_deoptimization_incl(true);
++      const char* deopt_path = HotswapDeoptClassPath;
++      const char* const end = deopt_path + strlen(deopt_path);
++      bool deopt_found = false;
++      while (!deopt_found && deopt_path < end) {
++        const char* tmp_end = strchr(deopt_path, ',');
++        if (tmp_end == NULL) {
++          tmp_end = end;
++        }
++        char* deopt_segm_path = NEW_C_HEAP_ARRAY(char, tmp_end - deopt_path + 1, mtInternal);
++        memcpy(deopt_segm_path, deopt_path, tmp_end - deopt_path);
++        deopt_segm_path[tmp_end - deopt_path] = '\0';
++        if (strstr(ik->external_name(), deopt_segm_path) != NULL) {
++          if (TraceRedefineClasses > 0) {
++            tty->print_cr("Including in deoptimization : %s", ik->external_name());
++          }
++          ik->set_deoptimization_incl(true);
++          deopt_found = true;
++        }
++        FREE_C_HEAP_ARRAY(char, deopt_segm_path, mtInternal);
++        deopt_path = tmp_end + 1;
++      }
 +    }
 +
++
      if (TraceClassLoading) {
        ResourceMark rm;
        tty->print("[Loaded %s", ik->external_name());
-diff -r 5c1a815b73ab src/share/vm/code/codeCache.cpp
---- a/src/share/vm/code/codeCache.cpp	Mon Dec 07 17:08:29 2015 -0800
-+++ b/src/share/vm/code/codeCache.cpp	Mon Dec 07 17:11:00 2015 -0800
-@@ -707,6 +707,13 @@
+diff --git a/src/share/vm/code/codeCache.cpp b/src/share/vm/code/codeCache.cpp
+index c9059d7..af10381 100644
+--- a/src/share/vm/code/codeCache.cpp
++++ b/src/share/vm/code/codeCache.cpp
+@@ -709,6 +709,13 @@
  }
  #endif // HOTSWAP
  
@@ -48,10 +87,11 @@ diff -r 5c1a815b73ab src/share/vm/code/codeCache.cpp
  
  // Deoptimize all methods
  void CodeCache::mark_all_nmethods_for_deoptimization() {
-diff -r 5c1a815b73ab src/share/vm/code/codeCache.hpp
---- a/src/share/vm/code/codeCache.hpp	Mon Dec 07 17:08:29 2015 -0800
-+++ b/src/share/vm/code/codeCache.hpp	Mon Dec 07 17:11:00 2015 -0800
-@@ -185,6 +185,7 @@
+diff --git a/src/share/vm/code/codeCache.hpp b/src/share/vm/code/codeCache.hpp
+index f098284..d4a1363 100644
+--- a/src/share/vm/code/codeCache.hpp
++++ b/src/share/vm/code/codeCache.hpp
+@@ -184,6 +184,7 @@
      // tells how many nmethods have dependencies
    static int number_of_nmethods_with_dependencies();
  
@@ -59,9 +99,10 @@ diff -r 5c1a815b73ab src/share/vm/code/codeCache.hpp
    static int get_codemem_full_count() { return _codemem_full_count; }
  };
  
-diff -r 5c1a815b73ab src/share/vm/code/nmethod.cpp
---- a/src/share/vm/code/nmethod.cpp	Mon Dec 07 17:08:29 2015 -0800
-+++ b/src/share/vm/code/nmethod.cpp	Mon Dec 07 17:11:00 2015 -0800
+diff --git a/src/share/vm/code/nmethod.cpp b/src/share/vm/code/nmethod.cpp
+index 6ea39ae..bf2db7e 100644
+--- a/src/share/vm/code/nmethod.cpp
++++ b/src/share/vm/code/nmethod.cpp
 @@ -476,6 +476,7 @@
    _lazy_critical_native       = 0;
    _has_wide_vectors           = 0;
@@ -114,9 +155,10 @@ diff -r 5c1a815b73ab src/share/vm/code/nmethod.cpp
      // Copy contents of ScopeDescRecorder to nmethod
      code_buffer->copy_values_to(this);
      debug_info->copy_to(this);
-diff -r 5c1a815b73ab src/share/vm/code/nmethod.hpp
---- a/src/share/vm/code/nmethod.hpp	Mon Dec 07 17:08:29 2015 -0800
-+++ b/src/share/vm/code/nmethod.hpp	Mon Dec 07 17:11:00 2015 -0800
+diff --git a/src/share/vm/code/nmethod.hpp b/src/share/vm/code/nmethod.hpp
+index b7d6890..3de4757 100644
+--- a/src/share/vm/code/nmethod.hpp
++++ b/src/share/vm/code/nmethod.hpp
 @@ -184,6 +184,8 @@
    bool _marked_for_reclamation;              // Used by NMethodSweeper (set only by sweeper)
    bool _marked_for_deoptimization;           // Used for stack deoptimization
@@ -138,9 +180,10 @@ diff -r 5c1a815b73ab src/share/vm/code/nmethod.hpp
    void  make_unloaded(BoolObjectClosure* is_alive, oop cause);
  
    bool has_dependencies()                         { return dependencies_size() != 0; }
-diff -r 5c1a815b73ab src/share/vm/oops/klass.cpp
---- a/src/share/vm/oops/klass.cpp	Mon Dec 07 17:08:29 2015 -0800
-+++ b/src/share/vm/oops/klass.cpp	Mon Dec 07 17:11:00 2015 -0800
+diff --git a/src/share/vm/oops/klass.cpp b/src/share/vm/oops/klass.cpp
+index 2e3d192..a889458 100644
+--- a/src/share/vm/oops/klass.cpp
++++ b/src/share/vm/oops/klass.cpp
 @@ -188,6 +188,7 @@
  
    set_redefinition_flags(Klass::NoRedefinition);
@@ -167,9 +210,10 @@ diff -r 5c1a815b73ab src/share/vm/oops/klass.cpp
      int sup_depth = sup->super_depth();
      juint my_depth  = MIN2(sup_depth + 1, (int)primary_super_limit());
      if (!can_be_primary_super_slow())
-diff -r 5c1a815b73ab src/share/vm/oops/klass.hpp
---- a/src/share/vm/oops/klass.hpp	Mon Dec 07 17:08:29 2015 -0800
-+++ b/src/share/vm/oops/klass.hpp	Mon Dec 07 17:11:00 2015 -0800
+diff --git a/src/share/vm/oops/klass.hpp b/src/share/vm/oops/klass.hpp
+index e3fc3bd..c5fc46d 100644
+--- a/src/share/vm/oops/klass.hpp
++++ b/src/share/vm/oops/klass.hpp
 @@ -177,6 +177,7 @@
    bool        _original_field_offsets_changed; // Did the original field offsets of this class change during class redefinition?
    int *       _update_information;     // Update information
@@ -188,9 +232,10 @@ diff -r 5c1a815b73ab src/share/vm/oops/klass.hpp
    // Revision number for redefined classes, -1 for originally loaded classes
    bool was_redefined() const            { return _revision_number != -1; }
    jint revision_number() const          { return _revision_number; }
-diff -r 5c1a815b73ab src/share/vm/prims/jvmtiRedefineClasses2.cpp
---- a/src/share/vm/prims/jvmtiRedefineClasses2.cpp	Mon Dec 07 17:08:29 2015 -0800
-+++ b/src/share/vm/prims/jvmtiRedefineClasses2.cpp	Mon Dec 07 17:11:00 2015 -0800
+diff --git a/src/share/vm/prims/jvmtiRedefineClasses2.cpp b/src/share/vm/prims/jvmtiRedefineClasses2.cpp
+index f545b98..4fad1cb 100644
+--- a/src/share/vm/prims/jvmtiRedefineClasses2.cpp
++++ b/src/share/vm/prims/jvmtiRedefineClasses2.cpp
 @@ -443,6 +443,8 @@
  
      new_class->set_redefinition_flags(redefinition_flags);
@@ -200,7 +245,7 @@ diff -r 5c1a815b73ab src/share/vm/prims/jvmtiRedefineClasses2.cpp
      _max_redefinition_flags = _max_redefinition_flags | redefinition_flags;
  
      if ((redefinition_flags & Klass::ModifyInstances) != 0) {
-@@ -1568,7 +1570,10 @@
+@@ -1572,7 +1574,10 @@
    if (0 && JvmtiExport::all_dependencies_are_recorded()) {
      Universe::flush_evol_dependents_on(k_h);
    } else {
@@ -212,10 +257,11 @@ diff -r 5c1a815b73ab src/share/vm/prims/jvmtiRedefineClasses2.cpp
  
      ResourceMark rm(THREAD);
      DeoptimizationMarker dm;
-diff -r 5c1a815b73ab src/share/vm/runtime/globals.hpp
---- a/src/share/vm/runtime/globals.hpp	Mon Dec 07 17:08:29 2015 -0800
-+++ b/src/share/vm/runtime/globals.hpp	Mon Dec 07 17:11:00 2015 -0800
-@@ -3947,7 +3947,15 @@
+diff --git a/src/share/vm/runtime/globals.hpp b/src/share/vm/runtime/globals.hpp
+index 9a51218..b8ca7bb 100644
+--- a/src/share/vm/runtime/globals.hpp
++++ b/src/share/vm/runtime/globals.hpp
+@@ -3962,7 +3962,16 @@
                                                                              \
    product_pd(bool, PreserveFramePointer,                                    \
               "Use the FP register for holding the frame pointer "           \
@@ -223,11 +269,12 @@ diff -r 5c1a815b73ab src/share/vm/runtime/globals.hpp
 +             "and not as a general purpose register.")                      \
 +                                                                            \
 +  product(ccstr, HotswapDeoptClassPath, NULL,                               \
-+          "Class path or fragment of the class path to a folder with "      \
-+          "classes allowed to be deoptimized on hotswap. If is not "        \
-+          "defined then all classes will be deoptimized on hotswap. "       \
-+          "That's default behaviour. Using this option the performance "    \
-+          "of hotswap can be considerably increased. ")
++          "Comma separated list of packages containing classes that are "   \
++          "expected to be redefined. If com.sun.proxy is used by "          \
++          "application and proxied class is redefined, then this option "   \
++          "should contain 'com.sun.proxy'. If the option is not defined, "  \
++          "then all classes will be deoptimized on hotswap. Using this "    \
++          "option improves hotswap performance. ")
 +
  
  /*
diff --git a/debian/patches/series b/debian/patches/series
index 8564ee9..bc1fed6 100644
--- a/debian/patches/series
+++ b/debian/patches/series
@@ -4,5 +4,6 @@ gc-java8u40.patch
 dmh-field-accessors-java8u40.patch
 JVM_SetVmMemoryPressure.patch
 light-jdk8u92-b14.patch
+jvmti-getLoadedClasses-java8.patch
 light-jdk8u66-b17-deopt-cp.patch
 dont-clear-f1.patch

-- 
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-java/openjdk-8-jre-dcevm.git



More information about the pkg-java-commits mailing list