diff --git a/8157306-pr3121-rh1360863.patch b/8157306-pr3121-rh1360863.patch new file mode 100644 index 0000000..8cb69ae --- /dev/null +++ b/8157306-pr3121-rh1360863.patch @@ -0,0 +1,29 @@ +# HG changeset patch +# User aph +# Date 1470065634 -3600 +# Mon Aug 01 16:33:54 2016 +0100 +# Node ID ee9bffb3bd390b2ad805c7b59d7d2ab8a68a4367 +# Parent ab3e0bde3c15bbba60de4decabcd70ffef657448 +8157306, PR3121: Random infrequent null pointer exceptions in javac +Reviewed-by: kvn + +diff -r ab3e0bde3c15 -r ee9bffb3bd39 src/share/vm/opto/lcm.cpp +--- openjdk/hotspot/src/share/vm/opto/lcm.cpp Tue Jul 26 04:42:03 2016 +0100 ++++ openjdk/hotspot/src/share/vm/opto/lcm.cpp Mon Aug 01 16:33:54 2016 +0100 +@@ -1090,11 +1090,14 @@ + Block *sb = block->_succs[i]; + // Clone the entire area; ignoring the edge fixup for now. + for( uint j = end; j > beg; j-- ) { +- // It is safe here to clone a node with anti_dependence +- // since clones dominate on each path. + Node *clone = block->get_node(j-1)->clone(); + sb->insert_node(clone, 1); + map_node_to_block(clone, sb); ++#ifdef AARCH64 ++ if (clone->needs_anti_dependence_check()) { ++ insert_anti_dependences(sb, clone); ++ } ++#endif + } + } + diff --git a/hotspot-1358661.patch b/8162384-pr3122-rh1358661.patch similarity index 72% rename from hotspot-1358661.patch rename to 8162384-pr3122-rh1358661.patch index fd986c9..ff38413 100644 --- a/hotspot-1358661.patch +++ b/8162384-pr3122-rh1358661.patch @@ -1,6 +1,17 @@ ---- openjdk/hotspot/src/share/vm/opto/doCall.cpp 2016-07-22 11:32:42.953343258 +0200 -+++ openjdk/hotspot/src/share/vm/opto/doCall.cpp 2016-07-22 11:32:39.209369543 +0200 -@@ -209,16 +209,22 @@ +# HG changeset patch +# User roland +# Date 1469615613 -7200 +# Wed Jul 27 12:33:33 2016 +0200 +# Node ID fd29eff8b797daa41a68394ced7fe80c9e8c96e9 +# Parent ee9bffb3bd390b2ad805c7b59d7d2ab8a68a4367 +8162384, PR3122: Performance regression: bimorphic inlining may be bypassed by type speculation +Summary: when speculation fails at a call fallback to profile data at the call site +Reviewed-by: kvn + +diff -r ee9bffb3bd39 -r fd29eff8b797 src/share/vm/opto/doCall.cpp +--- openjdk/hotspot/src/share/vm/opto/doCall.cpp Mon Aug 01 16:33:54 2016 +0100 ++++ openjdk/hotspot/src/share/vm/opto/doCall.cpp Wed Jul 27 12:33:33 2016 +0200 +@@ -205,16 +205,22 @@ int morphism = profile.morphism(); if (speculative_receiver_type != NULL) { @@ -11,7 +22,6 @@ - receiver_method = callee->resolve_invoke(jvms->method()->holder(), - speculative_receiver_type); - if (receiver_method == NULL) { -- speculative_receiver_type = NULL; + if (!too_many_traps(caller, bci, Deoptimization::Reason_speculate_class_check)) { + // We have a speculative type, we should be able to resolve + // the call. We do that before looking at the profiling at @@ -24,15 +34,16 @@ + } else { + morphism = 1; + } - } else { -- morphism = 1; ++ } else { + // speculation failed before. Use profiling at the call + // (could allow bimorphic inlining for instance). -+ speculative_receiver_type = NULL; + speculative_receiver_type = NULL; +- } else { +- morphism = 1; } } if (receiver_method == NULL && -@@ -255,7 +261,7 @@ +@@ -252,7 +258,7 @@ Deoptimization::Reason_bimorphic : (speculative_receiver_type == NULL ? Deoptimization::Reason_class_check : Deoptimization::Reason_speculate_class_check); if ((morphism == 1 || (morphism == 2 && next_hit_cg != NULL)) && diff --git a/hotspot-8157306.changeset b/hotspot-8157306.changeset deleted file mode 100644 index 95f30eb..0000000 --- a/hotspot-8157306.changeset +++ /dev/null @@ -1,55 +0,0 @@ -# HG changeset patch -# User aph -# Date 1466704739 0 -# Thu Jun 23 17:58:59 2016 +0000 -# Node ID 89b3911c92aef18f2fd24ab4a31fbb47954462fa -# Parent 9febe12cbce4c6aa428a78f6a78906909e2954a4 -8157306: Random infrequent null pointer exceptions in javac -Reviewed-by: kvn - -diff --git openjdk/hotspot/src/share/vm/opto/block.cpp b/src/share/vm/opto/block.cpp ---- openjdk/hotspot/src/share/vm/opto/block.cpp -+++ openjdk/hotspot/src/share/vm/opto/block.cpp -@@ -1212,6 +1212,9 @@ - if (j >= 1 && n->is_Mach() && n->as_Mach()->ideal_Opcode() == Op_CreateEx) { - assert(j == 1 || block->get_node(j-1)->is_Phi(), "CreateEx must be first instruction in block"); - } -+ if (n->needs_anti_dependence_check()) { -+ verify_anti_dependences(block, n); -+ } - for (uint k = 0; k < n->req(); k++) { - Node *def = n->in(k); - if (def && def != n) { -diff --git a/src/share/vm/opto/block.hpp b/src/share/vm/opto/block.hpp ---- openjdk/hotspot/src/share/vm/opto/block.hpp -+++ openjdk/hotspot/src/share/vm/opto/block.hpp -@@ -481,9 +481,9 @@ - MachNode* _goto; - - Block* insert_anti_dependences(Block* LCA, Node* load, bool verify = false); -- void verify_anti_dependences(Block* LCA, Node* load) { -+ void verify_anti_dependences(Block* LCA, Node* load) const { - assert(LCA == get_block_for_node(load), "should already be scheduled"); -- insert_anti_dependences(LCA, load, true); -+ const_cast(this)->insert_anti_dependences(LCA, load, true); - } - - bool move_to_next(Block* bx, uint b_index); -diff --git a/src/share/vm/opto/lcm.cpp b/src/share/vm/opto/lcm.cpp ---- openjdk/hotspot/src/share/vm/opto/lcm.cpp -+++ openjdk/hotspot/src/share/vm/opto/lcm.cpp -@@ -1293,11 +1293,12 @@ - Block *sb = block->_succs[i]; - // Clone the entire area; ignoring the edge fixup for now. - for( uint j = end; j > beg; j-- ) { -- // It is safe here to clone a node with anti_dependence -- // since clones dominate on each path. - Node *clone = block->get_node(j-1)->clone(); - sb->insert_node(clone, 1); - map_node_to_block(clone, sb); -+ if (clone->needs_anti_dependence_check()) { -+ insert_anti_dependences(sb, clone); -+ } - } - } - diff --git a/java-1.8.0-openjdk.spec b/java-1.8.0-openjdk.spec index c53ddfa..3922ab7 100644 --- a/java-1.8.0-openjdk.spec +++ b/java-1.8.0-openjdk.spec @@ -785,7 +785,7 @@ Obsoletes: java-1.7.0-openjdk-accessibility%1 Name: java-%{javaver}-%{origin} Version: %{javaver}.%{updatever} -Release: 2.%{buildver}%{?dist} +Release: 3.%{buildver}%{?dist} # java-1.5.0-ibm from jpackage.org set Epoch to 1 for unknown reasons, # and this change was brought into RHEL-4. java-1.5.0-ibm packages # also included the epoch in their virtual provides. This created a @@ -915,6 +915,10 @@ Patch524: 8158260-pr2991-rh1341258.patch Patch400: 8154313.patch # S6260348, PR3066: GTK+ L&F JTextComponent not respecting desktop caret blink rate Patch526: 6260348-pr3066.patch +# S8157306, PR3121, RH1360863: Random infrequent null pointer exceptions in javac +Patch531: 8157306-pr3121-rh1360863.patch +# S8162384, PR3122, RH1358661: Performance regression: bimorphic inlining may be bypassed by type speculation +Patch532: 8162384-pr3122-rh1358661.patch # Patches upstream and appearing in 8u102 # S8148752, PR2943, RH1330188: Compiled StringBuilder code throws StringIndexOutOfBoundsException @@ -937,8 +941,6 @@ Patch606: 8154210.patch Patch201: system-libjpeg.patch # Local fixes -Patch531: hotspot-8157306.changeset -Patch532: hotspot-1358661.patch # PR1834, RH1022017: Reduce curves reported by SSL to those in NSS Patch525: pr1834-rh1022017.patch # Temporary fix for typo in CORBA security patch @@ -946,6 +948,7 @@ Patch529: corba_typo_fix.patch # Non-OpenJDK fixes Patch300: jstack-pr1845.patch +# PR3090, RH1204159: SystemTap is heavily confused by multiple JDKs Patch301: bz1204159_java8.patch BuildRequires: autoconf @@ -1279,9 +1282,7 @@ sh %{SOURCE12} %patch527 %patch528 %patch529 -%ifarch %{aarch64} %patch531 -%endif %patch532 # Extract systemtap tapsets @@ -1872,6 +1873,12 @@ require "copy_jdk_configs.lua" %endif %changelog +* Mon Aug 01 2016 Andrew Hughes - 1:1.8.0.101-3.b14 +- Replace patch for S8162384 with upstream version. Document correctly along with SystemTap RH1204159 patch. +- Resolves: rhbz#1358661 +- Replace patch for S8157306 with upstream version, documented & applied on all archs with conditional in patch +- Resolves: rhbz#1360863 + * Mon Jul 25 2016 jvanek - 1:1.8.0.101-2.b14 - added patch532 hotspot-1358661.patch - to fix performance of bimorphic inlining may be bypassed by type speculation - added patch301 bz1204159_java8.patch - to fix systemtap on multiple jdks