diff --git a/.gitignore b/.gitignore index 0243d89..352ad02 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,3 @@ -SOURCES/aarch64-port-jdk8u-aarch64-jdk8u161-b14.tar.xz -SOURCES/aarch64-port-jdk8u-shenandoah-aarch64-shenandoah-jdk8u161-b14.tar.xz +SOURCES/aarch64-port-jdk8u-aarch64-jdk8u171-b10.tar.xz +SOURCES/aarch64-port-jdk8u-shenandoah-aarch64-shenandoah-jdk8u171-b10.tar.xz SOURCES/systemtap-tapset-3.6.0pre02.tar.xz diff --git a/.java-1.8.0-openjdk.metadata b/.java-1.8.0-openjdk.metadata index fc1e168..cea28e2 100644 --- a/.java-1.8.0-openjdk.metadata +++ b/.java-1.8.0-openjdk.metadata @@ -1,3 +1,3 @@ -ae6f689f6421cdbd586de3893bdd49fa50df1b1c SOURCES/aarch64-port-jdk8u-aarch64-jdk8u161-b14.tar.xz -1244a5e1e9a145b07b9471dead7dee11ace28769 SOURCES/aarch64-port-jdk8u-shenandoah-aarch64-shenandoah-jdk8u161-b14.tar.xz +bd45b710f206655a2ebd28bb5ead4828bea91283 SOURCES/aarch64-port-jdk8u-aarch64-jdk8u171-b10.tar.xz +3f7ceb60083fe24e530650802a654ce049435609 SOURCES/aarch64-port-jdk8u-shenandoah-aarch64-shenandoah-jdk8u171-b10.tar.xz 93bca27ce5eeeb2bc1f6f3cd4ffe34c3567a3c73 SOURCES/systemtap-tapset-3.6.0pre02.tar.xz diff --git a/SOURCES/8145913-pr3466-rh1498309.patch b/SOURCES/8145913-pr3466-rh1498309.patch deleted file mode 100644 index 11487b2..0000000 --- a/SOURCES/8145913-pr3466-rh1498309.patch +++ /dev/null @@ -1,472 +0,0 @@ -# HG changeset patch -# User mdoerr -# Date 1507750779 -3600 -# Wed Oct 11 20:39:39 2017 +0100 -# Node ID 92f0dbe76a13992cc27188e0f68e4b1771c7004a -# Parent 542c122b1d7d30c29189565248074aa28f21ae58 -8145913, PR3466, RH1498309: PPC64: add Montgomery multiply intrinsic -Reviewed-by: aph, goetz - -diff --git a/src/cpu/ppc/vm/assembler_ppc.hpp b/src/cpu/ppc/vm/assembler_ppc.hpp ---- openjdk/hotspot/src/cpu/ppc/vm/assembler_ppc.hpp -+++ openjdk/hotspot/src/cpu/ppc/vm/assembler_ppc.hpp -@@ -1179,6 +1179,8 @@ - inline void mullw_( Register d, Register a, Register b); - inline void mulhw( Register d, Register a, Register b); - inline void mulhw_( Register d, Register a, Register b); -+ inline void mulhwu( Register d, Register a, Register b); -+ inline void mulhwu_(Register d, Register a, Register b); - inline void mulhd( Register d, Register a, Register b); - inline void mulhd_( Register d, Register a, Register b); - inline void mulhdu( Register d, Register a, Register b); -diff --git a/src/cpu/ppc/vm/assembler_ppc.inline.hpp b/src/cpu/ppc/vm/assembler_ppc.inline.hpp ---- openjdk/hotspot/src/cpu/ppc/vm/assembler_ppc.inline.hpp -+++ openjdk/hotspot/src/cpu/ppc/vm/assembler_ppc.inline.hpp -@@ -109,6 +109,8 @@ - inline void Assembler::mullw_( Register d, Register a, Register b) { emit_int32(MULLW_OPCODE | rt(d) | ra(a) | rb(b) | oe(0) | rc(1)); } - inline void Assembler::mulhw( Register d, Register a, Register b) { emit_int32(MULHW_OPCODE | rt(d) | ra(a) | rb(b) | rc(0)); } - inline void Assembler::mulhw_( Register d, Register a, Register b) { emit_int32(MULHW_OPCODE | rt(d) | ra(a) | rb(b) | rc(1)); } -+inline void Assembler::mulhwu( Register d, Register a, Register b) { emit_int32(MULHWU_OPCODE | rt(d) | ra(a) | rb(b) | rc(0)); } -+inline void Assembler::mulhwu_(Register d, Register a, Register b) { emit_int32(MULHWU_OPCODE | rt(d) | ra(a) | rb(b) | rc(1)); } - inline void Assembler::mulhd( Register d, Register a, Register b) { emit_int32(MULHD_OPCODE | rt(d) | ra(a) | rb(b) | rc(0)); } - inline void Assembler::mulhd_( Register d, Register a, Register b) { emit_int32(MULHD_OPCODE | rt(d) | ra(a) | rb(b) | rc(1)); } - inline void Assembler::mulhdu( Register d, Register a, Register b) { emit_int32(MULHDU_OPCODE | rt(d) | ra(a) | rb(b) | rc(0)); } -diff --git a/src/cpu/ppc/vm/c2_init_ppc.cpp b/src/cpu/ppc/vm/c2_init_ppc.cpp ---- openjdk/hotspot/src/cpu/ppc/vm/c2_init_ppc.cpp -+++ openjdk/hotspot/src/cpu/ppc/vm/c2_init_ppc.cpp -@@ -45,4 +45,10 @@ - FLAG_SET_ERGO(bool, InsertEndGroupPPC64, true); - } - } -+ -+ if (OptimizeFill) { -+ warning("OptimizeFill is not supported on this CPU."); -+ FLAG_SET_DEFAULT(OptimizeFill, false); -+ } -+ - } -diff --git a/src/cpu/ppc/vm/sharedRuntime_ppc.cpp b/src/cpu/ppc/vm/sharedRuntime_ppc.cpp ---- openjdk/hotspot/src/cpu/ppc/vm/sharedRuntime_ppc.cpp -+++ openjdk/hotspot/src/cpu/ppc/vm/sharedRuntime_ppc.cpp -@@ -42,6 +42,8 @@ - #include "opto/runtime.hpp" - #endif - -+#include -+ - #define __ masm-> - - #ifdef PRODUCT -@@ -3269,3 +3271,245 @@ - return RuntimeStub::new_runtime_stub(name, &buffer, frame_complete, frame_size_in_bytes/wordSize, - oop_maps, true); - } -+ -+ -+//------------------------------Montgomery multiplication------------------------ -+// -+ -+// Subtract 0:b from carry:a. Return carry. -+static unsigned long -+sub(unsigned long a[], unsigned long b[], unsigned long carry, long len) { -+ long i = 0; -+ unsigned long tmp, tmp2; -+ __asm__ __volatile__ ( -+ "subfc %[tmp], %[tmp], %[tmp] \n" // pre-set CA -+ "mtctr %[len] \n" -+ "0: \n" -+ "ldx %[tmp], %[i], %[a] \n" -+ "ldx %[tmp2], %[i], %[b] \n" -+ "subfe %[tmp], %[tmp2], %[tmp] \n" // subtract extended -+ "stdx %[tmp], %[i], %[a] \n" -+ "addi %[i], %[i], 8 \n" -+ "bdnz 0b \n" -+ "addme %[tmp], %[carry] \n" // carry + CA - 1 -+ : [i]"+b"(i), [tmp]"=&r"(tmp), [tmp2]"=&r"(tmp2) -+ : [a]"r"(a), [b]"r"(b), [carry]"r"(carry), [len]"r"(len) -+ : "ctr", "xer", "memory" -+ ); -+ return tmp; -+} -+ -+// Multiply (unsigned) Long A by Long B, accumulating the double- -+// length result into the accumulator formed of T0, T1, and T2. -+inline void MACC(unsigned long A, unsigned long B, unsigned long &T0, unsigned long &T1, unsigned long &T2) { -+ unsigned long hi, lo; -+ __asm__ __volatile__ ( -+ "mulld %[lo], %[A], %[B] \n" -+ "mulhdu %[hi], %[A], %[B] \n" -+ "addc %[T0], %[T0], %[lo] \n" -+ "adde %[T1], %[T1], %[hi] \n" -+ "addze %[T2], %[T2] \n" -+ : [hi]"=&r"(hi), [lo]"=&r"(lo), [T0]"+r"(T0), [T1]"+r"(T1), [T2]"+r"(T2) -+ : [A]"r"(A), [B]"r"(B) -+ : "xer" -+ ); -+} -+ -+// As above, but add twice the double-length result into the -+// accumulator. -+inline void MACC2(unsigned long A, unsigned long B, unsigned long &T0, unsigned long &T1, unsigned long &T2) { -+ unsigned long hi, lo; -+ __asm__ __volatile__ ( -+ "mulld %[lo], %[A], %[B] \n" -+ "mulhdu %[hi], %[A], %[B] \n" -+ "addc %[T0], %[T0], %[lo] \n" -+ "adde %[T1], %[T1], %[hi] \n" -+ "addze %[T2], %[T2] \n" -+ "addc %[T0], %[T0], %[lo] \n" -+ "adde %[T1], %[T1], %[hi] \n" -+ "addze %[T2], %[T2] \n" -+ : [hi]"=&r"(hi), [lo]"=&r"(lo), [T0]"+r"(T0), [T1]"+r"(T1), [T2]"+r"(T2) -+ : [A]"r"(A), [B]"r"(B) -+ : "xer" -+ ); -+} -+ -+// Fast Montgomery multiplication. The derivation of the algorithm is -+// in "A Cryptographic Library for the Motorola DSP56000, -+// Dusse and Kaliski, Proc. EUROCRYPT 90, pp. 230-237". -+static void -+montgomery_multiply(unsigned long a[], unsigned long b[], unsigned long n[], -+ unsigned long m[], unsigned long inv, int len) { -+ unsigned long t0 = 0, t1 = 0, t2 = 0; // Triple-precision accumulator -+ int i; -+ -+ assert(inv * n[0] == -1UL, "broken inverse in Montgomery multiply"); -+ -+ for (i = 0; i < len; i++) { -+ int j; -+ for (j = 0; j < i; j++) { -+ MACC(a[j], b[i-j], t0, t1, t2); -+ MACC(m[j], n[i-j], t0, t1, t2); -+ } -+ MACC(a[i], b[0], t0, t1, t2); -+ m[i] = t0 * inv; -+ MACC(m[i], n[0], t0, t1, t2); -+ -+ assert(t0 == 0, "broken Montgomery multiply"); -+ -+ t0 = t1; t1 = t2; t2 = 0; -+ } -+ -+ for (i = len; i < 2*len; i++) { -+ int j; -+ for (j = i-len+1; j < len; j++) { -+ MACC(a[j], b[i-j], t0, t1, t2); -+ MACC(m[j], n[i-j], t0, t1, t2); -+ } -+ m[i-len] = t0; -+ t0 = t1; t1 = t2; t2 = 0; -+ } -+ -+ while (t0) { -+ t0 = sub(m, n, t0, len); -+ } -+} -+ -+// Fast Montgomery squaring. This uses asymptotically 25% fewer -+// multiplies so it should be up to 25% faster than Montgomery -+// multiplication. However, its loop control is more complex and it -+// may actually run slower on some machines. -+static void -+montgomery_square(unsigned long a[], unsigned long n[], -+ unsigned long m[], unsigned long inv, int len) { -+ unsigned long t0 = 0, t1 = 0, t2 = 0; // Triple-precision accumulator -+ int i; -+ -+ assert(inv * n[0] == -1UL, "broken inverse in Montgomery multiply"); -+ -+ for (i = 0; i < len; i++) { -+ int j; -+ int end = (i+1)/2; -+ for (j = 0; j < end; j++) { -+ MACC2(a[j], a[i-j], t0, t1, t2); -+ MACC(m[j], n[i-j], t0, t1, t2); -+ } -+ if ((i & 1) == 0) { -+ MACC(a[j], a[j], t0, t1, t2); -+ } -+ for (; j < i; j++) { -+ MACC(m[j], n[i-j], t0, t1, t2); -+ } -+ m[i] = t0 * inv; -+ MACC(m[i], n[0], t0, t1, t2); -+ -+ assert(t0 == 0, "broken Montgomery square"); -+ -+ t0 = t1; t1 = t2; t2 = 0; -+ } -+ -+ for (i = len; i < 2*len; i++) { -+ int start = i-len+1; -+ int end = start + (len - start)/2; -+ int j; -+ for (j = start; j < end; j++) { -+ MACC2(a[j], a[i-j], t0, t1, t2); -+ MACC(m[j], n[i-j], t0, t1, t2); -+ } -+ if ((i & 1) == 0) { -+ MACC(a[j], a[j], t0, t1, t2); -+ } -+ for (; j < len; j++) { -+ MACC(m[j], n[i-j], t0, t1, t2); -+ } -+ m[i-len] = t0; -+ t0 = t1; t1 = t2; t2 = 0; -+ } -+ -+ while (t0) { -+ t0 = sub(m, n, t0, len); -+ } -+} -+ -+// The threshold at which squaring is advantageous was determined -+// experimentally on an i7-3930K (Ivy Bridge) CPU @ 3.5GHz. -+// Doesn't seem to be relevant for Power8 so we use the same value. -+#define MONTGOMERY_SQUARING_THRESHOLD 64 -+ -+// Copy len longwords from s to d, word-swapping as we go. The -+// destination array is reversed. -+static void reverse_words(unsigned long *s, unsigned long *d, int len) { -+ d += len; -+ while(len-- > 0) { -+ d--; -+ unsigned long s_val = *s; -+ // Swap words in a longword on little endian machines. -+#ifdef VM_LITTLE_ENDIAN -+ s_val = (s_val << 32) | (s_val >> 32); -+#endif -+ *d = s_val; -+ s++; -+ } -+} -+ -+void SharedRuntime::montgomery_multiply(jint *a_ints, jint *b_ints, jint *n_ints, -+ jint len, jlong inv, -+ jint *m_ints) { -+ assert(len % 2 == 0, "array length in montgomery_multiply must be even"); -+ int longwords = len/2; -+ assert(longwords > 0, "unsupported"); -+ -+ // Make very sure we don't use so much space that the stack might -+ // overflow. 512 jints corresponds to an 16384-bit integer and -+ // will use here a total of 8k bytes of stack space. -+ int total_allocation = longwords * sizeof (unsigned long) * 4; -+ guarantee(total_allocation <= 8192, "must be"); -+ unsigned long *scratch = (unsigned long *)alloca(total_allocation); -+ -+ // Local scratch arrays -+ unsigned long -+ *a = scratch + 0 * longwords, -+ *b = scratch + 1 * longwords, -+ *n = scratch + 2 * longwords, -+ *m = scratch + 3 * longwords; -+ -+ reverse_words((unsigned long *)a_ints, a, longwords); -+ reverse_words((unsigned long *)b_ints, b, longwords); -+ reverse_words((unsigned long *)n_ints, n, longwords); -+ -+ ::montgomery_multiply(a, b, n, m, (unsigned long)inv, longwords); -+ -+ reverse_words(m, (unsigned long *)m_ints, longwords); -+} -+ -+void SharedRuntime::montgomery_square(jint *a_ints, jint *n_ints, -+ jint len, jlong inv, -+ jint *m_ints) { -+ assert(len % 2 == 0, "array length in montgomery_square must be even"); -+ int longwords = len/2; -+ assert(longwords > 0, "unsupported"); -+ -+ // Make very sure we don't use so much space that the stack might -+ // overflow. 512 jints corresponds to an 16384-bit integer and -+ // will use here a total of 6k bytes of stack space. -+ int total_allocation = longwords * sizeof (unsigned long) * 3; -+ guarantee(total_allocation <= 8192, "must be"); -+ unsigned long *scratch = (unsigned long *)alloca(total_allocation); -+ -+ // Local scratch arrays -+ unsigned long -+ *a = scratch + 0 * longwords, -+ *n = scratch + 1 * longwords, -+ *m = scratch + 2 * longwords; -+ -+ reverse_words((unsigned long *)a_ints, a, longwords); -+ reverse_words((unsigned long *)n_ints, n, longwords); -+ -+ if (len >= MONTGOMERY_SQUARING_THRESHOLD) { -+ ::montgomery_square(a, n, m, (unsigned long)inv, longwords); -+ } else { -+ ::montgomery_multiply(a, a, n, m, (unsigned long)inv, longwords); -+ } -+ -+ reverse_words(m, (unsigned long *)m_ints, longwords); -+} -diff --git a/src/cpu/ppc/vm/stubGenerator_ppc.cpp b/src/cpu/ppc/vm/stubGenerator_ppc.cpp ---- openjdk/hotspot/src/cpu/ppc/vm/stubGenerator_ppc.cpp -+++ openjdk/hotspot/src/cpu/ppc/vm/stubGenerator_ppc.cpp -@@ -2518,6 +2518,15 @@ - generate_safefetch("SafeFetchN", sizeof(intptr_t), &StubRoutines::_safefetchN_entry, - &StubRoutines::_safefetchN_fault_pc, - &StubRoutines::_safefetchN_continuation_pc); -+ -+ if (UseMontgomeryMultiplyIntrinsic) { -+ StubRoutines::_montgomeryMultiply -+ = CAST_FROM_FN_PTR(address, SharedRuntime::montgomery_multiply); -+ } -+ if (UseMontgomerySquareIntrinsic) { -+ StubRoutines::_montgomerySquare -+ = CAST_FROM_FN_PTR(address, SharedRuntime::montgomery_square); -+ } - - if (UseAESIntrinsics) { - StubRoutines::_aescrypt_encryptBlock = generate_aescrypt_encryptBlock(); -diff --git a/src/cpu/ppc/vm/templateInterpreter_ppc.cpp b/src/cpu/ppc/vm/templateInterpreter_ppc.cpp ---- openjdk/hotspot/src/cpu/ppc/vm/templateInterpreter_ppc.cpp -+++ openjdk/hotspot/src/cpu/ppc/vm/templateInterpreter_ppc.cpp -@@ -265,7 +265,7 @@ - __ cmpdi(CCR0, Rmdo, 0); - __ beq(CCR0, no_mdo); - -- // Increment backedge counter in the MDO. -+ // Increment invocation counter in the MDO. - const int mdo_bc_offs = in_bytes(MethodData::backedge_counter_offset()) + in_bytes(InvocationCounter::counter_offset()); - __ lwz(Rscratch2, mdo_bc_offs, Rmdo); - __ addi(Rscratch2, Rscratch2, increment); -@@ -277,12 +277,12 @@ - } - - // Increment counter in MethodCounters*. -- const int mo_bc_offs = in_bytes(MethodCounters::backedge_counter_offset()) + in_bytes(InvocationCounter::counter_offset()); -+ const int mo_ic_offs = in_bytes(MethodCounters::invocation_counter_offset()) + in_bytes(InvocationCounter::counter_offset()); - __ bind(no_mdo); - __ get_method_counters(R19_method, R3_counters, done); -- __ lwz(Rscratch2, mo_bc_offs, R3_counters); -+ __ lwz(Rscratch2, mo_ic_offs, R3_counters); - __ addi(Rscratch2, Rscratch2, increment); -- __ stw(Rscratch2, mo_bc_offs, R3_counters); -+ __ stw(Rscratch2, mo_ic_offs, R3_counters); - __ load_const_optimized(Rscratch1, mask, R0); - __ and_(Rscratch1, Rscratch2, Rscratch1); - __ beq(CCR0, *overflow); -diff --git a/src/cpu/ppc/vm/vm_version_ppc.cpp b/src/cpu/ppc/vm/vm_version_ppc.cpp ---- openjdk/hotspot/src/cpu/ppc/vm/vm_version_ppc.cpp -+++ openjdk/hotspot/src/cpu/ppc/vm/vm_version_ppc.cpp -@@ -177,6 +177,12 @@ - FLAG_SET_DEFAULT(UseSHA512Intrinsics, false); - } - -+ if (FLAG_IS_DEFAULT(UseMontgomeryMultiplyIntrinsic)) { -+ UseMontgomeryMultiplyIntrinsic = true; -+ } -+ if (FLAG_IS_DEFAULT(UseMontgomerySquareIntrinsic)) { -+ UseMontgomerySquareIntrinsic = true; -+ } - } - - void VM_Version::print_features() { -diff --git a/src/share/vm/opto/library_call.cpp b/src/share/vm/opto/library_call.cpp ---- openjdk/hotspot/src/share/vm/opto/library_call.cpp -+++ openjdk/hotspot/src/share/vm/opto/library_call.cpp -@@ -6031,11 +6031,21 @@ - Node* n_start = array_element_address(n, intcon(0), n_elem); - Node* m_start = array_element_address(m, intcon(0), m_elem); - -- Node* call = make_runtime_call(RC_LEAF, -- OptoRuntime::montgomeryMultiply_Type(), -- stubAddr, stubName, TypePtr::BOTTOM, -- a_start, b_start, n_start, len, inv, top(), -- m_start); -+ Node* call = NULL; -+ if (CCallingConventionRequiresIntsAsLongs) { -+ Node* len_I2L = ConvI2L(len); -+ call = make_runtime_call(RC_LEAF, -+ OptoRuntime::montgomeryMultiply_Type(), -+ stubAddr, stubName, TypePtr::BOTTOM, -+ a_start, b_start, n_start, len_I2L XTOP, inv, -+ top(), m_start); -+ } else { -+ call = make_runtime_call(RC_LEAF, -+ OptoRuntime::montgomeryMultiply_Type(), -+ stubAddr, stubName, TypePtr::BOTTOM, -+ a_start, b_start, n_start, len, inv, top(), -+ m_start); -+ } - set_result(m); - } - -@@ -6085,11 +6095,22 @@ - Node* n_start = array_element_address(n, intcon(0), n_elem); - Node* m_start = array_element_address(m, intcon(0), m_elem); - -- Node* call = make_runtime_call(RC_LEAF, -- OptoRuntime::montgomerySquare_Type(), -- stubAddr, stubName, TypePtr::BOTTOM, -- a_start, n_start, len, inv, top(), -- m_start); -+ Node* call = NULL; -+ if (CCallingConventionRequiresIntsAsLongs) { -+ Node* len_I2L = ConvI2L(len); -+ call = make_runtime_call(RC_LEAF, -+ OptoRuntime::montgomerySquare_Type(), -+ stubAddr, stubName, TypePtr::BOTTOM, -+ a_start, n_start, len_I2L XTOP, inv, top(), -+ m_start); -+ } else { -+ call = make_runtime_call(RC_LEAF, -+ OptoRuntime::montgomerySquare_Type(), -+ stubAddr, stubName, TypePtr::BOTTOM, -+ a_start, n_start, len, inv, top(), -+ m_start); -+ } -+ - set_result(m); - } - -diff --git a/src/share/vm/opto/runtime.cpp b/src/share/vm/opto/runtime.cpp ---- openjdk/hotspot/src/share/vm/opto/runtime.cpp -+++ openjdk/hotspot/src/share/vm/opto/runtime.cpp -@@ -1005,12 +1005,20 @@ - // create input type (domain) - int num_args = 7; - int argcnt = num_args; -+ if (CCallingConventionRequiresIntsAsLongs) { -+ argcnt++; // additional placeholder -+ } - const Type** fields = TypeTuple::fields(argcnt); - int argp = TypeFunc::Parms; - fields[argp++] = TypePtr::NOTNULL; // a - fields[argp++] = TypePtr::NOTNULL; // b - fields[argp++] = TypePtr::NOTNULL; // n -- fields[argp++] = TypeInt::INT; // len -+ if (CCallingConventionRequiresIntsAsLongs) { -+ fields[argp++] = TypeLong::LONG; // len -+ fields[argp++] = TypeLong::HALF; // placeholder -+ } else { -+ fields[argp++] = TypeInt::INT; // len -+ } - fields[argp++] = TypeLong::LONG; // inv - fields[argp++] = Type::HALF; - fields[argp++] = TypePtr::NOTNULL; // result -@@ -1029,11 +1037,19 @@ - // create input type (domain) - int num_args = 6; - int argcnt = num_args; -+ if (CCallingConventionRequiresIntsAsLongs) { -+ argcnt++; // additional placeholder -+ } - const Type** fields = TypeTuple::fields(argcnt); - int argp = TypeFunc::Parms; - fields[argp++] = TypePtr::NOTNULL; // a - fields[argp++] = TypePtr::NOTNULL; // n -- fields[argp++] = TypeInt::INT; // len -+ if (CCallingConventionRequiresIntsAsLongs) { -+ fields[argp++] = TypeLong::LONG; // len -+ fields[argp++] = TypeLong::HALF; // placeholder -+ } else { -+ fields[argp++] = TypeInt::INT; // len -+ } - fields[argp++] = TypeLong::LONG; // inv - fields[argp++] = Type::HALF; - fields[argp++] = TypePtr::NOTNULL; // result diff --git a/SOURCES/8168318-pr3466-rh1498320.patch b/SOURCES/8168318-pr3466-rh1498320.patch deleted file mode 100644 index 6ed9afb..0000000 --- a/SOURCES/8168318-pr3466-rh1498320.patch +++ /dev/null @@ -1,31 +0,0 @@ -# HG changeset patch -# User goetz -# Date 1477563748 -7200 -# Thu Oct 27 12:22:28 2016 +0200 -# Node ID 9b9d9e11c04d5e5f64829d34752e5c94b1c7d911 -# Parent 92f0dbe76a13992cc27188e0f68e4b1771c7004a -8168318, PR3466, RH1498320: PPC64: Use cmpldi instead of li/cmpld -Reviewed-by: goetz -Contributed-by: igor.nunes@eldorado.org.br - -diff --git a/src/cpu/ppc/vm/ppc.ad b/src/cpu/ppc/vm/ppc.ad ---- openjdk/hotspot/src/cpu/ppc/vm/ppc.ad -+++ openjdk/hotspot/src/cpu/ppc/vm/ppc.ad -@@ -10571,6 +10571,17 @@ - ins_pipe(pipe_class_compare); - %} - -+instruct cmpP_reg_null(flagsReg crx, iRegP_N2P src1, immP_0or1 src2) %{ -+ match(Set crx (CmpP src1 src2)); -+ format %{ "CMPLDI $crx, $src1, $src2 \t// ptr" %} -+ size(4); -+ ins_encode %{ -+ // TODO: PPC port $archOpcode(ppc64Opcode_cmpl); -+ __ cmpldi($crx$$CondRegister, $src1$$Register, (int)((short)($src2$$constant & 0xFFFF))); -+ %} -+ ins_pipe(pipe_class_compare); -+%} -+ - // Used in postalloc expand. - instruct cmpP_reg_imm16(flagsReg crx, iRegPsrc src1, immL16 src2) %{ - // This match rule prevents reordering of node before a safepoint. diff --git a/SOURCES/8170328-pr3466-rh1498321.patch b/SOURCES/8170328-pr3466-rh1498321.patch deleted file mode 100644 index d8751ee..0000000 --- a/SOURCES/8170328-pr3466-rh1498321.patch +++ /dev/null @@ -1,33 +0,0 @@ -# HG changeset patch -# User mdoerr -# Date 1480079712 7200 -# Fri Nov 25 11:15:12 2016 -0200 -# Node ID 3c499a0ba92b1affb3f473c6502e374f4785aba9 -# Parent 9b9d9e11c04d5e5f64829d34752e5c94b1c7d911 -8170328, PR3466, RH1498321: PPC64: Use andis instead of lis/and -Reviewed-by: goetz, mdoerr -Contributed-by: Igor Nunes - -diff --git a/src/cpu/ppc/vm/ppc.ad b/src/cpu/ppc/vm/ppc.ad ---- openjdk/hotspot/src/cpu/ppc/vm/ppc.ad -+++ openjdk/hotspot/src/cpu/ppc/vm/ppc.ad -@@ -8889,6 +8889,19 @@ - ins_pipe(pipe_class_default); - %} - -+// Left shifted Immediate And -+instruct andI_reg_immIhi16(iRegIdst dst, iRegIsrc src1, immIhi16 src2, flagsRegCR0 cr0) %{ -+ match(Set dst (AndI src1 src2)); -+ effect(KILL cr0); -+ format %{ "ANDIS $dst, $src1, $src2.hi" %} -+ size(4); -+ ins_encode %{ -+ // TODO: PPC port $archOpcode(ppc64Opcode_andis_); -+ __ andis_($dst$$Register, $src1$$Register, (int)((unsigned short)(($src2$$constant & 0xFFFF0000) >> 16))); -+ %} -+ ins_pipe(pipe_class_default); -+%} -+ - // Immediate And - instruct andI_reg_uimm16(iRegIdst dst, iRegIsrc src1, uimmI16 src2, flagsRegCR0 cr0) %{ - match(Set dst (AndI src1 src2)); diff --git a/SOURCES/8181055-pr3394-rh1448880.patch b/SOURCES/8181055-pr3394-rh1448880.patch deleted file mode 100644 index 593159d..0000000 --- a/SOURCES/8181055-pr3394-rh1448880.patch +++ /dev/null @@ -1,115 +0,0 @@ -# HG changeset patch -# User zgu -# Date 1496236768 14400 -# Wed May 31 09:19:28 2017 -0400 -# Node ID 8330ff7914ec54c46fd19300221f72d774423405 -# Parent 55a34e4962e10c822affe8f89273a87e84cade92 -8181055: PPC64: "mbind: Invalid argument" still seen after 8175813 -Summary: Use numa_interleave_memory v2 api when available -Reviewed-by: dholmes, shade - -diff -r 74c81011375b src/os/linux/vm/os_linux.cpp ---- openjdk/hotspot/src/os/linux/vm/os_linux.cpp Wed May 17 17:52:34 2017 -0400 -+++ openjdk/hotspot/src/os/linux/vm/os_linux.cpp Wed May 31 12:27:00 2017 -0400 -@@ -2819,11 +2819,8 @@ - extern "C" JNIEXPORT void numa_error(char *where) { } - extern "C" JNIEXPORT int fork1() { return fork(); } - -- --// If we are running with libnuma version > 2, then we should --// be trying to use symbols with versions 1.1 --// If we are running with earlier version, which did not have symbol versions, --// we should use the base version. -+// Handle request to load libnuma symbol version 1.1 (API v1). If it fails -+// load symbol from base version instead. - void* os::Linux::libnuma_dlsym(void* handle, const char *name) { - void *f = dlvsym(handle, name, "libnuma_1.1"); - if (f == NULL) { -@@ -2832,6 +2829,12 @@ - return f; - } - -+// Handle request to load libnuma symbol version 1.2 (API v2) only. -+// Return NULL if the symbol is not defined in this particular version. -+void* os::Linux::libnuma_v2_dlsym(void* handle, const char* name) { -+ return dlvsym(handle, name, "libnuma_1.2"); -+} -+ - bool os::Linux::libnuma_init() { - // sched_getcpu() should be in libc. - set_sched_getcpu(CAST_TO_FN_PTR(sched_getcpu_func_t, -@@ -2856,6 +2859,8 @@ - libnuma_dlsym(handle, "numa_tonode_memory"))); - set_numa_interleave_memory(CAST_TO_FN_PTR(numa_interleave_memory_func_t, - libnuma_dlsym(handle, "numa_interleave_memory"))); -+ set_numa_interleave_memory_v2(CAST_TO_FN_PTR(numa_interleave_memory_v2_func_t, -+ libnuma_v2_dlsym(handle, "numa_interleave_memory"))); - set_numa_set_bind_policy(CAST_TO_FN_PTR(numa_set_bind_policy_func_t, - libnuma_dlsym(handle, "numa_set_bind_policy"))); - set_numa_bitmask_isbitset(CAST_TO_FN_PTR(numa_bitmask_isbitset_func_t, -@@ -2975,6 +2980,7 @@ - os::Linux::numa_available_func_t os::Linux::_numa_available; - os::Linux::numa_tonode_memory_func_t os::Linux::_numa_tonode_memory; - os::Linux::numa_interleave_memory_func_t os::Linux::_numa_interleave_memory; -+os::Linux::numa_interleave_memory_v2_func_t os::Linux::_numa_interleave_memory_v2; - os::Linux::numa_set_bind_policy_func_t os::Linux::_numa_set_bind_policy; - os::Linux::numa_bitmask_isbitset_func_t os::Linux::_numa_bitmask_isbitset; - os::Linux::numa_distance_func_t os::Linux::_numa_distance; -diff -r 74c81011375b src/os/linux/vm/os_linux.hpp ---- openjdk/hotspot/src/os/linux/vm/os_linux.hpp Wed May 17 17:52:34 2017 -0400 -+++ openjdk/hotspot/src/os/linux/vm/os_linux.hpp Wed May 31 12:27:00 2017 -0400 -@@ -1,5 +1,5 @@ - /* -- * Copyright (c) 1999, 2013, Oracle and/or its affiliates. All rights reserved. -+ * Copyright (c) 1999, 2017, Oracle and/or its affiliates. All rights reserved. - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * This code is free software; you can redistribute it and/or modify it -@@ -190,6 +190,9 @@ - static void libpthread_init(); - static bool libnuma_init(); - static void* libnuma_dlsym(void* handle, const char* name); -+ // libnuma v2 (libnuma_1.2) symbols -+ static void* libnuma_v2_dlsym(void* handle, const char* name); -+ - // Minimum stack size a thread can be created with (allowing - // the VM to completely create the thread and enter user code) - static size_t min_stack_allowed; -@@ -250,6 +253,8 @@ - typedef int (*numa_available_func_t)(void); - typedef int (*numa_tonode_memory_func_t)(void *start, size_t size, int node); - typedef void (*numa_interleave_memory_func_t)(void *start, size_t size, unsigned long *nodemask); -+ typedef void (*numa_interleave_memory_v2_func_t)(void *start, size_t size, struct bitmask* mask); -+ - typedef void (*numa_set_bind_policy_func_t)(int policy); - typedef int (*numa_bitmask_isbitset_func_t)(struct bitmask *bmp, unsigned int n); - typedef int (*numa_distance_func_t)(int node1, int node2); -@@ -261,6 +266,7 @@ - static numa_available_func_t _numa_available; - static numa_tonode_memory_func_t _numa_tonode_memory; - static numa_interleave_memory_func_t _numa_interleave_memory; -+ static numa_interleave_memory_v2_func_t _numa_interleave_memory_v2; - static numa_set_bind_policy_func_t _numa_set_bind_policy; - static numa_bitmask_isbitset_func_t _numa_bitmask_isbitset; - static numa_distance_func_t _numa_distance; -@@ -275,6 +281,7 @@ - static void set_numa_available(numa_available_func_t func) { _numa_available = func; } - static void set_numa_tonode_memory(numa_tonode_memory_func_t func) { _numa_tonode_memory = func; } - static void set_numa_interleave_memory(numa_interleave_memory_func_t func) { _numa_interleave_memory = func; } -+ static void set_numa_interleave_memory_v2(numa_interleave_memory_v2_func_t func) { _numa_interleave_memory_v2 = func; } - static void set_numa_set_bind_policy(numa_set_bind_policy_func_t func) { _numa_set_bind_policy = func; } - static void set_numa_bitmask_isbitset(numa_bitmask_isbitset_func_t func) { _numa_bitmask_isbitset = func; } - static void set_numa_distance(numa_distance_func_t func) { _numa_distance = func; } -@@ -296,7 +303,10 @@ - return _numa_tonode_memory != NULL ? _numa_tonode_memory(start, size, node) : -1; - } - static void numa_interleave_memory(void *start, size_t size) { -- if (_numa_interleave_memory != NULL && _numa_all_nodes != NULL) { -+ // Use v2 api if available -+ if (_numa_interleave_memory_v2 != NULL && _numa_all_nodes_ptr != NULL) { -+ _numa_interleave_memory_v2(start, size, _numa_all_nodes_ptr); -+ } else if (_numa_interleave_memory != NULL && _numa_all_nodes != NULL) { - _numa_interleave_memory(start, size, _numa_all_nodes); - } - } - diff --git a/SOURCES/8181419-pr3413-rh1463144.patch b/SOURCES/8181419-pr3413-rh1463144.patch deleted file mode 100644 index c2c7fc6..0000000 --- a/SOURCES/8181419-pr3413-rh1463144.patch +++ /dev/null @@ -1,92 +0,0 @@ -# HG changeset patch -# User stuefe -# Date 1497865921 -7200 -# Mon Jun 19 11:52:01 2017 +0200 -# Node ID ca0c7b2783e0102468218589a062e7ac4736aae2 -# Parent 148a7d6c463ad1726bad8a9e8d5df191314d704b -8181419, PR3413, RH1463144: Race in jdwp invoker handling may lead to crashes or invalid results -Reviewed-by: sspitsyn, sgehwolf, clanger - -diff --git a/src/share/back/invoker.c b/src/share/back/invoker.c ---- openjdk/jdk/src/share/back/invoker.c -+++ openjdk/jdk/src/share/back/invoker.c -@@ -212,30 +212,6 @@ - } - - /* -- * Delete saved global references - if any - for: -- * - a potentially thrown Exception -- * - a returned refernce/array value -- * See invoker_doInvoke() and invoke* methods where global references -- * are being saved. -- */ --static void --deletePotentiallySavedGlobalRefs(JNIEnv *env, InvokeRequest *request) --{ -- /* Delete potentially saved return value */ -- if ((request->invokeType == INVOKE_CONSTRUCTOR) || -- (returnTypeTag(request->methodSignature) == JDWP_TAG(OBJECT)) || -- (returnTypeTag(request->methodSignature) == JDWP_TAG(ARRAY))) { -- if (request->returnValue.l != NULL) { -- tossGlobalRef(env, &(request->returnValue.l)); -- } -- } -- /* Delete potentially saved exception */ -- if (request->exception != NULL) { -- tossGlobalRef(env, &(request->exception)); -- } --} -- --/* - * Delete global argument references from the request which got put there before a - * invoke request was carried out. See fillInvokeRequest(). - */ -@@ -744,6 +720,7 @@ - jint id; - InvokeRequest *request; - jboolean detached; -+ jboolean mustReleaseReturnValue = JNI_FALSE; - - JDI_ASSERT(thread); - -@@ -787,6 +764,13 @@ - id = request->id; - exc = request->exception; - returnValue = request->returnValue; -+ -+ /* Release return value and exception references, but delay the release -+ * until after the return packet was sent. */ -+ mustReleaseReturnValue = request->invokeType == INVOKE_CONSTRUCTOR || -+ returnTypeTag(request->methodSignature) == JDWP_TAG(OBJECT) || -+ returnTypeTag(request->methodSignature) == JDWP_TAG(ARRAY); -+ - } - - /* -@@ -801,6 +785,12 @@ - */ - deleteGlobalArgumentRefs(env, request); - -+ /* From now on, do not access the request structure anymore -+ * for this request id, because once we give up the invokerLock it may -+ * be immediately reused by a new invoke request. -+ */ -+ request = NULL; -+ - /* - * Give up the lock before I/O operation - */ -@@ -821,7 +811,12 @@ - */ - eventHandler_lock(); // for proper lock order - debugMonitorEnter(invokerLock); -- deletePotentiallySavedGlobalRefs(env, request); -+ if (mustReleaseReturnValue && returnValue.l != NULL) { -+ tossGlobalRef(env, &returnValue.l); -+ } -+ if (exc != NULL) { -+ tossGlobalRef(env, &exc); -+ } - debugMonitorExit(invokerLock); - eventHandler_unlock(); - } diff --git a/SOURCES/8181810-pr3466-rh1498319.patch b/SOURCES/8181810-pr3466-rh1498319.patch deleted file mode 100644 index 4dba432..0000000 --- a/SOURCES/8181810-pr3466-rh1498319.patch +++ /dev/null @@ -1,66 +0,0 @@ -# HG changeset patch -# User mdoerr -# Date 1507752266 -3600 -# Wed Oct 11 21:04:26 2017 +0100 -# Node ID 5c00d5cd7677aec3549afe02e4f9de8dc7b20bef -# Parent 3c499a0ba92b1affb3f473c6502e374f4785aba9 -8181810, PR3466, RH1498319: PPC64: Leverage extrdi for bitfield extract -Reviewed-by: mdoerr, simonis -Contributed-by: Matthew Brandyberry - -diff --git a/src/cpu/ppc/vm/ppc.ad b/src/cpu/ppc/vm/ppc.ad ---- openjdk/hotspot/src/cpu/ppc/vm/ppc.ad -+++ openjdk/hotspot/src/cpu/ppc/vm/ppc.ad -@@ -1,6 +1,6 @@ - // - // Copyright (c) 2011, 2014, Oracle and/or its affiliates. All rights reserved. --// Copyright 2012, 2014 SAP AG. All rights reserved. -+// Copyright (c) 2012, 2017 SAP SE. All rights reserved. - // DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - // - // This code is free software; you can redistribute it and/or modify it -@@ -8610,6 +8610,44 @@ - ins_pipe(pipe_class_default); - %} - -+// Bitfield Extract: URShiftI + AndI -+instruct andI_urShiftI_regI_immI_immIpow2minus1(iRegIdst dst, iRegIsrc src1, immI src2, immIpow2minus1 src3) %{ -+ match(Set dst (AndI (URShiftI src1 src2) src3)); -+ -+ format %{ "EXTRDI $dst, $src1, shift=$src2, mask=$src3 \t// int bitfield extract" %} -+ size(4); -+ ins_encode %{ -+ // TODO: PPC port $archOpcode(ppc64Opcode_rldicl); -+ int rshift = ($src2$$constant) & 0x1f; -+ int length = log2_long(((jlong) $src3$$constant) + 1); -+ if (rshift + length > 32) { -+ // if necessary, adjust mask to omit rotated bits. -+ length = 32 - rshift; -+ } -+ __ extrdi($dst$$Register, $src1$$Register, length, 64 - (rshift + length)); -+ %} -+ ins_pipe(pipe_class_default); -+%} -+ -+// Bitfield Extract: URShiftL + AndL -+instruct andL_urShiftL_regL_immI_immLpow2minus1(iRegLdst dst, iRegLsrc src1, immI src2, immLpow2minus1 src3) %{ -+ match(Set dst (AndL (URShiftL src1 src2) src3)); -+ -+ format %{ "EXTRDI $dst, $src1, shift=$src2, mask=$src3 \t// long bitfield extract" %} -+ size(4); -+ ins_encode %{ -+ // TODO: PPC port $archOpcode(ppc64Opcode_rldicl); -+ int rshift = ($src2$$constant) & 0x3f; -+ int length = log2_long(((jlong) $src3$$constant) + 1); -+ if (rshift + length > 64) { -+ // if necessary, adjust mask to omit rotated bits. -+ length = 64 - rshift; -+ } -+ __ extrdi($dst$$Register, $src1$$Register, length, 64 - (rshift + length)); -+ %} -+ ins_pipe(pipe_class_default); -+%} -+ - instruct sxtI_reg(iRegIdst dst, iRegIsrc src) %{ - match(Set dst (ConvL2I (ConvI2L src))); - diff --git a/SOURCES/8197429-pr3456-rh1536622.patch b/SOURCES/8197429-pr3456-rh1536622.patch new file mode 100644 index 0000000..fc60cd3 --- /dev/null +++ b/SOURCES/8197429-pr3456-rh1536622.patch @@ -0,0 +1,93 @@ +diff -r eecfc14e66ee src/os/linux/vm/os_linux.cpp +--- openjdk/hotspot/src/os/linux/vm/os_linux.cpp Mon Jan 22 16:25:24 2018 +0000 ++++ openjdk/hotspot/src/os/linux/vm/os_linux.cpp Wed Feb 21 13:52:31 2018 +0000 +@@ -1,5 +1,5 @@ + /* +- * Copyright (c) 1999, 2016, Oracle and/or its affiliates. All rights reserved. ++ * Copyright (c) 1999, 2018, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it +@@ -674,6 +674,10 @@ + } + } + ++void os::Linux::expand_stack_to(address bottom) { ++ _expand_stack_to(bottom); ++} ++ + bool os::Linux::manually_expand_stack(JavaThread * t, address addr) { + assert(t!=NULL, "just checking"); + assert(t->osthread()->expanding_stack(), "expand should be set"); +diff -r eecfc14e66ee src/os/linux/vm/os_linux.hpp +--- openjdk/hotspot/src/os/linux/vm/os_linux.hpp Mon Jan 22 16:25:24 2018 +0000 ++++ openjdk/hotspot/src/os/linux/vm/os_linux.hpp Wed Feb 21 13:52:31 2018 +0000 +@@ -1,5 +1,5 @@ + /* +- * Copyright (c) 1999, 2013, Oracle and/or its affiliates. All rights reserved. ++ * Copyright (c) 1999, 2018, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it +@@ -245,6 +245,8 @@ + static int safe_cond_timedwait(pthread_cond_t *_cond, pthread_mutex_t *_mutex, const struct timespec *_abstime); + + private: ++ static void expand_stack_to(address bottom); ++ + typedef int (*sched_getcpu_func_t)(void); + typedef int (*numa_node_to_cpus_func_t)(int node, unsigned long *buffer, int bufferlen); + typedef int (*numa_max_node_func_t)(void); +diff -r eecfc14e66ee src/os_cpu/linux_x86/vm/os_linux_x86.cpp +--- openjdk/hotspot/src/os_cpu/linux_x86/vm/os_linux_x86.cpp Mon Jan 22 16:25:24 2018 +0000 ++++ openjdk/hotspot/src/os_cpu/linux_x86/vm/os_linux_x86.cpp Wed Feb 21 13:52:31 2018 +0000 +@@ -1,5 +1,5 @@ + /* +- * Copyright (c) 1999, 2014, Oracle and/or its affiliates. All rights reserved. ++ * Copyright (c) 1999, 2018, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it +@@ -892,6 +892,25 @@ + void os::workaround_expand_exec_shield_cs_limit() { + #if defined(IA32) + size_t page_size = os::vm_page_size(); ++ ++ /* ++ * JDK-8197429 ++ * ++ * Expand the stack mapping to the end of the initial stack before ++ * attempting to install the codebuf. This is needed because newer ++ * Linux kernels impose a distance of a megabyte between stack ++ * memory and other memory regions. If we try to install the ++ * codebuf before expanding the stack the installation will appear ++ * to succeed but we'll get a segfault later if we expand the stack ++ * in Java code. ++ * ++ */ ++ if (os::Linux::is_initial_thread()) { ++ address limit = Linux::initial_thread_stack_bottom(); ++ limit += (StackYellowPages + StackRedPages) * page_size; ++ os::Linux::expand_stack_to(limit); ++ } ++ + /* + * Take the highest VA the OS will give us and exec + * +@@ -910,6 +929,16 @@ + char* hint = (char*) (Linux::initial_thread_stack_bottom() - + ((StackYellowPages + StackRedPages + 1) * page_size)); + char* codebuf = os::attempt_reserve_memory_at(page_size, hint); ++ ++ if (codebuf == NULL) { ++ // JDK-8197429: There may be a stack gap of one megabyte between ++ // the limit of the stack and the nearest memory region: this is a ++ // Linux kernel workaround for CVE-2017-1000364. If we failed to ++ // map our codebuf, try again at an address one megabyte lower. ++ hint -= 1 * M; ++ codebuf = os::attempt_reserve_memory_at(page_size, hint); ++ } ++ + if ( (codebuf == NULL) || (!os::commit_memory(codebuf, page_size, true)) ) { + return; // No matter, we tried, best effort. + } diff --git a/SOURCES/8200556-pr3566.patch b/SOURCES/8200556-pr3566.patch new file mode 100644 index 0000000..ccd2f49 --- /dev/null +++ b/SOURCES/8200556-pr3566.patch @@ -0,0 +1,14 @@ +diff -r 214a94e9366c src/cpu/aarch64/vm/nativeInst_aarch64.cpp +--- openjdk/hotspot/src/cpu/aarch64/vm/nativeInst_aarch64.cpp Mon Jul 17 12:11:32 2017 +0000 ++++ openjdk/hotspot/src/cpu/aarch64/vm/nativeInst_aarch64.cpp Mon Jul 24 16:23:14 2017 +0100 +@@ -343,7 +343,7 @@ + CodeBuffer cb(code_pos, instruction_size); + MacroAssembler a(&cb); + +- a.mov(rscratch1, entry); ++ a.movptr(rscratch1, (uintptr_t)entry); + a.br(rscratch1); + + ICache::invalidate_range(code_pos, instruction_size); + + diff --git a/SOURCES/jconsole.desktop.in b/SOURCES/jconsole.desktop.in index a096349..82a5c4c 100644 --- a/SOURCES/jconsole.desktop.in +++ b/SOURCES/jconsole.desktop.in @@ -6,5 +6,5 @@ Icon=java-1.8.0 Terminal=false Type=Application StartupWMClass=sun-tools-jconsole-JConsole -Categories=Development;Monitor;Java; +Categories=Development;Profiling;Java; Version=1.0 diff --git a/SOURCES/pr3458-rh1540242.patch b/SOURCES/pr3458-rh1540242.patch new file mode 100644 index 0000000..2419b3d --- /dev/null +++ b/SOURCES/pr3458-rh1540242.patch @@ -0,0 +1,22 @@ +diff --git a/src/os_cpu/linux_aarch64/vm/os_linux_aarch64.cpp b/src/os_cpu/linux_aarch64/vm/os_linux_aarch64.cpp +--- openjdk/hotspot/src/os_cpu/linux_aarch64/vm/os_linux_aarch64.cpp ++++ openjdk/hotspot/src/os_cpu/linux_aarch64/vm/os_linux_aarch64.cpp +@@ -698,6 +698,7 @@ + + extern "C" { + int SpinPause() { ++ return 0; + } + + void _Copy_conjoint_jshorts_atomic(jshort* from, jshort* to, size_t count) { +diff --git a/src/os_cpu/linux_zero/vm/os_linux_zero.cpp b/src/os_cpu/linux_zero/vm/os_linux_zero.cpp +--- openjdk/hotspot/src/os_cpu/linux_zero/vm/os_linux_zero.cpp ++++ openjdk/hotspot/src/os_cpu/linux_zero/vm/os_linux_zero.cpp +@@ -408,6 +408,7 @@ + + extern "C" { + int SpinPause() { ++ return 0; + } + + diff --git a/SOURCES/pr3573.patch b/SOURCES/pr3573.patch new file mode 100644 index 0000000..07b9f10 --- /dev/null +++ b/SOURCES/pr3573.patch @@ -0,0 +1,25 @@ +# HG changeset patch +# User roland +# Date 1506520357 -7200 +# Wed Sep 27 15:52:37 2017 +0200 +# Node ID c307975d0800f8da5cc8e82cd8f1fdadbd745357 +# Parent ab0c101fa16e4cd97ac8ceff4f5ff72e2f4d5776 +[backport] fix TCK crash with shenandoah + +diff --git a/src/share/vm/opto/shenandoahSupport.cpp b/src/share/vm/opto/shenandoahSupport.cpp +--- openjdk/hotspot/src/share/vm/opto/shenandoahSupport.cpp ++++ openjdk/hotspot/src/share/vm/opto/shenandoahSupport.cpp +@@ -472,9 +472,11 @@ + Node* input = in(Memory); + if (input->Opcode() == Op_ShenandoahWBMemProj) { + Node* wb = input->in(0); +- if (wb->is_top()) return NULL; // Dead path. ++ const Type* in_type = phase->type(wb); ++ // is_top() test not sufficient here: we can come here after CCP ++ // in a dead branch of the graph that has not yet been removed. ++ if (in_type == Type::TOP) return NULL; // Dead path. + assert(wb->Opcode() == Op_ShenandoahWriteBarrier, "expect write barrier"); +- const Type* in_type = phase->type(wb); + if (is_independent(in_type, _type)) { + if (phase->is_IterGVN()) { + phase->is_IterGVN()->rehash_node_delayed(wb); diff --git a/SPECS/java-1.8.0-openjdk.spec b/SPECS/java-1.8.0-openjdk.spec index c4cbeab..591a396 100644 --- a/SPECS/java-1.8.0-openjdk.spec +++ b/SPECS/java-1.8.0-openjdk.spec @@ -178,10 +178,10 @@ # note, following three variables are sedded from update_sources if used correctly. Hardcode them rather there. %global project aarch64-port %global repo jdk8u -%global revision aarch64-jdk8u161-b14 +%global revision aarch64-jdk8u171-b10 %global shenandoah_project aarch64-port %global shenandoah_repo jdk8u-shenandoah -%global shenandoah_revision aarch64-shenandoah-jdk8u161-b14 +%global shenandoah_revision aarch64-shenandoah-jdk8u171-b10 # eg # jdk8u60-b27 -> jdk8u60 or # aarch64-jdk8u60-b27 -> aarch64-jdk8u60 (dont forget spec escape % by %%) %global whole_update %(VERSION=%{revision}; echo ${VERSION%%-*}) @@ -794,7 +794,7 @@ Provides: java-%{javaver}-%{origin}-accessibility = %{epoch}:%{version}-%{releas Name: java-%{javaver}-%{origin} Version: %{javaver}.%{updatever} -Release: 2.%{buildver}%{?dist} +Release: 7.%{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 @@ -809,7 +809,17 @@ Epoch: 1 Summary: OpenJDK Runtime Environment Group: Development/Languages -License: ASL 1.1 and ASL 2.0 and GPL+ and GPLv2 and GPLv2 with exceptions and LGPL+ and LGPLv2 and MPLv1.0 and MPLv1.1 and Public Domain and W3C +# HotSpot code is licensed under GPLv2 +# JDK library code is licensed under GPLv2 with the Classpath exception +# The Apache license is used in code taken from Apache projects (primarily JAXP & JAXWS) +# DOM levels 2 & 3 and the XML digital signature schemas are licensed under the W3C Software License +# The JSR166 concurrency code is in the public domain +# The BSD and MIT licenses are used for a number of third-party libraries (see THIRD_PARTY_README) +# The OpenJDK source tree includes the JPEG library (IJG), zlib & libpng (zlib), giflib and LCMS (MIT) +# The test code includes copies of NSS under the Mozilla Public License v2.0 +# The PCSClite headers are under a BSD with advertising license +# The elliptic curve cryptography (ECC) source code is licensed under the LGPLv2.1 or any later version +License: ASL 1.1 and ASL 2.0 and BSD and BSD with advertising and GPL+ and GPLv2 and GPLv2 with exceptions and IJG and LGPLv2+ and MIT and MPLv2.0 and Public Domain and W3C and zlib URL: http://openjdk.java.net/ # aarch64-port now contains integration forest of both aarch64 and normal jdk @@ -899,13 +909,15 @@ Patch509: rh1176206-root.patch Patch523: pr2974-rh1337583.patch # PR3083, RH1346460: Regression in SSL debug output without an ECC provider Patch528: pr3083-rh1346460.patch + +# Upstreamable debugging patches # Patches 204 and 205 stop the build adding .gnu_debuglink sections to unstripped files Patch204: hotspot-remove-debuglink.patch Patch205: dont-add-unnecessary-debug-links.patch # Enable debug information for assembly code files Patch206: hotspot-assembler-debuginfo.patch -# 8188030, PR3459, RH1484079: AWT java apps fail to start when some minimal fonts are present -Patch560: 8188030-pr3459-rh1484079.patch +# 8200556, PR3566: AArch64 port crashes on slowdebug builds +Patch207: 8200556-pr3566.patch # Arch-specific upstreamable patches # PR2415: JVM -Xmx requirement is too high on s390 @@ -914,6 +926,8 @@ Patch100: %{name}-s390-java-opts.patch Patch102: %{name}-size_t.patch # Use "%z" for size_t on s390 as size_t != intptr_t Patch103: s390-size_t_format_flags.patch +# Fix more cases of missing return statements on AArch64 +Patch104: pr3458-rh1540242.patch # Patches which need backporting to 8u # S8073139, RH1191652; fix name of ppc64le architecture @@ -938,21 +952,11 @@ Patch400: 8154313.patch Patch526: 6260348-pr3066.patch # 8061305, PR3335, RH1423421: Javadoc crashes when method name ends with "Property" Patch538: 8061305-pr3335-rh1423421.patch +# 8188030, PR3459, RH1484079: AWT java apps fail to start when some minimal fonts are present +Patch560: 8188030-pr3459-rh1484079.patch +# 8197429, PR3456, RH153662{2,3}: 32 bit java app started via JNI crashes with larger stack sizes +Patch561: 8197429-pr3456-rh1536622.patch -# Patches upstream and appearing in 8u162 -# 8181055, PR3394, RH1448880: PPC64: "mbind: Invalid argument" still seen after 8175813 -Patch551: 8181055-pr3394-rh1448880.patch -# 8181419, PR3413, RH1463144: Race in jdwp invoker handling may lead to crashes or invalid results -Patch553: 8181419-pr3413-rh1463144.patch -# 8145913, PR3466, RH1498309: PPC64: add Montgomery multiply intrinsic -Patch556: 8145913-pr3466-rh1498309.patch -# 8168318, PR3466, RH1498320: PPC64: Use cmpldi instead of li/cmpld -Patch557: 8168318-pr3466-rh1498320.patch -# 8170328, PR3466, RH1498321: PPC64: Use andis instead of lis/and -Patch558: 8170328-pr3466-rh1498321.patch -# 8181810, PR3466, RH1498319: PPC64: Leverage extrdi for bitfield extract -Patch559: 8181810-pr3466-rh1498319.patch - # Patches ineligible for 8u # 8043805: Allow using a system-installed libjpeg Patch201: system-libjpeg.patch @@ -965,6 +969,10 @@ Patch534: always_assumemp.patch # PR2888: OpenJDK should check for system cacerts database (e.g. /etc/pki/java/cacerts) Patch539: pr2888.patch +# Shenandoah fixes +# PR3573: Fix TCK crash with Shenandoah +Patch700: pr3573.patch + # Non-OpenJDK fixes BuildRequires: autoconf @@ -1265,6 +1273,7 @@ sh %{SOURCE12} %patch204 %patch205 %patch206 +%patch207 %patch1 %patch3 @@ -1276,8 +1285,10 @@ sh %{SOURCE12} %patch102 %patch103 -# ppc64le fixes +# AArch64 fixes +%patch104 +# ppc64le fixes %patch603 %patch601 %patch602 @@ -1305,15 +1316,8 @@ sh %{SOURCE12} %patch526 %patch528 %patch538 -%patch551 -%patch553 %patch560 - -# PPC64 updates -%patch556 -%patch557 -%patch558 -%patch559 +%patch561 # RPM-only fixes %patch525 @@ -1324,6 +1328,10 @@ sh %{SOURCE12} %patch534 %endif +# Shenandoah-only patches +%if %{use_shenandoah_hotspot} +%patch700 +%endif # Extract systemtap tapsets %if %{with_systemtap} @@ -1960,6 +1968,47 @@ require "copy_jdk_configs.lua" %endif %changelog +* Tue Apr 17 2018 Andrew Hughes - 1:1.8.0.171-7.b10 +- Bump release number to be greater than RHEL 7.6 package to allow build with .el7 suffix +- Resolves: rhbz#1559766 + +* Tue Apr 17 2018 Jiri Vanek - 1:1.8.0.171-4.b10 +- Rebuilding due to bad nss-softokn brew-root build override +- Resolves: rhbz#1559766 + +* Thu Apr 12 2018 Andrew Hughes - 1:1.8.0.171-3.b10 +- Fix jconsole.desktop.in subcategory, replacing "Monitor" with "Profiling" (PR3550) +- Resolves: rhbz#1559766 + +* Thu Apr 12 2018 Andrew Hughes - 1:1.8.0.171-3.b10 +- Fix invalid license 'LGPL+' (should be LGPLv2+ for ECC code) and add misisng ones +- Resolves: rhbz#1559766 + +* Thu Apr 12 2018 Andrew Hughes - 1:1.8.0.171-2.b10 +- Add fix for TCK crash on Shenandoah. +- Resolves: rhbz#1559766 + +* Mon Apr 02 2018 Andrew Hughes - 1:1.8.0.171-1.b10 +- Cleanup from previous commit. +- Remove unused upstream patch 8167200.hotspotAarch64.patch. +- Resolves: rhbz#1559766 + +* Thu Mar 29 2018 Jiri Vanek - 1:1.8.0.171-1.b10 +- Backported from fedora: aarch64BuildFailure.patch, rhbz_1536622-JDK8197429-jdk8.patch, rhbz_1540242.patch +- Resolves: rhbz#1559766 + +* Sat Mar 24 2018 Andrew Hughes - 1:1.8.0.171-0.b10 +- Update to aarch64-jdk8u171-b10 and aarch64-shenandoah-jdk8u171-b10. +- Resolves: rhbz#1559766 + +* Wed Mar 21 2018 Andrew Hughes - 1:1.8.0.162-0.b12 +- Update to aarch64-jdk8u162-b12 and aarch64-shenandoah-jdk8u162-b12. +- Remove upstreamed patches for 8181055/PR3394/RH1448880, +- 8181419/PR3413/RH1463144, 8145913/PR3466/RH1498309, +- 8168318/PR3466/RH1498320, 8170328/PR3466/RR1498321 and +- 8181810/PR3466/RH1498319. +- Resolves: rhbz#1559766 + * Fri Jan 12 2018 Andrew Hughes - 1:1.8.0.161-2.b14 - Rebuild to fix temporary loss of RELRO on ppc64 and ppc64le - Resolves: rhbz#1528233