Update AArch64 patch series (3) from upstream.
There was a crasher bug introduced with 8195685 and in turn fixed with 8196136. 8195859 is a fix also introduced with 8195685.
This commit is contained in:
parent
4ba5fbc2d0
commit
513dcf1e83
|
@ -1,6 +1,15 @@
|
|||
diff -r bb73b31e70e3 src/cpu/aarch64/vm/macroAssembler_aarch64.cpp
|
||||
--- a/src/cpu/aarch64/vm/macroAssembler_aarch64.cpp Tue Dec 19 15:25:42 2017 -0800
|
||||
+++ b/src/cpu/aarch64/vm/macroAssembler_aarch64.cpp Fri Jan 19 17:02:15 2018 +0000
|
||||
# HG changeset patch
|
||||
# User aph
|
||||
# Date 1516971866 -3600
|
||||
# Fri Jan 26 14:04:26 2018 +0100
|
||||
# Node ID a8b7d1fd5884bcfe816df11f16dd71aec7bdacdb
|
||||
# Parent f6418daf023ea194db63519e3d13ca6c252028ed
|
||||
8195685: AArch64: AArch64 cannot build with JDK-8174962
|
||||
Reviewed-by: adinn, njian
|
||||
|
||||
diff --git a/src/cpu/aarch64/vm/macroAssembler_aarch64.cpp b/src/cpu/aarch64/vm/macroAssembler_aarch64.cpp
|
||||
--- a/src/cpu/aarch64/vm/macroAssembler_aarch64.cpp
|
||||
+++ b/src/cpu/aarch64/vm/macroAssembler_aarch64.cpp
|
||||
@@ -927,8 +927,12 @@
|
||||
RegisterOrConstant itable_index,
|
||||
Register method_result,
|
||||
|
@ -50,9 +59,9 @@ diff -r bb73b31e70e3 src/cpu/aarch64/vm/macroAssembler_aarch64.cpp
|
|||
}
|
||||
|
||||
// virtual method calling
|
||||
diff -r bb73b31e70e3 src/cpu/aarch64/vm/macroAssembler_aarch64.hpp
|
||||
--- a/src/cpu/aarch64/vm/macroAssembler_aarch64.hpp Tue Dec 19 15:25:42 2017 -0800
|
||||
+++ b/src/cpu/aarch64/vm/macroAssembler_aarch64.hpp Fri Jan 19 17:02:15 2018 +0000
|
||||
diff --git a/src/cpu/aarch64/vm/macroAssembler_aarch64.hpp b/src/cpu/aarch64/vm/macroAssembler_aarch64.hpp
|
||||
--- a/src/cpu/aarch64/vm/macroAssembler_aarch64.hpp
|
||||
+++ b/src/cpu/aarch64/vm/macroAssembler_aarch64.hpp
|
||||
@@ -870,7 +870,8 @@
|
||||
RegisterOrConstant itable_index,
|
||||
Register method_result,
|
||||
|
@ -63,9 +72,9 @@ diff -r bb73b31e70e3 src/cpu/aarch64/vm/macroAssembler_aarch64.hpp
|
|||
|
||||
// virtual method calling
|
||||
// n.b. x86 allows RegisterOrConstant for vtable_index
|
||||
diff -r bb73b31e70e3 src/cpu/aarch64/vm/templateTable_aarch64.cpp
|
||||
--- a/src/cpu/aarch64/vm/templateTable_aarch64.cpp Tue Dec 19 15:25:42 2017 -0800
|
||||
+++ b/src/cpu/aarch64/vm/templateTable_aarch64.cpp Fri Jan 19 17:02:15 2018 +0000
|
||||
diff --git a/src/cpu/aarch64/vm/templateTable_aarch64.cpp b/src/cpu/aarch64/vm/templateTable_aarch64.cpp
|
||||
--- a/src/cpu/aarch64/vm/templateTable_aarch64.cpp
|
||||
+++ b/src/cpu/aarch64/vm/templateTable_aarch64.cpp
|
||||
@@ -3279,11 +3279,11 @@
|
||||
transition(vtos, vtos);
|
||||
assert(byte_no == f1_byte, "use this argument");
|
||||
|
@ -111,9 +120,9 @@ diff -r bb73b31e70e3 src/cpu/aarch64/vm/templateTable_aarch64.cpp
|
|||
__ lookup_interface_method(// inputs: rec. class, interface, itable index
|
||||
r3, r0, rmethod,
|
||||
// outputs: method, scan temp. reg
|
||||
diff -r bb73b31e70e3 src/cpu/aarch64/vm/vtableStubs_aarch64.cpp
|
||||
--- a/src/cpu/aarch64/vm/vtableStubs_aarch64.cpp Tue Dec 19 15:25:42 2017 -0800
|
||||
+++ b/src/cpu/aarch64/vm/vtableStubs_aarch64.cpp Fri Jan 19 17:02:15 2018 +0000
|
||||
diff --git a/src/cpu/aarch64/vm/vtableStubs_aarch64.cpp b/src/cpu/aarch64/vm/vtableStubs_aarch64.cpp
|
||||
--- a/src/cpu/aarch64/vm/vtableStubs_aarch64.cpp
|
||||
+++ b/src/cpu/aarch64/vm/vtableStubs_aarch64.cpp
|
||||
@@ -29,6 +29,7 @@
|
||||
#include "code/vtableStubs.hpp"
|
||||
#include "interp_masm_aarch64.hpp"
|
||||
|
@ -149,10 +158,14 @@ diff -r bb73b31e70e3 src/cpu/aarch64/vm/vtableStubs_aarch64.cpp
|
|||
assert(VtableStub::receiver_location() == j_rarg0->as_VMReg(), "receiver expected in j_rarg0");
|
||||
// get receiver klass (also an implicit null-check)
|
||||
address npe_addr = __ pc();
|
||||
+ __ load_klass(recv_klass_reg, j_rarg0);
|
||||
|
||||
-
|
||||
- // Most registers are in use; we'll use r0, rmethod, r10, r11
|
||||
- __ load_klass(r10, j_rarg0);
|
||||
-
|
||||
- Label throw_icce;
|
||||
+ __ load_klass(recv_klass_reg, j_rarg0);
|
||||
|
||||
- // Get Method* and entrypoint for compiler
|
||||
+ // Receiver subtype check against REFC.
|
||||
+ // Destroys recv_klass_reg value.
|
||||
+ __ lookup_interface_method(// inputs: rec. class, interface
|
||||
|
@ -161,10 +174,7 @@ diff -r bb73b31e70e3 src/cpu/aarch64/vm/vtableStubs_aarch64.cpp
|
|||
+ recv_klass_reg, temp_reg,
|
||||
+ L_no_such_interface,
|
||||
+ /*return_method=*/false);
|
||||
|
||||
- Label throw_icce;
|
||||
-
|
||||
- // Get Method* and entrypoint for compiler
|
||||
+
|
||||
+ // Get selected method from declaring class and itable index
|
||||
+ __ load_klass(recv_klass_reg, j_rarg0); // restore recv_klass_reg
|
||||
__ lookup_interface_method(// inputs: rec. class, interface, itable index
|
||||
|
@ -284,3 +294,4 @@ diff -r bb73b31e70e3 src/cpu/aarch64/vm/vtableStubs_aarch64.cpp
|
|||
+ // b throw_ICCE_entry
|
||||
|
||||
}
|
||||
|
|
@ -0,0 +1,23 @@
|
|||
# HG changeset patch
|
||||
# User adinn
|
||||
# Date 1516891647 0
|
||||
# Thu Jan 25 14:47:27 2018 +0000
|
||||
# Node ID e321560ac819c05274c59f46f5cc28ccfd4b38ec
|
||||
# Parent 77baeab90732e7cfb6eb1b754a768a197bca1ab5
|
||||
8195859: AArch64: vtableStubs gtest fails after 8174962
|
||||
Summary: gtest vtableStubs introduced by 8174962 fails on AArch64 with an invalid insn encoding
|
||||
Reviewed-by: duke
|
||||
|
||||
diff --git a/src/cpu/aarch64/vm/macroAssembler_aarch64.cpp b/src/cpu/aarch64/vm/macroAssembler_aarch64.cpp
|
||||
--- a/src/cpu/aarch64/vm/macroAssembler_aarch64.cpp
|
||||
+++ b/src/cpu/aarch64/vm/macroAssembler_aarch64.cpp
|
||||
@@ -1049,7 +1049,8 @@
|
||||
ldr(method_result, Address(method_result, vtable_offset_in_bytes));
|
||||
} else {
|
||||
vtable_offset_in_bytes += vtable_index.as_constant() * wordSize;
|
||||
- ldr(method_result, Address(recv_klass, vtable_offset_in_bytes));
|
||||
+ ldr(method_result,
|
||||
+ form_address(rscratch1, recv_klass, vtable_offset_in_bytes));
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,61 @@
|
|||
# HG changeset patch
|
||||
# User adinn
|
||||
# Date 1516881392 0
|
||||
# Thu Jan 25 11:56:32 2018 +0000
|
||||
# Node ID 51d97ee431ff04f126c436b25dc75de7e0d2d4dd
|
||||
# Parent 2da4a52715d837b639edcfe37c66e5428c023abd
|
||||
8196136: AArch64: Correct register use in patch for JDK-8195685
|
||||
Summary: itable stubs must not use java argument registers as scratch registers
|
||||
Reviewed-by: aph
|
||||
|
||||
diff --git a/src/cpu/aarch64/vm/vtableStubs_aarch64.cpp b/src/cpu/aarch64/vm/vtableStubs_aarch64.cpp
|
||||
--- a/src/cpu/aarch64/vm/vtableStubs_aarch64.cpp
|
||||
+++ b/src/cpu/aarch64/vm/vtableStubs_aarch64.cpp
|
||||
@@ -63,8 +63,8 @@
|
||||
|
||||
#ifndef PRODUCT
|
||||
if (CountCompiledCalls) {
|
||||
- __ lea(r19, ExternalAddress((address) SharedRuntime::nof_megamorphic_calls_addr()));
|
||||
- __ incrementw(Address(r19));
|
||||
+ __ lea(r16, ExternalAddress((address) SharedRuntime::nof_megamorphic_calls_addr()));
|
||||
+ __ incrementw(Address(r16));
|
||||
}
|
||||
#endif
|
||||
|
||||
@@ -73,13 +73,13 @@
|
||||
|
||||
// get receiver klass
|
||||
address npe_addr = __ pc();
|
||||
- __ load_klass(r19, j_rarg0);
|
||||
+ __ load_klass(r16, j_rarg0);
|
||||
|
||||
#ifndef PRODUCT
|
||||
if (DebugVtables) {
|
||||
Label L;
|
||||
// check offset vs vtable length
|
||||
- __ ldrw(rscratch1, Address(r19, Klass::vtable_length_offset()));
|
||||
+ __ ldrw(rscratch1, Address(r16, Klass::vtable_length_offset()));
|
||||
__ cmpw(rscratch1, vtable_index * vtableEntry::size());
|
||||
__ br(Assembler::GT, L);
|
||||
__ enter();
|
||||
@@ -91,7 +91,7 @@
|
||||
}
|
||||
#endif // PRODUCT
|
||||
|
||||
- __ lookup_virtual_method(r19, vtable_index, rmethod);
|
||||
+ __ lookup_virtual_method(r16, vtable_index, rmethod);
|
||||
|
||||
if (DebugVtables) {
|
||||
Label L;
|
||||
@@ -145,9 +145,9 @@
|
||||
// j_rarg0: Receiver
|
||||
|
||||
|
||||
- // Most registers are in use; we'll use r0, rmethod, r10, r11
|
||||
+ // Most registers are in use; we'll use r16, rmethod, r10, r11
|
||||
const Register recv_klass_reg = r10;
|
||||
- const Register holder_klass_reg = r0; // declaring interface klass (DECC)
|
||||
+ const Register holder_klass_reg = r16; // declaring interface klass (DECC)
|
||||
const Register resolved_klass_reg = rmethod; // resolved interface klass (REFC)
|
||||
const Register temp_reg = r11;
|
||||
const Register icholder_reg = rscratch2;
|
|
@ -853,7 +853,7 @@ Provides: java-%{javaver}-%{origin}-accessiblity = %{epoch}:%{version}-%{release
|
|||
|
||||
Name: java-%{majorver}-%{origin}
|
||||
Version: %{newjavaver}.%{buildver}
|
||||
Release: 3%{?dist}
|
||||
Release: 4%{?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
|
||||
|
@ -932,8 +932,15 @@ Patch104: bootcycle_jobs.patch
|
|||
|
||||
Patch400: ppc_stack_overflow_fix.patch
|
||||
Patch401: aarch64BuildFailure.patch
|
||||
# Fix for: Aarch64 fails to build in 9.0.4+11 (January 2018 CPU)
|
||||
Patch402: 8195685.jdk9.patch
|
||||
|
||||
# Fix AArch64 build issues which got introduced with 9.0.4+11 (January 2018 CPU)
|
||||
#
|
||||
# JDK-8195685 AArch64 cannot build with JDK-8174962
|
||||
# JDK-8196136 AArch64: Correct register use in patch for JDK-8195685
|
||||
# JDK-8195859 AArch64: vtableStubs gtest fails after 8174962
|
||||
Patch402: JDK-8195685-cannot-build-with-8174962.patch
|
||||
Patch403: JDK-8196136-correct-register-use-8195685.patch
|
||||
Patch404: JDK-8195859-vtableStubs-gtest-fails-after-8174962.patch
|
||||
|
||||
# Non-OpenJDK fixes
|
||||
Patch1000: enableCommentedOutSystemNss.patch
|
||||
|
@ -1244,6 +1251,8 @@ sh %{SOURCE12}
|
|||
%patch401 -p1
|
||||
pushd hotspot
|
||||
%patch402 -p1
|
||||
%patch403 -p1
|
||||
%patch404 -p1
|
||||
popd
|
||||
|
||||
popd # openjdk
|
||||
|
@ -1828,6 +1837,10 @@ require "copy_jdk_configs.lua"
|
|||
|
||||
|
||||
%changelog
|
||||
* Fri Jan 26 2018 Severin Gehwolf <sgehwolf@redhat.com> - 1:9.0.4.11-4
|
||||
- Update AArch64 patch series (3) from upstream which fix
|
||||
FTBFS on AArch64 post-January CPU.
|
||||
|
||||
* Mon Jan 22 2018 Severin Gehwolf <sgehwolf@redhat.com> - 1:9.0.4.11-3
|
||||
- Add Aarch64 patch for 8195685. Broken Aarch64 after 9.0.4.
|
||||
|
||||
|
|
Loading…
Reference in New Issue