More removed u92 upstreamed patches
This commit is contained in:
parent
b803a9924a
commit
07077ab8b1
@ -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;
|
@ -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);
|
||||
}
|
||||
}
|
||||
|
@ -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) {
|
||||
|
@ -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"
|
||||
|
@ -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}
|
||||
|
@ -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) {
|
Loading…
Reference in New Issue
Block a user