diff --git a/8132051-aarch64.patch b/8132051-aarch64.patch deleted file mode 100644 index 802a8d8..0000000 --- a/8132051-aarch64.patch +++ /dev/null @@ -1,248 +0,0 @@ -# HG changeset patch -# User aph -# Date 1460374398 0 -# Mon Apr 11 11:33:18 2016 +0000 -# Node ID 388e9d0905e69727a15a94f825bdde17e2ed96d6 -# Parent e2b90ce9a1d12eae1a8edbd34eacd9a9674e315b -8132051: Better byte behavior -Reviewed-by: adinn - -diff --git a/src/cpu/aarch64/vm/c1_LIRGenerator_aarch64.cpp b/src/cpu/aarch64/vm/c1_LIRGenerator_aarch64.cpp ---- openjdk/hotspot/src/cpu/aarch64/vm/c1_LIRGenerator_aarch64.cpp -+++ openjdk/hotspot/src/cpu/aarch64/vm/c1_LIRGenerator_aarch64.cpp -@@ -337,7 +337,7 @@ - length.load_item(); - - } -- if (needs_store_check) { -+ if (needs_store_check || x->check_boolean()) { - value.load_item(); - } else { - value.load_for_store(x->elt_type()); -@@ -386,7 +386,8 @@ - // Seems to be a precise - post_barrier(LIR_OprFact::address(array_addr), value.result()); - } else { -- __ move(value.result(), array_addr, null_check_info); -+ LIR_Opr result = maybe_mask_boolean(x, array.result(), value.result(), null_check_info); -+ __ move(result, array_addr, null_check_info); - } - } - -diff --git a/src/cpu/aarch64/vm/interp_masm_aarch64.cpp b/src/cpu/aarch64/vm/interp_masm_aarch64.cpp ---- openjdk/hotspot/src/cpu/aarch64/vm/interp_masm_aarch64.cpp -+++ openjdk/hotspot/src/cpu/aarch64/vm/interp_masm_aarch64.cpp -@@ -41,7 +41,43 @@ - #include "runtime/thread.inline.hpp" - - --// Implementation of InterpreterMacroAssembler -+void InterpreterMacroAssembler::narrow(Register result) { -+ -+ // Get method->_constMethod->_result_type -+ ldr(rscratch1, Address(rfp, frame::interpreter_frame_method_offset * wordSize)); -+ ldr(rscratch1, Address(rscratch1, Method::const_offset())); -+ ldrb(rscratch1, Address(rscratch1, ConstMethod::result_type_offset())); -+ -+ Label done, notBool, notByte, notChar; -+ -+ // common case first -+ cmpw(rscratch1, T_INT); -+ br(Assembler::EQ, done); -+ -+ // mask integer result to narrower return type. -+ cmpw(rscratch1, T_BOOLEAN); -+ br(Assembler::NE, notBool); -+ andw(result, result, 0x1); -+ b(done); -+ -+ bind(notBool); -+ cmpw(rscratch1, T_BYTE); -+ br(Assembler::NE, notByte); -+ sbfx(result, result, 0, 8); -+ b(done); -+ -+ bind(notByte); -+ cmpw(rscratch1, T_CHAR); -+ br(Assembler::NE, notChar); -+ ubfx(result, result, 0, 16); // truncate upper 16 bits -+ b(done); -+ -+ bind(notChar); -+ sbfx(result, result, 0, 16); // sign-extend short -+ -+ // Nothing to do for T_INT -+ bind(done); -+} - - #ifndef CC_INTERP - -@@ -79,6 +115,7 @@ - verify_oop(r0, state); break; - case ltos: ldr(r0, val_addr); break; - case btos: // fall through -+ case ztos: // fall through - case ctos: // fall through - case stos: // fall through - case itos: ldrw(r0, val_addr); break; -@@ -312,6 +349,7 @@ - switch (state) { - case atos: pop_ptr(); break; - case btos: -+ case ztos: - case ctos: - case stos: - case itos: pop_i(); break; -@@ -329,6 +367,7 @@ - switch (state) { - case atos: push_ptr(); break; - case btos: -+ case ztos: - case ctos: - case stos: - case itos: push_i(); break; -diff --git a/src/cpu/aarch64/vm/interp_masm_aarch64.hpp b/src/cpu/aarch64/vm/interp_masm_aarch64.hpp ---- openjdk/hotspot/src/cpu/aarch64/vm/interp_masm_aarch64.hpp -+++ openjdk/hotspot/src/cpu/aarch64/vm/interp_masm_aarch64.hpp -@@ -252,6 +252,9 @@ - void update_mdp_by_constant(Register mdp_in, int constant); - void update_mdp_for_ret(Register return_bci); - -+ // narrow int return value -+ void narrow(Register result); -+ - void profile_taken_branch(Register mdp, Register bumped_count); - void profile_not_taken_branch(Register mdp); - void profile_call(Register mdp); -diff --git a/src/cpu/aarch64/vm/templateTable_aarch64.cpp b/src/cpu/aarch64/vm/templateTable_aarch64.cpp ---- openjdk/hotspot/src/cpu/aarch64/vm/templateTable_aarch64.cpp -+++ openjdk/hotspot/src/cpu/aarch64/vm/templateTable_aarch64.cpp -@@ -233,6 +233,7 @@ - switch (bc) { - case Bytecodes::_fast_aputfield: - case Bytecodes::_fast_bputfield: -+ case Bytecodes::_fast_zputfield: - case Bytecodes::_fast_cputfield: - case Bytecodes::_fast_dputfield: - case Bytecodes::_fast_fputfield: -@@ -1072,6 +1073,18 @@ - // r1: index - // r3: array - index_check(r3, r1); // prefer index in r1 -+ -+ // Need to check whether array is boolean or byte -+ // since both types share the bastore bytecode. -+ __ load_klass(r2, r3); -+ __ ldrw(r2, Address(r2, Klass::layout_helper_offset())); -+ int diffbit = Klass::layout_helper_boolean_diffbit(); -+ __ andw(rscratch1, r2, diffbit); -+ Label L_skip; -+ __ cbzw(rscratch1, L_skip); -+ __ andw(r0, r0, 1); // if it is a T_BOOLEAN array, mask the stored value to 0/1 -+ __ bind(L_skip); -+ - __ lea(rscratch1, Address(r3, r1, Address::uxtw(0))); - __ strb(r0, Address(rscratch1, - arrayOopDesc::base_offset_in_bytes(T_BYTE))); -@@ -2186,6 +2199,13 @@ - if (_desc->bytecode() == Bytecodes::_return) - __ membar(MacroAssembler::StoreStore); - -+ // Narrow result if state is itos but result type is smaller. -+ // Need to narrow in the return bytecode rather than in generate_return_entry -+ // since compiled code callers expect the result to already be narrowed. -+ if (state == itos) { -+ __ narrow(r0); -+ } -+ - __ remove_activation(state); - __ ret(lr); - } -@@ -2395,7 +2415,7 @@ - - const Address field(obj, off); - -- Label Done, notByte, notInt, notShort, notChar, -+ Label Done, notByte, notBool, notInt, notShort, notChar, - notLong, notFloat, notObj, notDouble; - - // x86 uses a shift and mask or wings it with a shift plus assert -@@ -2415,6 +2435,20 @@ - __ b(Done); - - __ bind(notByte); -+ __ cmp(flags, ztos); -+ __ br(Assembler::NE, notBool); -+ -+ // ztos (same code as btos) -+ __ ldrsb(r0, field); -+ __ push(ztos); -+ // Rewrite bytecode to be faster -+ if (!is_static) { -+ // use btos rewriting, no truncating to t/f bit is needed for getfield. -+ patch_bytecode(Bytecodes::_fast_bgetfield, bc, r1); -+ } -+ __ b(Done); -+ -+ __ bind(notBool); - __ cmp(flags, atos); - __ br(Assembler::NE, notObj); - // atos -@@ -2606,7 +2640,7 @@ - // field address - const Address field(obj, off); - -- Label notByte, notInt, notShort, notChar, -+ Label notByte, notBool, notInt, notShort, notChar, - notLong, notFloat, notObj, notDouble; - - // x86 uses a shift and mask or wings it with a shift plus assert -@@ -2628,6 +2662,22 @@ - } - - __ bind(notByte); -+ __ cmp(flags, ztos); -+ __ br(Assembler::NE, notBool); -+ -+ // ztos -+ { -+ __ pop(ztos); -+ if (!is_static) pop_and_check_object(obj); -+ __ andw(r0, r0, 0x1); -+ __ strb(r0, field); -+ if (!is_static) { -+ patch_bytecode(Bytecodes::_fast_zputfield, bc, r1, true, byte_no); -+ } -+ __ b(Done); -+ } -+ -+ __ bind(notBool); - __ cmp(flags, atos); - __ br(Assembler::NE, notObj); - -@@ -2778,6 +2828,7 @@ - switch (bytecode()) { // load values into the jvalue object - case Bytecodes::_fast_aputfield: __ push_ptr(r0); break; - case Bytecodes::_fast_bputfield: // fall through -+ case Bytecodes::_fast_zputfield: // fall through - case Bytecodes::_fast_sputfield: // fall through - case Bytecodes::_fast_cputfield: // fall through - case Bytecodes::_fast_iputfield: __ push_i(r0); break; -@@ -2803,6 +2854,7 @@ - switch (bytecode()) { // restore tos values - case Bytecodes::_fast_aputfield: __ pop_ptr(r0); break; - case Bytecodes::_fast_bputfield: // fall through -+ case Bytecodes::_fast_zputfield: // fall through - case Bytecodes::_fast_sputfield: // fall through - case Bytecodes::_fast_cputfield: // fall through - case Bytecodes::_fast_iputfield: __ pop_i(r0); break; -@@ -2858,6 +2910,9 @@ - case Bytecodes::_fast_iputfield: - __ strw(r0, field); - break; -+ case Bytecodes::_fast_zputfield: -+ __ andw(r0, r0, 0x1); // boolean is true if LSB is 1 -+ // fall through to bputfield - case Bytecodes::_fast_bputfield: - __ strb(r0, field); - break; diff --git a/8143855.patch b/8143855.patch deleted file mode 100644 index 5d398de..0000000 --- a/8143855.patch +++ /dev/null @@ -1,29 +0,0 @@ -# HG changeset patch -# User andrew -# Date 1448509207 0 -# Thu Nov 26 03:40:07 2015 +0000 -# Node ID 4a4a5b8b3dfe44b25d2a40ba987e5243b3ebc9db -# Parent 110735ab93eca3bd6e9b157955a942e00aed72e1 -8143855: Bad printf formatting in frame_zero.cpp -Summary: Backport subset of 8075967 fix that resolves this issue. -Reviewed-by: dholmes - -diff -r 110735ab93ec -r 4a4a5b8b3dfe src/cpu/zero/vm/frame_zero.cpp ---- openjdk/hotspot/src/cpu/zero/vm/frame_zero.cpp Wed Nov 04 13:38:38 2015 +0100 -+++ openjdk/hotspot/src/cpu/zero/vm/frame_zero.cpp Thu Nov 26 03:40:07 2015 +0000 -@@ -1,5 +1,5 @@ - /* -- * Copyright (c) 2003, 2013, Oracle and/or its affiliates. All rights reserved. -+ * Copyright (c) 2003, 2015, Oracle and/or its affiliates. All rights reserved. - * Copyright 2007, 2008, 2009, 2010, 2011 Red Hat, Inc. - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * -@@ -216,7 +216,7 @@ - valuebuf[buflen - 1] = '\0'; - - // Print the result -- st->print_cr(" " PTR_FORMAT ": %-21s = %s", addr, fieldbuf, valuebuf); -+ st->print_cr(" " PTR_FORMAT ": %-21s = %s", p2i(addr), fieldbuf, valuebuf); - } - } - diff --git a/criticalShenandoahFix.patch b/criticalShenandoahFix.patch deleted file mode 100644 index 8242684..0000000 --- a/criticalShenandoahFix.patch +++ /dev/null @@ -1,34 +0,0 @@ -# HG changeset patch -# User rkennke -# Date 1463083411 -7200 -# Thu May 12 22:03:31 2016 +0200 -# Node ID 632ccab070e6b8f0114f4c636508de5b9d7210ab -# Parent 04726a0d70bbbdef63056ebfe3ef20bf21fb4be7 -Enable weak reference discovery in ShenandoahMarkCompact. Otherwise we never process any weak references in full-gc. - -diff --git a/src/share/vm/gc_implementation/shenandoah/shenandoahMarkCompact.cpp b/src/share/vm/gc_implementation/shenandoah/shenandoahMarkCompact.cpp ---- openjdk/hotspot/src/share/vm/gc_implementation/shenandoah/shenandoahMarkCompact.cpp -+++ openjdk/hotspot/src/share/vm/gc_implementation/shenandoah/shenandoahMarkCompact.cpp -@@ -126,6 +126,8 @@ - ShenandoahMarkCompactBarrierSet bs(_heap); - oopDesc::set_bs(&bs); - -+ _heap->set_need_update_refs(true); -+ - OrderAccess::fence(); - - phase1_mark_heap(); -@@ -260,6 +262,12 @@ - ShenandoahConcurrentMark* cm = _heap->concurrentMark(); - - cm->prepare_unmarked_root_objs_no_derived_ptrs(true); -+ if (ShenandoahProcessReferences) { -+ ReferenceProcessor* rp = _heap->ref_processor(); -+ // enable ("weak") refs discovery -+ rp->enable_discovery(true /*verify_no_refs*/, true); -+ rp->setup_policy(true); // snapshot the soft ref policy to be used in this cycle -+ } - cm->shared_finish_mark_from_roots(); - - if (VerifyDuringGC) { - diff --git a/java-1.8.0-openjdk-rh1191652-root.patch b/java-1.8.0-openjdk-rh1191652-root.patch index 7483623..aa0ce35 100644 --- a/java-1.8.0-openjdk-rh1191652-root.patch +++ b/java-1.8.0-openjdk-rh1191652-root.patch @@ -1,10 +1,10 @@ -diff -r 590cc3ca1fec common/autoconf/hotspot-spec.gmk.in ---- openjdk///common/autoconf/hotspot-spec.gmk.in Wed Feb 11 12:18:34 2015 -0800 -+++ openjdk///common/autoconf/hotspot-spec.gmk.in Wed Feb 18 12:10:19 2015 +0000 +diff -r 59d5dc6a0d95 common/autoconf/hotspot-spec.gmk.in +--- openjdk///common/autoconf/hotspot-spec.gmk.in Wed May 25 13:42:38 2016 +0100 ++++ openjdk///common/autoconf/hotspot-spec.gmk.in Thu May 26 04:43:57 2016 +0100 @@ -71,6 +71,10 @@ LIBARCH=$(OPENJDK_TARGET_CPU_LEGACY_LIB) - # Old name for OPENJDK_TARGET_CPU, uses i586 and amd64, instead of x86 and x86_64. - ARCH=$(OPENJDK_TARGET_CPU_LEGACY) + # Set the cpu architecture + ARCH=$(OPENJDK_TARGET_CPU_ARCH) +# ppc64le uses the HotSpot ppc64 build +ifeq ($(OPENJDK_TARGET_CPU), ppc64le) + ARCH=ppc64 @@ -12,9 +12,10 @@ diff -r 590cc3ca1fec common/autoconf/hotspot-spec.gmk.in # Legacy setting for building for a 64 bit machine. # If yes then this expands to _LP64:=1 @LP64@ ---- openjdk/common/autoconf/jdk-options.m4.orig 2015-03-03 20:13:00.000000000 -0500 -+++ openjdk/common/autoconf/jdk-options.m4 2015-03-03 20:36:17.000000000 -0500 -@@ -153,7 +153,7 @@ +diff -r 59d5dc6a0d95 common/autoconf/jdk-options.m4 +--- openjdk///common/autoconf/jdk-options.m4 Wed May 25 13:42:38 2016 +0100 ++++ openjdk///common/autoconf/jdk-options.m4 Thu May 26 04:43:57 2016 +0100 +@@ -158,7 +158,7 @@ if test "x$JVM_VARIANT_ZEROSHARK" = xtrue ; then INCLUDE_SA=false fi @@ -23,10 +24,10 @@ diff -r 590cc3ca1fec common/autoconf/hotspot-spec.gmk.in INCLUDE_SA=false fi if test "x$OPENJDK_TARGET_CPU" = xaarch64; then -diff -r 590cc3ca1fec common/autoconf/platform.m4 ---- openjdk///common/autoconf/platform.m4 Wed Feb 11 12:18:34 2015 -0800 -+++ openjdk///common/autoconf/platform.m4 Wed Feb 18 12:10:19 2015 +0000 -@@ -61,7 +61,7 @@ +diff -r 59d5dc6a0d95 common/autoconf/platform.m4 +--- openjdk///common/autoconf/platform.m4 Wed May 25 13:42:38 2016 +0100 ++++ openjdk///common/autoconf/platform.m4 Thu May 26 04:43:57 2016 +0100 +@@ -67,7 +67,7 @@ VAR_CPU_ENDIAN=big ;; powerpc64le) @@ -35,9 +36,9 @@ diff -r 590cc3ca1fec common/autoconf/platform.m4 VAR_CPU_ARCH=ppc VAR_CPU_BITS=64 VAR_CPU_ENDIAN=little -diff -r 590cc3ca1fec common/autoconf/toolchain.m4 ---- openjdk///common/autoconf/toolchain.m4 Wed Feb 11 12:18:34 2015 -0800 -+++ openjdk///common/autoconf/toolchain.m4 Wed Feb 18 12:10:19 2015 +0000 +diff -r 59d5dc6a0d95 common/autoconf/toolchain.m4 +--- openjdk///common/autoconf/toolchain.m4 Wed May 25 13:42:38 2016 +0100 ++++ openjdk///common/autoconf/toolchain.m4 Thu May 26 04:43:57 2016 +0100 @@ -1056,6 +1056,9 @@ else CCXXFLAGS_JDK="$CCXXFLAGS_JDK -D_BIG_ENDIAN" diff --git a/java-1.8.0-openjdk.spec b/java-1.8.0-openjdk.spec index c4087e5..95b0e2e 100644 --- a/java-1.8.0-openjdk.spec +++ b/java-1.8.0-openjdk.spec @@ -905,15 +905,8 @@ Patch508: rh1176206-jdk.patch Patch509: rh1176206-root.patch # Patches which need adding to aarch64/8u -# S8132051: Better byte behaviour for AArch64 -Patch701: 8132051-aarch64.patch # Patches upstream and appearing in 8u76 -# Fixes StackOverflowError on ARM32 bit Zero. See RHBZ#1206656 -# 8087120: [GCC5] java.lang.StackOverflowError on Zero JVM initialization on non x86 platforms -Patch403: rhbz1206656_fix_current_stack_pointer.patch -# S8143855: Bad printf formatting in frame_zero.cpp -Patch505: 8143855.patch # Patches ineligible for 8u # 8043805: Allow using a system-installed libjpeg @@ -924,7 +917,6 @@ Patch201: system-libjpeg.patch Patch400: jdk8-archivedJavadoc.patch # already in shenandoah repo: http://hg.openjdk.java.net/shenandoah/jdk8u/hotspot/rev/06556235f193 # proposed for shenandoah integration forest: http://mail.openjdk.java.net/pipermail/aarch64-port-dev/2016-May/003461.html -Patch401: criticalShenandoahFix.patch # Non-OpenJDK fixes Patch300: jstack-pr1845.patch @@ -1225,15 +1217,6 @@ sh %{SOURCE12} %patch103 # Zero fixes. -%if %{use_shenandoah_hotspot} != 1 -%patch403 -%patch505 -%endif - -# AArch64 fixes -%if %{use_shenandoah_hotspot} != 1 -%patch701 -%endif %patch603 %patch601 @@ -1256,9 +1239,6 @@ sh %{SOURCE12} %patch518 %patch519 %patch400 -%if %{use_shenandoah_hotspot} == 1 -%patch401 -%endif # Extract systemtap tapsets %if %{with_systemtap} diff --git a/rhbz1206656_fix_current_stack_pointer.patch b/rhbz1206656_fix_current_stack_pointer.patch deleted file mode 100644 index dbefaef..0000000 --- a/rhbz1206656_fix_current_stack_pointer.patch +++ /dev/null @@ -1,14 +0,0 @@ -diff --git a/src/os_cpu/linux_zero/vm/os_linux_zero.cpp b/src/os_cpu/linux_zero/vm/os_linux_zero.cpp ---- jdk8/hotspot/src/os_cpu/linux_zero/vm/os_linux_zero.cpp -+++ jdk8/hotspot/src/os_cpu/linux_zero/vm/os_linux_zero.cpp -@@ -55,8 +55,8 @@ - #include "utilities/vmError.hpp" - - address os::current_stack_pointer() { -- address dummy = (address) &dummy; -- return dummy; -+ // return the address of the current function -+ return (address)__builtin_frame_address(0); - } - - frame os::get_sender_for_C_frame(frame* fr) {