[PATCH 0/7] IcedTea: Build (efficiently) on aarch64-linux

OpenSubmitted by Simon South.
Details
One participant
  • Simon South
Owner
unassigned
Severity
normal
S
S
Simon South wrote on 15 Jun 17:18 +0200
(address . guix-patches@gnu.org)(name . Simon South)(address . simon@simonsouth.net)
20200615151856.12283-1-simon@simonsouth.net
This patch series applies a number of changes to the icedtea-6, -7 and -8packages that allow them to build (efficiently) on aarch64-linux systems.
It assumes the patches in issues 41748 and 41648 have already been applied, inthat order.
With these three sets of patches I've been able to complete the entire Javabootstrap process on both AArch64 and x86_64 and have successfully compiledand run a Java application on AArch64 using OpenJDK 14.
The changes in this series
- Ensure the correct number of parallel build jobs is used. The "--with-parallel-jobs" option to IcedTea's configure script enables a parallel build but by default, the script uses its own heuristic to decide how many jobs to run simultaneously. This can produce a poor result: On my dual-core, hyperthreaded x86_64 machine, IcedTea 6 picks five jobs (anything above two is inefficient); on my six-core AArch64 machine, IcedTea 7 picks only two (on a machine where engaging every core is important!). In any case, there is no guarantee the figure the script chooses will match the number of jobs requested by the user.
These patches address this by ensuring the "--with-parallel-jobs" parameter is passed to configure along with a parameter explicitly specifying the correct number of jobs to use.
- Remove an obsolete and architecture-dependent patch. The "gcc-segfault" patches yield a broken JIT on AArch64 because they embed a constant value, 11, that is architecture-dependent and apparently valid only for x86_64. This number represents the length of an array whose size is determined by the HotSpot build process and output in code it generates (at src/share/vm/adlc/output_h.cpp:893).
Presumably the patches could be fixed, but I've been unable to reproduce the problem they're meant to solve and I suspect it was only ever an issue with gcc 5, meaning the patches are now obsolete. (The move to gcc 7 occurred about three months after they were added.)
My changes remove these patches, including (for completeness and consistency) the patch to IcedTea 6 which doesn't actually interfere with the AArch64 build as it doesn't produce a JIT for that platform.
- Allow all three IcedTea packages to build on aarch64-linux. For IcedTea 6, this means applying a backport of a patch to JDK 9 (see http://openjdk.java.net/jeps/237)that extends the support for AArch64 in HotSpot's shared code and allows the portable Zero VM to be built. For IcedTea 7, it means removing an unneeded C++ template that causes the build to fail when using gcc 7 and its default support for only the C++98 standard.
IcedTea 8 (and subsequent versions of OpenJDK) support AArch64 and gcc 7 out-of-the-box and require no specific changes.
--Simon Southsimon@simonsouth.net

Simon South (7): gnu: icedtea-6: Build in parallel using correct number of jobs. gnu: icedtea-6: Remove obsolete, architecture-dependent patch. gnu: icedtea-6: Fix build on aarch64-linux. gnu: icedtea-7: Build in parallel using correct number of jobs. gnu: icedtea-7: Fix build on aarch64-linux. gnu: icedtea-8: Build in parallel using correct number of jobs. gnu: icedtea-8: Fix build on aarch64-linux.
gnu/local.mk | 4 +- gnu/packages/java.scm | 32 +- ...tea-6-extend-hotspot-aarch64-support.patch | 1831 +++++++++++++++++ ...ea-6-hotspot-gcc-segfault-workaround.patch | 42 - .../icedtea-7-hotspot-aarch64-use-c++98.patch | 33 + ...ea-7-hotspot-gcc-segfault-workaround.patch | 45 - 6 files changed, 1879 insertions(+), 108 deletions(-) create mode 100644 gnu/packages/patches/icedtea-6-extend-hotspot-aarch64-support.patch delete mode 100644 gnu/packages/patches/icedtea-6-hotspot-gcc-segfault-workaround.patch create mode 100644 gnu/packages/patches/icedtea-7-hotspot-aarch64-use-c++98.patch delete mode 100644 gnu/packages/patches/icedtea-7-hotspot-gcc-segfault-workaround.patch
-- 2.26.2
S
S
Simon South wrote on 15 Jun 17:22 +0200
[PATCH 1/7] gnu: icedtea-6: Build in parallel using correct number of jobs.
(address . 41871@debbugs.gnu.org)(name . Simon South)(address . simon@simonsouth.net)
20200615152257.12938-1-simon@simonsouth.net
* gnu/packages/java.scm (icedtea-6)[arguments]<#:configure-flags>: Supplyparameter to "--with-parallel-jobs".--- gnu/packages/java.scm | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-)
Toggle diff (16 lines)diff --git a/gnu/packages/java.scm b/gnu/packages/java.scmindex 0370d160a1..dbc0061a4e 100644--- a/gnu/packages/java.scm+++ b/gnu/packages/java.scm@@ -795,7 +795,8 @@ machine."))) `("--enable-bootstrap" "--enable-nss" "--without-rhino"- "--with-parallel-jobs"+ ,(string-append "--with-parallel-jobs="+ (number->string (parallel-job-count))) "--disable-downloading" "--disable-tests" ,(string-append "--with-ecj="-- 2.26.2
S
S
Simon South wrote on 15 Jun 17:22 +0200
[PATCH 2/7] gnu: icedtea-6: Remove obsolete, architecture-dependent patch.
(address . 41871@debbugs.gnu.org)(name . Simon South)(address . simon@simonsouth.net)
20200615152257.12938-2-simon@simonsouth.net
* gnu/packages/java.scm (icedtea-6)[arguments]<#:phases>: Remove specialhandling of "hotspot-src" input during "unpack" phase.[native-inputs]: Remove patch to "hotspot-src".* gnu/packages/patches/icedtea-6-hotspot-gcc-segfault-workaround.patch: Deletefile.* gnu/local.mk (dist_patch_DATA): Remove it.--- gnu/local.mk | 1 - gnu/packages/java.scm | 9 +--- ...ea-6-hotspot-gcc-segfault-workaround.patch | 42 ------------------- 3 files changed, 2 insertions(+), 50 deletions(-) delete mode 100644 gnu/packages/patches/icedtea-6-hotspot-gcc-segfault-workaround.patch
Toggle diff (90 lines)diff --git a/gnu/local.mk b/gnu/local.mkindex e1e3247642..a39baa12f5 100644--- a/gnu/local.mk+++ b/gnu/local.mk@@ -1093,7 +1093,6 @@ dist_patch_DATA = \ %D%/packages/patches/icecat-use-older-reveal-hidden-html.patch \ %D%/packages/patches/icecat-use-system-graphite2+harfbuzz.patch \ %D%/packages/patches/icecat-use-system-media-libs.patch \- %D%/packages/patches/icedtea-6-hotspot-gcc-segfault-workaround.patch \ %D%/packages/patches/icedtea-7-hotspot-gcc-segfault-workaround.patch \ %D%/packages/patches/icu4c-CVE-2020-10531.patch \ %D%/packages/patches/id3lib-CVE-2007-4460.patch \diff --git a/gnu/packages/java.scm b/gnu/packages/java.scmindex dbc0061a4e..87becb66e3 100644--- a/gnu/packages/java.scm+++ b/gnu/packages/java.scm@@ -829,11 +829,8 @@ machine."))) (assoc-ref inputs (string-append part "-src")) part))- '("jdk" "corba"+ '("jdk" "hotspot" "corba" "langtools" "jaxp" "jaxws")))- (with-directory-excursion "openjdk"- (invoke "tar" "xvf" (assoc-ref inputs "hotspot-src"))- (rename-file "hg-checkout" "hotspot")) (substitute* "patches/freetypeversion.patch" (("REQUIRED_FREETYPE_VERSION = 2.2.1") "REQUIRED_FREETYPE_VERSION = 2.10.1"))@@ -1059,9 +1056,7 @@ machine."))) (changeset "jdk6-b41"))) (sha256 (base32- "07lc1z4k5dj9nrc1wvwmpvxr3xgxrdkdh53xb95skk5ij49yagfd"))- (patches- (search-patches "icedtea-6-hotspot-gcc-segfault-workaround.patch"))))+ "07lc1z4k5dj9nrc1wvwmpvxr3xgxrdkdh53xb95skk5ij49yagfd")))) ("corba-src" ,(origin (method hg-fetch)diff --git a/gnu/packages/patches/icedtea-6-hotspot-gcc-segfault-workaround.patch b/gnu/packages/patches/icedtea-6-hotspot-gcc-segfault-workaround.patchdeleted file mode 100644index ef090e0ec9..0000000000--- a/gnu/packages/patches/icedtea-6-hotspot-gcc-segfault-workaround.patch+++ /dev/null@@ -1,42 +0,0 @@-# HG changeset patch-# User Gábor Boskovits <boskovits@gmail.com>-# Date 1530519413 -7200-# Mon Jul 02 10:16:53 2018 +0200-# Node ID 77e5bc9e238a28d17e097647badc04ed67a6a452-# Parent 1ae05a34e052d1672b4a7894ddf5fc2f662eb861-Fix gcc segfault.--diff -r 1ae05a34e052 -r 77e5bc9e238a src/share/vm/opto/output.cpp---- a/src/share/vm/opto/output.cpp Sun Dec 25 23:52:13 2016 +0000-+++ b/src/share/vm/opto/output.cpp Mon Jul 02 10:16:53 2018 +0200-@@ -1758,6 +1758,8 @@- - // Initializer for class Scheduling- -+volatile const void *eePointer = Pipeline_Use::elaborated_elements;-+- Scheduling::Scheduling(Arena *arena, Compile &compile)- : _arena(arena),- _cfg(compile.cfg()),-@@ -1802,8 +1804,8 @@- - // Clear the bundling information- memcpy(_bundle_use_elements,-- Pipeline_Use::elaborated_elements,-- sizeof(Pipeline_Use::elaborated_elements));-+ (void *)eePointer,-+ 11*sizeof(Pipeline_Use_Element));- - // Get the last node- Block *bb = _cfg->_blocks[_cfg->_blocks.size()-1];-@@ -1854,8 +1856,8 @@- _bundle_use.reset();- - memcpy(_bundle_use_elements,-- Pipeline_Use::elaborated_elements,-- sizeof(Pipeline_Use::elaborated_elements));-+ (void *)eePointer,-+ 11*sizeof(Pipeline_Use_Element));- }- - //------------------------------ScheduleAndBundle-------------------------------- 2.26.2
S
S
Simon South wrote on 15 Jun 17:22 +0200
[PATCH 3/7] gnu: icedtea-6: Fix build on aarch64-linux.
(address . 41871@debbugs.gnu.org)(name . Simon South)(address . simon@simonsouth.net)
20200615152257.12938-3-simon@simonsouth.net
* gnu/packages/java.scm (icedtea-6)[source]: Add patch.* gnu/packages/patches/icedtea-6-extend-hotspot-aarch64-support.patch:New file.* gnu/local.mk (dist_patch_DATA): Add it.--- gnu/local.mk | 1 + gnu/packages/java.scm | 2 + ...tea-6-extend-hotspot-aarch64-support.patch | 1831 +++++++++++++++++ 3 files changed, 1834 insertions(+) create mode 100644 gnu/packages/patches/icedtea-6-extend-hotspot-aarch64-support.patch
Toggle diff (1864 lines)diff --git a/gnu/local.mk b/gnu/local.mkindex a39baa12f5..36dbbd0968 100644--- a/gnu/local.mk+++ b/gnu/local.mk@@ -1093,6 +1093,7 @@ dist_patch_DATA = \ %D%/packages/patches/icecat-use-older-reveal-hidden-html.patch \ %D%/packages/patches/icecat-use-system-graphite2+harfbuzz.patch \ %D%/packages/patches/icecat-use-system-media-libs.patch \+ %D%/packages/patches/icedtea-6-extend-hotspot-aarch64-support.patch \ %D%/packages/patches/icedtea-7-hotspot-gcc-segfault-workaround.patch \ %D%/packages/patches/icu4c-CVE-2020-10531.patch \ %D%/packages/patches/id3lib-CVE-2007-4460.patch \diff --git a/gnu/packages/java.scm b/gnu/packages/java.scmindex 87becb66e3..3618b9ee3f 100644--- a/gnu/packages/java.scm+++ b/gnu/packages/java.scm@@ -767,6 +767,8 @@ machine."))) (sha256 (base32 "0bg9sb4f7qbq77c0zf9m17p47ga0kf0r9622g9p12ysg26jd1ksg"))+ (patches (search-patches+ "icedtea-6-extend-hotspot-aarch64-support.patch")) (modules '((guix build utils))) (snippet '(begindiff --git a/gnu/packages/patches/icedtea-6-extend-hotspot-aarch64-support.patch b/gnu/packages/patches/icedtea-6-extend-hotspot-aarch64-support.patchnew file mode 100644index 0000000000..9dc112a344--- /dev/null+++ b/gnu/packages/patches/icedtea-6-extend-hotspot-aarch64-support.patch@@ -0,0 +1,1831 @@+From d51cb8c0f7966ac0b870e90e421cc8a796d98abf Mon Sep 17 00:00:00 2001+From: Simon South <simon@simonsouth.net>+Date: Tue, 9 Jun 2020 13:48:42 -0400+Subject: [PATCH] Extend AArch64 support++This adds to IcedTea 6 a patch that extends the support for AArch64 in+its version of HotSpot, allowing the portable Zero virtual machine to+be built for that platform.++The patch added is a backport of the one prepared for JDK 9 by the+OpenJDK AArch64 Porting Project, available (as of 11 June 2020) for+download from https://openjdk.java.net/jeps/237.+---+ Makefile.am | 3 +-+ Makefile.in | 12 +-+ .../hs23/aarch64-extended-support.patch | 1766 ++++++++++++++++++ 3 files changed, 1775 insertions(+), 6 deletions(-)+ create mode 100644 patches/hotspot/hs23/aarch64-extended-support.patch++diff --git a/Makefile.am b/Makefile.am+index 97dac85..f5c917b 100644+--- a/Makefile.am++++ b/Makefile.am+@@ -621,7 +621,8 @@ ICEDTEA_PATCHES = \+ patches/openjdk/6260348-pr3068.patch \+ patches/openjdk/6961123-pr2975.patch \+ patches/pr2800-missing_resources.patch \+- patches/pr3213-conditional_arm32jit.patch++ patches/pr3213-conditional_arm32jit.patch \++ patches/hotspot/hs23/aarch64-extended-support.patch+ + if WITH_RHINO+ ICEDTEA_PATCHES += \+diff --git a/Makefile.in b/Makefile.in+index aced7c2..e3545ee 100644+--- a/Makefile.in++++ b/Makefile.in+@@ -1049,11 +1049,13 @@ ICEDTEA_PATCHES = $(DROP_PATCHES) $(SECURITY_PATCHES) \+ patches/openjdk/6260348-pr3068.patch \+ patches/openjdk/6961123-pr2975.patch \+ patches/pr2800-missing_resources.patch \+- patches/pr3213-conditional_arm32jit.patch $(am__append_21) \+- $(am__append_22) $(am__append_23) $(am__append_24) \+- $(am__append_25) $(am__append_26) $(am__append_27) \+- $(am__append_28) $(am__append_29) $(am__append_30) \+- $(am__append_31) $(am__append_32) $(DISTRIBUTION_PATCHES)++ patches/pr3213-conditional_arm32jit.patch \++ patches/hotspot/hs23/aarch64-extended-support.patch \++ $(am__append_21) $(am__append_22) $(am__append_23) \++ $(am__append_24) $(am__append_25) $(am__append_26) \++ $(am__append_27) $(am__append_28) $(am__append_29) \++ $(am__append_30) $(am__append_31) $(am__append_32) \++ $(DISTRIBUTION_PATCHES)+ @ENABLE_NSS_FALSE@NSS_PATCHES = patches/nss-not-enabled-config.patch+ @ENABLE_NSS_TRUE@NSS_PATCHES = patches/nss-config.patch+ +diff --git a/patches/hotspot/hs23/aarch64-extended-support.patch b/patches/hotspot/hs23/aarch64-extended-support.patch+new file mode 100644+index 0000000..7817f4d+--- /dev/null++++ b/patches/hotspot/hs23/aarch64-extended-support.patch+@@ -0,0 +1,1766 @@++diff --git openjdk.orig/hotspot/agent/src/os/linux/LinuxDebuggerLocal.c openjdk/hotspot/agent/src/os/linux/LinuxDebuggerLocal.c++index 5771fdd..b23cc17 100644++--- openjdk.orig/hotspot/agent/src/os/linux/LinuxDebuggerLocal.c+++++ openjdk/hotspot/agent/src/os/linux/LinuxDebuggerLocal.c++@@ -304,6 +304,9 @@ JNIEXPORT jlongArray JNICALL Java_sun_jvm_hotspot_debugger_linux_LinuxDebuggerLo++ #ifdef amd64++ #define NPRGREG sun_jvm_hotspot_debugger_amd64_AMD64ThreadContext_NPRGREG++ #endif+++#ifdef aarch64+++#define NPRGREG 32+++#endif++ #if defined(sparc) || defined(sparcv9)++ #define NPRGREG sun_jvm_hotspot_debugger_sparc_SPARCThreadContext_NPRGREG++ #endif++@@ -406,6 +409,12 @@ JNIEXPORT jlongArray JNICALL Java_sun_jvm_hotspot_debugger_linux_LinuxDebuggerLo++ regs[REG_INDEX(R_O7)] = gregs.u_regs[14];++ #endif /* sparc */++ +++#if defined(aarch64)++++++#define REG_INDEX(reg) sun_jvm_hotspot_debugger_aarch64_AARCH64ThreadContext_##reg++++++#endif /* aarch64 */+++++ ++ (*env)->ReleaseLongArrayElements(env, array, regs, JNI_COMMIT);++ return array;++diff --git openjdk.orig/hotspot/agent/src/os/linux/libproc.h openjdk/hotspot/agent/src/os/linux/libproc.h++index e4d77f7..c02b841 100644++--- openjdk.orig/hotspot/agent/src/os/linux/libproc.h+++++ openjdk/hotspot/agent/src/os/linux/libproc.h++@@ -54,6 +54,10 @@ struct pt_regs {++ ++ #endif //sparc or sparcv9++ +++#if defined(aarch64)+++#include "asm/ptrace.h"+++#endif+++++ /************************************************************************************++ ++ 0. This is very minimal subset of Solaris libproc just enough for current application.++@@ -97,6 +101,9 @@ unsigned long regs[IA64_REG_COUNT]; /* integer and fp regs */++ #if defined(sparc) || defined(sparcv9)++ #define user_regs_struct pt_regs++ #endif+++#if defined(aarch64)+++#define user_regs_struct user_pt_regs+++#endif++ ++ // This C bool type must be int for compatibility with Linux calls and++ // it would be a mistake to equivalence it to C++ bool on many platforms++diff --git openjdk.orig/hotspot/make/defs.make openjdk/hotspot/make/defs.make++index 44f21f8..4e8d00b 100644++--- openjdk.orig/hotspot/make/defs.make+++++ openjdk/hotspot/make/defs.make++@@ -232,7 +232,7 @@ ifneq ($(OSNAME),windows)++ ++ # Use uname output for SRCARCH, but deal with platform differences. If ARCH++ # is not explicitly listed below, it is treated as x86. ++- SRCARCH = $(ARCH/$(filter sparc sparc64 ia64 amd64 x86_64 arm ppc zero,$(ARCH)))+++ SRCARCH = $(ARCH/$(filter sparc sparc64 ia64 amd64 x86_64 arm ppc aarch64 zero,$(ARCH)))++ ARCH/ = x86++ ARCH/sparc = sparc++ ARCH/sparc64= sparc++@@ -242,6 +242,7 @@ ifneq ($(OSNAME),windows)++ ARCH/ppc64 = ppc++ ARCH/ppc = ppc++ ARCH/arm = arm+++ ARCH/aarch64= aarch64++ ARCH/zero = zero++ ++ # BUILDARCH is usually the same as SRCARCH, except for sparcv9++@@ -267,11 +268,12 @@ ifneq ($(OSNAME),windows)++ LIBARCH/sparcv9 = sparcv9++ LIBARCH/ia64 = ia64++ LIBARCH/ppc64 = ppc+++ LIBARCH/aarch64 = aarch64++ LIBARCH/ppc = ppc++ LIBARCH/arm = arm++ LIBARCH/zero = $(ZERO_LIBARCH)++ ++- LP64_ARCH = sparcv9 amd64 ia64 zero+++ LP64_ARCH = sparcv9 amd64 ia64 aarch64 zero++ endif++ ++ # Required make macro settings for all platforms++diff --git openjdk.orig/hotspot/make/linux/makefiles/buildtree.make openjdk/hotspot/make/linux/makefiles/buildtree.make++index 7c3d4f9..3bc7e8a 100644++--- openjdk.orig/hotspot/make/linux/makefiles/buildtree.make+++++ openjdk/hotspot/make/linux/makefiles/buildtree.make++@@ -385,6 +385,7 @@ DATA_MODE/sparc = 32++ DATA_MODE/sparcv9 = 64++ DATA_MODE/amd64 = 64++ DATA_MODE/ia64 = 64+++DATA_MODE/aarch64 = 64++ DATA_MODE/zero = $(ARCH_DATA_MODEL)++ ++ JAVA_FLAG/32 = -d32++diff --git openjdk.orig/hotspot/make/linux/makefiles/defs.make openjdk/hotspot/make/linux/makefiles/defs.make++index 7bb3149..39ffda4 100644++--- openjdk.orig/hotspot/make/linux/makefiles/defs.make+++++ openjdk/hotspot/make/linux/makefiles/defs.make++@@ -118,6 +118,15 @@ ifeq ($(ARCH), ppc)++ HS_ARCH = ppc++ endif++ +++# AARCH64+++ifeq ($(ARCH), aarch64)+++ ARCH_DATA_MODEL = 64+++ MAKE_ARGS += LP64=1+++ PLATFORM = linux-aarch64+++ VM_PLATFORM = linux_aarch64+++ HS_ARCH = aarch64+++endif+++++ # determine if HotSpot is being built in JDK6 or earlier version++ JDK6_OR_EARLIER=0++ ifeq "$(shell expr \( '$(JDK_MAJOR_VERSION)' != '' \& '$(JDK_MINOR_VERSION)' != '' \& '$(JDK_MICRO_VERSION)' != '' \))" "1"++diff --git openjdk.orig/hotspot/make/linux/makefiles/gcc.make openjdk/hotspot/make/linux/makefiles/gcc.make++index 897e3a6..44f1673 100644++--- openjdk.orig/hotspot/make/linux/makefiles/gcc.make+++++ openjdk/hotspot/make/linux/makefiles/gcc.make++@@ -104,6 +104,7 @@ endif++ ARCHFLAG = $(ARCHFLAG/$(BUILDARCH))++ ARCHFLAG/i486 = -m32 -march=i586++ ARCHFLAG/amd64 = -m64+++ARCHFLAG/aarch64 =++ ARCHFLAG/ia64 =++ ARCHFLAG/sparc = -m32 -mcpu=v9++ ARCHFLAG/sparcv9 = -m64 -mcpu=v9++diff --git openjdk.orig/hotspot/src/os/linux/vm/os_linux.cpp openjdk/hotspot/src/os/linux/vm/os_linux.cpp++index c1b0e5c..9f7cda0 100644++--- openjdk.orig/hotspot/src/os/linux/vm/os_linux.cpp+++++ openjdk/hotspot/src/os/linux/vm/os_linux.cpp++@@ -296,6 +296,8 @@ static char cpu_arch[] = "sparcv9";++ # else++ static char cpu_arch[] = "sparc";++ # endif+++#elif defined(AARCH64)+++static char cpu_arch[] = "aarch64";++ #else++ #error Add appropriate cpu_arch setting++ #endif++@@ -1442,7 +1444,7 @@ void os::Linux::clock_init() {++ #ifndef SYS_clock_getres++ ++ #if defined(IA32) || defined(AMD64)++-#define SYS_clock_getres IA32_ONLY(266) AMD64_ONLY(229)+++#define SYS_clock_getres IA32_ONLY(266) AMD64_ONLY(229) AARCH64_ONLY(114)++ #define sys_clock_getres(x,y) ::syscall(SYS_clock_getres, x, y)++ #else++ #warning "SYS_clock_getres not defined for this platform, disabling fast_thread_cpu_time"++@@ -1930,7 +1932,7 @@ void * os::dll_load(const char *filename, char *ebuf, int ebuflen)++ static Elf32_Half running_arch_code=EM_AARCH64;++ #else++ #error Method os::dll_load requires that one of following is defined:\++- IA32, AMD64, IA64, __sparc, __powerpc__, ARM, S390, ALPHA, MIPS, MIPSEL, PARISC, M68K, SH+++ IA32, AMD64, IA64, __sparc, __powerpc__, ARM, S390, ALPHA, MIPS, MIPSEL, PARISC, M68K, SH, AARCH64++ #endif++ ++ // Identify compatability class for VM's architecture and library's architecture++@@ -3056,7 +3058,7 @@ void os::large_page_init() {++ ++ #ifndef ZERO++ _large_page_size = IA32_ONLY(4 * M) AMD64_ONLY(2 * M) IA64_ONLY(256 * M) SPARC_ONLY(4 * M)++- ARM_ONLY(2 * M) PPC_ONLY(4 * M);+++ ARM_ONLY(2 * M) PPC_ONLY(4 * M) AARCH64_ONLY(2 * M);++ #endif // ZERO++ ++ FILE *fp = fopen("/proc/meminfo", "r");++@@ -5378,11 +5380,11 @@ void Parker::unpark() {++ extern char** environ;++ ++ #ifndef __NR_fork++-#define __NR_fork IA32_ONLY(2) IA64_ONLY(not defined) AMD64_ONLY(57)+++#define __NR_fork IA32_ONLY(2) IA64_ONLY(not defined) AMD64_ONLY(57) AARCH64_ONLY(1079)++ #endif++ ++ #ifndef __NR_execve++-#define __NR_execve IA32_ONLY(11) IA64_ONLY(1033) AMD64_ONLY(59)+++#define __NR_execve IA32_ONLY(11) IA64_ONLY(1033) AMD64_ONLY(59) AARCH64_ONLY(221)++ #endif++ ++ // Run the specified command in a separate process. Return its exit value,++diff --git openjdk.orig/hotspot/src/share/vm/adlc/main.cpp openjdk/hotspot/src/share/vm/adlc/main.cpp++index 47e207a..b93504e 100644++--- openjdk.orig/hotspot/src/share/vm/adlc/main.cpp+++++ openjdk/hotspot/src/share/vm/adlc/main.cpp++@@ -244,6 +244,11 @@ int main(int argc, char *argv[])++ AD.addInclude(AD._CPP_file, "assembler_arm.inline.hpp");++ AD.addInclude(AD._CPP_file, "nativeInst_arm.hpp");++ AD.addInclude(AD._CPP_file, "vmreg_arm.inline.hpp");+++#endif+++#ifdef TARGET_ARCH_aarch64+++ AD.addInclude(AD._CPP_file, "assembler_aarch64.inline.hpp");+++ AD.addInclude(AD._CPP_file, "nativeInst_aarch64.hpp");+++ AD.addInclude(AD._CPP_file, "vmreg_aarch64.inline.hpp");++ #endif++ AD.addInclude(AD._HPP_file, "memory/allocation.hpp");++ AD.addInclude(AD._HPP_file, "opto/machnode.hpp");++diff --git openjdk.orig/hotspot/src/share/vm/asm/assembler.cpp openjdk/hotspot/src/share/vm/asm/assembler.cpp++index 2bcdcbc..57787ac 100644++--- openjdk.orig/hotspot/src/share/vm/asm/assembler.cpp+++++ openjdk/hotspot/src/share/vm/asm/assembler.cpp++@@ -43,6 +43,9 @@++ #ifdef TARGET_ARCH_ppc++ # include "assembler_ppc.inline.hpp"++ #endif+++#ifdef TARGET_ARCH_aarch64+++# include "assembler_aarch64.inline.hpp"+++#endif++ ++ ++ // Implementation of AbstractAssembler++diff --git openjdk.orig/hotspot/src/share/vm/asm/assembler.hpp openjdk/hotspot/src/share/vm/asm/assembler.hpp++index c25aa3f..4f77825 100644++--- openjdk.orig/hotspot/src/share/vm/asm/assembler.hpp+++++ openjdk/hotspot/src/share/vm/asm/assembler.hpp++@@ -51,6 +51,10 @@++ # include "register_ppc.hpp"++ # include "vm_version_ppc.hpp"++ #endif+++#ifdef TARGET_ARCH_aarch64+++# include "register_aarch64.hpp"+++# include "vm_version_aarch64.hpp"+++#endif++ ++ // This file contains platform-independent assembler declarations.++ ++@@ -459,6 +463,9 @@ class AbstractAssembler : public ResourceObj {++ #ifdef TARGET_ARCH_ppc++ # include "assembler_ppc.hpp"++ #endif+++#ifdef TARGET_ARCH_aarch64+++# include "assembler_aarch64.hpp"+++#endif++ ++ ++ #endif // SHARE_VM_ASM_ASSEMBLER_HPP++diff --git openjdk.orig/hotspot/src/share/vm/asm/codeBuffer.hpp openjdk/hotspot/src/share/vm/asm/codeBuffer.hpp++index 685297a..002faef 100644++--- openjdk.orig/hotspot/src/share/vm/asm/codeBuffer.hpp+++++ openjdk/hotspot/src/share/vm/asm/codeBuffer.hpp++@@ -573,6 +573,9 @@ class CodeBuffer: public StackObj {++ #ifdef TARGET_ARCH_ppc++ # include "codeBuffer_ppc.hpp"++ #endif+++#ifdef TARGET_ARCH_aarch64+++# include "codeBuffer_aarch64.hpp"+++#endif++ ++ };++ ++diff --git openjdk.orig/hotspot/src/share/vm/c1/c1_Canonicalizer.cpp openjdk/hotspot/src/share/vm/c1/c1_Canonicalizer.cpp++index c95a23c..2ec31e5 100644++--- openjdk.orig/hotspot/src/share/vm/c1/c1_Canonicalizer.cpp+++++ openjdk/hotspot/src/share/vm/c1/c1_Canonicalizer.cpp++@@ -877,6 +877,13 @@ static bool match(UnsafeRawOp* x,++ return false;++ }++ +++// AARCH64 cannot handle shifts which are not either 0, or log2 of the type size+++#ifdef AARCH64+++ if (*log2_scale != 0 &&+++ (1 << *log2_scale) != type2aelembytes(x->basic_type(), true))+++ return false;+++#endif+++++ // If the value is pinned then it will be always be computed so++ // there's no profit to reshaping the expression.++ return !root->is_pinned();++diff --git openjdk.orig/hotspot/src/share/vm/c1/c1_Defs.hpp openjdk/hotspot/src/share/vm/c1/c1_Defs.hpp++index bebb3b0..ddaceb7 100644++--- openjdk.orig/hotspot/src/share/vm/c1/c1_Defs.hpp+++++ openjdk/hotspot/src/share/vm/c1/c1_Defs.hpp++@@ -41,6 +41,9 @@++ #ifdef TARGET_ARCH_ppc++ # include "register_ppc.hpp"++ #endif+++#ifdef TARGET_ARCH_aarch64+++# include "register_aarch64.hpp"+++#endif++ ++ // set frame size and return address offset to these values in blobs++ // (if the compiled frame uses ebp as link pointer on IA; otherwise,++@@ -62,6 +65,9 @@ enum {++ #ifdef TARGET_ARCH_ppc++ # include "c1_Defs_ppc.hpp"++ #endif+++#ifdef TARGET_ARCH_aarch64+++# include "c1_Defs_aarch64.hpp"+++#endif++ ++ ++ // native word offsets from memory address++diff --git openjdk.orig/hotspot/src/share/vm/c1/c1_FpuStackSim.hpp openjdk/hotspot/src/share/vm/c1/c1_FpuStackSim.hpp++index a1e4c38..491b064 100644++--- openjdk.orig/hotspot/src/share/vm/c1/c1_FpuStackSim.hpp+++++ openjdk/hotspot/src/share/vm/c1/c1_FpuStackSim.hpp++@@ -44,6 +44,9 @@ class FpuStackSim;++ #ifdef TARGET_ARCH_ppc++ # include "c1_FpuStackSim_ppc.hpp"++ #endif+++#ifdef TARGET_ARCH_aarch64+++# include "c1_FpuStackSim_aarch64.hpp"+++#endif++ ++ ++ #endif // SHARE_VM_C1_C1_FPUSTACKSIM_HPP++diff --git openjdk.orig/hotspot/src/share/vm/c1/c1_FrameMap.cpp openjdk/hotspot/src/share/vm/c1/c1_FrameMap.cpp++index ea50b27..6a3dc63 100644++--- openjdk.orig/hotspot/src/share/vm/c1/c1_FrameMap.cpp+++++ openjdk/hotspot/src/share/vm/c1/c1_FrameMap.cpp++@@ -41,6 +41,9 @@++ #ifdef TARGET_ARCH_ppc++ # include "vmreg_ppc.inline.hpp"++ #endif+++#ifdef TARGET_ARCH_aarch64+++# include "vmreg_aarch64.inline.hpp"+++#endif++ ++ ++ ++diff --git openjdk.orig/hotspot/src/share/vm/c1/c1_FrameMap.hpp openjdk/hotspot/src/share/vm/c1/c1_FrameMap.hpp++index 288fc5c..e9a0250 100644++--- openjdk.orig/hotspot/src/share/vm/c1/c1_FrameMap.hpp+++++ openjdk/hotspot/src/share/vm/c1/c1_FrameMap.hpp++@@ -93,6 +93,9 @@ class FrameMap : public CompilationResourceObj {++ #endif++ #ifdef TARGET_ARCH_ppc++ # include "c1_FrameMap_ppc.hpp"+++#endif+++#ifdef TARGET_ARCH_aarch64+++# include "c1_FrameMap_aarch64.hpp"++ #endif++ ++ ++diff --git openjdk.orig/hotspot/src/share/vm/c1/c1_LIR.cpp openjdk/hotspot/src/share/vm/c1/c1_LIR.cpp++index 776a6a3..6e1a362 100644++--- openjdk.orig/hotspot/src/share/vm/c1/c1_LIR.cpp+++++ openjdk/hotspot/src/share/vm/c1/c1_LIR.cpp++@@ -67,7 +67,7 @@ FloatRegister LIR_OprDesc::as_double_reg() const {++ ++ #endif++ ++-#ifdef ARM+++#if defined(ARM) || defined (TARGET_ARCH_aarch64)++ ++ FloatRegister LIR_OprDesc::as_float_reg() const {++ return as_FloatRegister(fpu_regnr());++@@ -147,7 +147,11 @@ void LIR_Address::verify() const {++ #endif++ #ifdef _LP64++ assert(base()->is_cpu_register(), "wrong base operand");+++#ifndef TARGET_ARCH_aarch64++ assert(index()->is_illegal() || index()->is_double_cpu(), "wrong index operand");+++#else+++ assert(index()->is_illegal() || index()->is_double_cpu() || index()->is_single_cpu(), "wrong index operand");+++#endif++ assert(base()->type() == T_OBJECT || base()->type() == T_LONG,++ "wrong type for addresses");++ #else++@@ -545,7 +549,7 @@ void LIR_OpVisitState::visit(LIR_Op* op) {++ assert(opConvert->_info == NULL, "must be");++ if (opConvert->_opr->is_valid()) do_input(opConvert->_opr);++ if (opConvert->_result->is_valid()) do_output(opConvert->_result);++-#ifdef PPC+++#if defined(PPC) || defined(TARGET_ARCH_aarch64)++ if (opConvert->_tmp1->is_valid()) do_temp(opConvert->_tmp1);++ if (opConvert->_tmp2->is_valid()) do_temp(opConvert->_tmp2);++ #endif++@@ -1468,6 +1472,11 @@ void LIR_OprDesc::print(outputStream* out) const {++ out->print("fpu%d", fpu_regnr());++ } else if (is_double_fpu()) {++ out->print("fpu%d", fpu_regnrLo());+++#elif defined(AARCH64)+++ } else if (is_single_fpu()) {+++ out->print("fpu%d", fpu_regnr());+++ } else if (is_double_fpu()) {+++ out->print("fpu%d", fpu_regnrLo());++ #elif defined(ARM)++ } else if (is_single_fpu()) {++ out->print("s%d", fpu_regnr());++@@ -1836,7 +1845,7 @@ void LIR_OpConvert::print_instr(outputStream* out) const {++ print_bytecode(out, bytecode());++ in_opr()->print(out); out->print(" ");++ result_opr()->print(out); out->print(" ");++-#ifdef PPC+++#if defined(PPC) || defined(TARGET_ARCH_aarch64)++ if(tmp1()->is_valid()) {++ tmp1()->print(out); out->print(" ");++ tmp2()->print(out); out->print(" ");++diff --git openjdk.orig/hotspot/src/share/vm/c1/c1_LIR.hpp openjdk/hotspot/src/share/vm/c1/c1_LIR.hpp++index f8589c3..eb3383f 100644++--- openjdk.orig/hotspot/src/share/vm/c1/c1_LIR.hpp+++++ openjdk/hotspot/src/share/vm/c1/c1_LIR.hpp++@@ -437,8 +437,8 @@ class LIR_OprDesc: public CompilationResourceObj {++ XMMRegister as_xmm_double_reg() const;++ // for compatibility with RInfo++ int fpu () const { return lo_reg_half(); }++-#endif // X86++-#if defined(SPARC) || defined(ARM) || defined(PPC)+++#endif+++#if defined(SPARC) || defined(ARM) || defined(PPC) || defined(AARCH64)++ FloatRegister as_float_reg () const;++ FloatRegister as_double_reg () const;++ #endif++@@ -526,7 +526,7 @@ class LIR_Address: public LIR_OprPtr {++ , _type(type)++ , _disp(0) { verify(); }++ ++-#if defined(X86) || defined(ARM)+++#if defined(X86) || defined(ARM) || defined(AARCH64)++ LIR_Address(LIR_Opr base, LIR_Opr index, Scale scale, intx disp, BasicType type):++ _base(base)++ , _index(index)++@@ -601,7 +601,7 @@ class LIR_OprFact: public AllStatic {++ LIR_OprDesc::fpu_register |++ LIR_OprDesc::double_size); }++ #endif++-#ifdef X86+++#if defined(X86) || defined(AARCH64)++ static LIR_Opr double_fpu(int reg) { return (LIR_Opr)(intptr_t)((reg << LIR_OprDesc::reg1_shift) |++ (reg << LIR_OprDesc::reg2_shift) |++ LIR_OprDesc::double_type |++@@ -1398,7 +1398,7 @@ class LIR_OpConvert: public LIR_Op1 {++ private:++ Bytecodes::Code _bytecode;++ ConversionStub* _stub;++-#ifdef PPC+++#if defined(PPC) || defined(TARGET_ARCH_aarch64)++ LIR_Opr _tmp1;++ LIR_Opr _tmp2;++ #endif++@@ -1413,7 +1413,7 @@ class LIR_OpConvert: public LIR_Op1 {++ #endif++ , _bytecode(code) {}++ ++-#ifdef PPC+++#if defined(PPC) || defined(TARGET_ARCH_aarch64)++ LIR_OpConvert(Bytecodes::Code code, LIR_Opr opr, LIR_Opr result, ConversionStub* stub++ ,LIR_Opr tmp1, LIR_Opr tmp2)++ : LIR_Op1(lir_convert, opr, result)++@@ -1425,7 +1425,7 @@ class LIR_OpConvert: public LIR_Op1 {++ ++ Bytecodes::Code bytecode() const { return _bytecode; }++ ConversionStub* stub() const { return _stub; }++-#ifdef PPC+++#if defined(PPC) || defined(TARGET_ARCH_aarch64)++ LIR_Opr tmp1() const { return _tmp1; }++ LIR_Opr tmp2() const { return _tmp2; }++ #endif++@@ -1973,7 +1973,14 @@ class LIR_List: public CompilationResourceObj {++ #ifdef PPC++ void convert(Bytecodes::Code code, LIR_Opr left, LIR_Opr dst, LIR_Opr tmp1, LIR_Opr tmp2) { append(new LIR_OpConvert(code, left, dst, NULL, tmp1, tmp2)); }++ #endif+++#if defined (TARGET_ARCH_aarch64)+++ void convert(Bytecodes::Code code, LIR_Opr left, LIR_Opr dst,+++ ConversionStub* stub = NULL, LIR_Opr tmp1 = LIR_OprDesc::illegalOpr()) {+++ append(new LIR_OpConvert(code, left, dst, stub, tmp1, LIR_OprDesc::illegalOpr()));+++ }+++#else++ void convert(Bytecodes::Code code, LIR_Opr left, LIR_Opr dst, ConversionStub* stub = NULL/*, bool is_32bit = false*/) { append(new LIR_OpConvert(code, left, dst, stub)); }+++#endif++ ++ void logical_and (LIR_Opr left, LIR_Opr right, LIR_Opr dst) { append(new LIR_Op2(lir_logic_and, left, right, dst)); }++ void logical_or (LIR_Opr left, LIR_Opr right, LIR_Opr dst) { append(new LIR_Op2(lir_logic_or, left, right, dst)); }++diff --git openjdk.orig/hotspot/src/share/vm/c1/c1_LIRAssembler.cpp openjdk/hotspot/src/share/vm/c1/c1_LIRAssembler.cpp++index 528f21e..4d83fca 100644++--- openjdk.orig/hotspot/src/share/vm/c1/c1_LIRAssembler.cpp+++++ openjdk/hotspot/src/share/vm/c1/c1_LIRAssembler.cpp++@@ -50,6 +50,10 @@++ # include "nativeInst_ppc.hpp"++ # include "vmreg_ppc.inline.hpp"++ #endif+++#ifdef TARGET_ARCH_aarch64+++# include "nativeInst_aarch64.hpp"+++# include "vmreg_aarch64.inline.hpp"+++#endif++ ++ ++ void LIR_Assembler::patching_epilog(PatchingStub* patch, LIR_PatchCode patch_code, Register obj, CodeEmitInfo* info) {++diff --git openjdk.orig/hotspot/src/share/vm/c1/c1_LIRAssembler.hpp openjdk/hotspot/src/share/vm/c1/c1_LIRAssembler.hpp++index 58adf59..f4a49b3 100644++--- openjdk.orig/hotspot/src/share/vm/c1/c1_LIRAssembler.hpp+++++ openjdk/hotspot/src/share/vm/c1/c1_LIRAssembler.hpp++@@ -261,6 +261,9 @@ class LIR_Assembler: public CompilationResourceObj {++ #ifdef TARGET_ARCH_ppc++ # include "c1_LIRAssembler_ppc.hpp"++ #endif+++#ifdef TARGET_ARCH_aarch64+++# include "c1_LIRAssembler_aarch64.hpp"+++#endif++ ++ };++ ++diff --git openjdk.orig/hotspot/src/share/vm/c1/c1_LinearScan.cpp openjdk/hotspot/src/share/vm/c1/c1_LinearScan.cpp++index aaae71d..93f9f5f 100644++--- openjdk.orig/hotspot/src/share/vm/c1/c1_LinearScan.cpp+++++ openjdk/hotspot/src/share/vm/c1/c1_LinearScan.cpp++@@ -47,6 +47,9 @@++ #ifdef TARGET_ARCH_ppc++ # include "vmreg_ppc.inline.hpp"++ #endif+++#ifdef TARGET_ARCH_aarch64+++# include "vmreg_aarch64.inline.hpp"+++#endif++ ++ ++ #ifndef PRODUCT++@@ -2190,7 +2193,7 @@ LIR_Opr LinearScan::color_lir_opr(LIR_Opr opr, int op_id, LIR_OpVisitState::OprM++ ++ LIR_Opr res = operand_for_interval(interval);++ ++-#ifdef X86+++#if defined(X86) || defined(AARCH64)++ // new semantic for is_last_use: not only set on definite end of interval,++ // but also before hole++ // This may still miss some cases (e.g. for dead values), but it is not necessary that the++diff --git openjdk.orig/hotspot/src/share/vm/c1/c1_LinearScan.hpp openjdk/hotspot/src/share/vm/c1/c1_LinearScan.hpp++index 0c06f1b..a152328 100644++--- openjdk.orig/hotspot/src/share/vm/c1/c1_LinearScan.hpp+++++ openjdk/hotspot/src/share/vm/c1/c1_LinearScan.hpp++@@ -985,6 +985,9 @@ class LinearScanTimers : public StackObj {++ #ifdef TARGET_ARCH_ppc++ # include "c1_LinearScan_ppc.hpp"++ #endif+++#ifdef TARGET_ARCH_aarch64+++# include "c1_LinearScan_aarch64.hpp"+++#endif++ ++ ++ #endif // SHARE_VM_C1_C1_LINEARSCAN_HPP++diff --git openjdk.orig/hotspot/src/share/vm/c1/c1_MacroAssembler.hpp openjdk/hotspot/src/share/vm/c1/c1_MacroAssembler.hpp++index 55d9803..eda2174 100644++--- openjdk.orig/hotspot/src/share/vm/c1/c1_MacroAssembler.hpp+++++ openjdk/hotspot/src/share/vm/c1/c1_MacroAssembler.hpp++@@ -41,6 +41,9 @@++ #ifdef TARGET_ARCH_ppc++ # include "assembler_ppc.inline.hpp"++ #endif+++#ifdef TARGET_ARCH_aarch64+++# include "assembler_aarch64.inline.hpp"+++#endif++ ++ class CodeEmitInfo;++ ++@@ -73,6 +76,9 @@ class C1_MacroAssembler: public MacroAssembler {++ #ifdef TARGET_ARCH_ppc++ # include "c1_MacroAssembler_ppc.hpp"++ #endif+++#ifdef TARGET_ARCH_aarch64+++# include "c1_MacroAssembler_aarch64.hpp"+++#endif++ ++ };++ ++diff --git openjdk.orig/hotspot/src/share/vm/c1/c1_Runtime1.cpp openjdk/hotspot/src/share/vm/c1/c1_Runtime1.cpp++index 765dec4..f0b3aae 100644++--- openjdk.orig/hotspot/src/share/vm/c1/c1_Runtime1.cpp+++++ openjdk/hotspot/src/share/vm/c1/c1_Runtime1.cpp++@@ -1103,6 +1103,7 @@ JRT_END++ // completes we can check for deoptimization. This simplifies the++ // assembly code in the cpu directories.++ //+++#ifndef TARGET_ARCH_aarch64++ int Runtime1::move_klass_patching(JavaThread* thread) {++ //++ // NOTE: we are still in Java++@@ -1150,6 +1151,7 @@ int Runtime1::access_field_patching(JavaThread* thread) {++ ++ return caller_is_deopted();++ JRT_END+++#endif++ ++ ++ JRT_LEAF(void, Runtime1::trace_block_entry(jint block_id))++diff --git openjdk.orig/hotspot/src/share/vm/c1/c1_Runtime1.hpp openjdk/hotspot/src/share/vm/c1/c1_Runtime1.hpp++index 2032564..19261be 100644++--- openjdk.orig/hotspot/src/share/vm/c1/c1_Runtime1.hpp+++++ openjdk/hotspot/src/share/vm/c1/c1_Runtime1.hpp++@@ -159,6 +159,9 @@ class Runtime1: public AllStatic {++ static int move_klass_patching(JavaThread* thread);++ ++ static void patch_code(JavaThread* thread, StubID stub_id);+++#ifdef TARGET_ARCH_aarch64+++ static void patch_code_aarch64(JavaThread* thread, StubID stub_id);+++#endif++ ++ public:++ // initialization++diff --git openjdk.orig/hotspot/src/share/vm/c1/c1_globals.hpp openjdk/hotspot/src/share/vm/c1/c1_globals.hpp++index 15f3cc1..4143a87 100644++--- openjdk.orig/hotspot/src/share/vm/c1/c1_globals.hpp+++++ openjdk/hotspot/src/share/vm/c1/c1_globals.hpp++@@ -38,6 +38,9 @@++ #ifdef TARGET_ARCH_ppc++ # include "c1_globals_ppc.hpp"++ #endif+++#ifdef TARGET_ARCH_aarch64+++# include "c1_globals_aarch64.hpp"+++#endif++ #ifdef TARGET_OS_FAMILY_linux++ # include "c1_globals_linux.hpp"++ #endif++diff --git openjdk.orig/hotspot/src/share/vm/classfile/classFileStream.hpp openjdk/hotspot/src/share/vm/classfile/classFileStream.hpp++index cf6f0e5..b128b3a 100644++--- openjdk.orig/hotspot/src/share/vm/classfile/classFileStream.hpp+++++ openjdk/hotspot/src/share/vm/classfile/classFileStream.hpp++@@ -41,6 +41,9 @@++ #ifdef TARGET_ARCH_ppc++ # include "bytes_ppc.hpp"++ #endif+++#ifdef TARGET_ARCH_aarch64+++# include "bytes_aarch64.hpp"+++#endif++ ++ // Input stream for reading .class file++ //++diff --git openjdk.orig/hotspot/src/share/vm/classfile/stackMapTable.hpp openjdk/hotspot/src/share/vm/classfile/stackMapTable.hpp++index f876029..ac415b6 100644++--- openjdk.orig/hotspot/src/share/vm/classfile/stackMapTable.hpp+++++ openjdk/hotspot/src/share/vm/classfile/stackMapTable.hpp++@@ -46,6 +46,9 @@++ #ifdef TARGET_ARCH_ppc++ # include "bytes_ppc.hpp"++ #endif+++#ifdef TARGET_ARCH_aarch64+++# include "bytes_aarch64.hpp"+++#endif++ ++ class StackMapReader;++ ++diff --git openjdk.orig/hotspot/src/share/vm/classfile/verifier.cpp openjdk/hotspot/src/share/vm/classfile/verifier.cpp++index c5c5e11..9c22a21 100644++--- openjdk.orig/hotspot/src/share/vm/classfile/verifier.cpp+++++ openjdk/hotspot/src/share/vm/classfile/verifier.cpp++@@ -60,6 +60,9 @@++ #ifdef TARGET_ARCH_ppc++ # include "bytes_ppc.hpp"++ #endif+++#ifdef TARGET_ARCH_aarch64+++# include "bytes_aarch64.hpp"+++#endif++ ++ #define NOFAILOVER_MAJOR_VERSION 51++ ++diff --git openjdk.orig/hotspot/src/share/vm/code/codeBlob.cpp openjdk/hotspot/src/share/vm/code/codeBlob.cpp++index 244c320..429e0be 100644++--- openjdk.orig/hotspot/src/share/vm/code/codeBlob.cpp+++++ openjdk/hotspot/src/share/vm/code/codeBlob.cpp++@@ -54,6 +54,9 @@++ #ifdef TARGET_ARCH_ppc++ # include "nativeInst_ppc.hpp"++ #endif+++#ifdef TARGET_ARCH_aarch64+++# include "nativeInst_aarch64.hpp"+++#endif++ #ifdef COMPILER1++ #include "c1/c1_Runtime1.hpp"++ #endif++diff --git openjdk.orig/hotspot/src/share/vm/code/compiledIC.hpp openjdk/hotspot/src/share/vm/code/compiledIC.hpp++index fe1cfb3..c9f6a2e 100644++--- openjdk.orig/hotspot/src/share/vm/code/compiledIC.hpp+++++ openjdk/hotspot/src/share/vm/code/compiledIC.hpp++@@ -44,6 +44,9 @@++ #ifdef TARGET_ARCH_ppc++ # include "nativeInst_ppc.hpp"++ #endif+++#ifdef TARGET_ARCH_aarch64+++# include "nativeInst_aarch64.hpp"+++#endif++ ++ //-----------------------------------------------------------------------------++ // The CompiledIC represents a compiled inline cache.++diff --git openjdk.orig/hotspot/src/share/vm/code/icBuffer.cpp openjdk/hotspot/src/share/vm/code/icBuffer.cpp++index ed70457..d022482 100644++--- openjdk.orig/hotspot/src/share/vm/code/icBuffer.cpp+++++ openjdk/hotspot/src/share/vm/code/icBuffer.cpp++@@ -52,6 +52,9 @@++ #ifdef TARGET_ARCH_ppc++ # include "assembler_ppc.inline.hpp"++ #endif+++#ifdef TARGET_ARCH_aarch64+++# include "assembler_aarch64.inline.hpp"+++#endif++ ++ ++ DEF_STUB_INTERFACE(ICStub);++diff --git openjdk.orig/hotspot/src/share/vm/code/relocInfo.cpp openjdk/hotspot/src/share/vm/code/relocInfo.cpp++index 4fd82df..78310e6 100644++--- openjdk.orig/hotspot/src/share/vm/code/relocInfo.cpp+++++ openjdk/hotspot/src/share/vm/code/relocInfo.cpp++@@ -49,6 +49,10 @@++ # include "assembler_ppc.inline.hpp"++ # include "nativeInst_ppc.hpp"++ #endif+++#ifdef TARGET_ARCH_aarch64+++# include "assembler_aarch64.inline.hpp"+++# include "nativeInst_aarch64.hpp"+++#endif++ ++ ++ const RelocationHolder RelocationHolder::none; // its type is relocInfo::none++diff --git openjdk.orig/hotspot/src/share/vm/code/relocInfo.hpp openjdk/hotspot/src/share/vm/code/relocInfo.hpp++index 1d14b44..3823889 100644++--- openjdk.orig/hotspot/src/share/vm/code/relocInfo.hpp+++++ openjdk/hotspot/src/share/vm/code/relocInfo.hpp++@@ -435,6 +435,9 @@ class relocInfo VALUE_OBJ_CLASS_SPEC {++ #endif++ #ifdef TARGET_ARCH_ppc++ # include "relocInfo_ppc.hpp"+++#endif+++#ifdef TARGET_ARCH_aarch64+++# include "relocInfo_aarch64.hpp"++ #endif++ ++ ++diff --git openjdk.orig/hotspot/src/share/vm/code/vmreg.hpp openjdk/hotspot/src/share/vm/code/vmreg.hpp++index d57e6f8..1c18e47 100644++--- openjdk.orig/hotspot/src/share/vm/code/vmreg.hpp+++++ openjdk/hotspot/src/share/vm/code/vmreg.hpp++@@ -42,6 +42,9 @@++ #ifdef TARGET_ARCH_ppc++ # include "register_ppc.hpp"++ #endif+++#ifdef TARGET_ARCH_aarch64+++# include "register_aarch64.hpp"+++#endif++ #ifdef COMPILER2++ #include "opto/adlcVMDeps.hpp"++ #include "utilities/ostream.hpp"++@@ -63,6 +66,9 @@++ #ifdef TARGET_ARCH_MODEL_ppc++ # include "adfiles/adGlobals_ppc.hpp"++ #endif+++#ifdef TARGET_ARCH_MODEL_aarch64+++# include "adfiles/adGlobals_aarch64.hpp"+++#endif++ #endif++ ++ //------------------------------VMReg------------------------------------------++@@ -182,6 +188,9 @@ public:++ #ifdef TARGET_ARCH_ppc++ # include "vmreg_ppc.hpp"++ #endif+++#ifdef TARGET_ARCH_aarch64+++# include "vmreg_aarch64.hpp"+++#endif++ ++ ++ };++diff --git openjdk.orig/hotspot/src/share/vm/compiler/disassembler.cpp openjdk/hotspot/src/share/vm/compiler/disassembler.cpp++index 9603e86..3a67259 100644++--- openjdk.orig/hotspot/src/share/vm/compiler/disassembler.cpp+++++ openjdk/hotspot/src/share/vm/compiler/disassembler.cpp++@@ -47,6 +47,9 @@++ #ifdef TARGET_ARCH_ppc++ # include "depChecker_ppc.hpp"++ #endif+++#ifdef TARGET_ARCH_aarch64+++# include "depChecker_aarch64.hpp"+++#endif++ #ifdef SHARK++ #include "shark/sharkEntry.hpp"++ #endif++diff --git openjdk.orig/hotspot/src/share/vm/compiler/disassembler.hpp openjdk/hotspot/src/share/vm/compiler/disassembler.hpp++index a70b8cc..4c90c9a 100644++--- openjdk.orig/hotspot/src/share/vm/compiler/disassembler.hpp+++++ openjdk/hotspot/src/share/vm/compiler/disassembler.hpp++@@ -78,6 +78,9 @@ class Disassembler {++ #endif++ #ifdef TARGET_ARCH_ppc++ # include "disassembler_ppc.hpp"+++#endif+++#ifdef TARGET_ARCH_aarch64+++# include "disassembler_aarch64.hpp"++ #endif++ ++ ++diff --git openjdk.orig/hotspot/src/share/vm/interpreter/abstractInterpreter.hpp openjdk/hotspot/src/share/vm/interpreter/abstractInterpreter.hpp++index d23f37a..24ca30e 100644++--- openjdk.orig/hotspot/src/share/vm/interpreter/abstractInterpreter.hpp+++++ openjdk/hotspot/src/share/vm/interpreter/abstractInterpreter.hpp++@@ -44,6 +44,9 @@++ #ifdef TARGET_ARCH_MODEL_ppc++ # include "interp_masm_ppc.hpp"++ #endif+++#ifdef TARGET_ARCH_MODEL_aarch64+++# include "interp_masm_aarch64.hpp"+++#endif++ #ifdef TARGET_OS_FAMILY_linux++ # include "thread_linux.inline.hpp"++ #endif++diff --git openjdk.orig/hotspot/src/share/vm/interpreter/bytecode.hpp openjdk/hotspot/src/share/vm/interpreter/bytecode.hpp++index 107161a..205d0f7 100644++--- openjdk.orig/hotspot/src/share/vm/interpreter/bytecode.hpp+++++ openjdk/hotspot/src/share/vm/interpreter/bytecode.hpp++@@ -43,6 +43,9 @@++ #ifdef TARGET_ARCH_ppc++ # include "bytes_ppc.hpp"++ #endif+++#ifdef TARGET_ARCH_aarch64+++# include "bytes_aarch64.hpp"+++#endif++ ++ class ciBytecodeStream;++ ++diff --git openjdk.orig/hotspot/src/share/vm/interpreter/bytecodeInterpreter.hpp openjdk/hotspot/src/share/vm/interpreter/bytecodeInterpreter.hpp++index e637414..308ad3b 100644++--- openjdk.orig/hotspot/src/share/vm/interpreter/bytecodeInterpreter.hpp+++++ openjdk/hotspot/src/share/vm/interpreter/bytecodeInterpreter.hpp++@@ -47,6 +47,9 @@++ #ifdef TARGET_ARCH_ppc++ # include "bytes_ppc.hpp"++ #endif+++#ifdef TARGET_ARCH_aarch64+++# include "bytes_aarch64.hpp"+++#endif++ ++ #ifdef CC_INTERP++ ++@@ -618,6 +621,9 @@ void print();++ #ifdef TARGET_ARCH_ppc++ # include "bytecodeInterpreter_ppc.hpp"++ #endif+++#ifdef TARGET_ARCH_aarch64+++# include "bytecodeInterpreter_aarch64.hpp"+++#endif++ ++ ++ }; // BytecodeInterpreter++diff --git openjdk.orig/hotspot/src/share/vm/interpreter/bytecodeInterpreter.inline.hpp openjdk/hotspot/src/share/vm/interpreter/bytecodeInterpreter.inline.hpp++index 3715a52..0d6a8aa 100644++--- openjdk.orig/hotspot/src/share/vm/interpreter/bytecodeInterpreter.inline.hpp+++++ openjdk/hotspot/src/share/vm/interpreter/bytecodeInterpreter.inline.hpp++@@ -58,6 +58,9 @@++ #ifdef TARGET_ARCH_ppc++ # include "bytecodeInterpreter_ppc.inline.hpp"++ #endif+++#ifdef TARGET_ARCH_aarch64+++# include "bytecodeInterpreter_aarch64.inline.hpp"+++#endif++ ++ #endif // CC_INTERP++ ++diff --git openjdk.orig/hotspot/src/share/vm/interpreter/bytecodeStream.hpp openjdk/hotspot/src/share/vm/interpreter/bytecodeStream.hpp++index 6106eac..f3dee0a 100644++--- openjdk.orig/hotspot/src/share/vm/interpreter/bytecodeStream.hpp+++++ openjdk/hotspot/src/share/vm/interpreter/bytecodeStream.hpp++@@ -43,6 +43,9 @@++ #ifdef TARGET_ARCH_ppc++ # include "bytes_ppc.hpp"++ #endif+++#ifdef TARGET_ARCH_aarch64+++# include "bytes_aarch64.hpp"+++#endif++ ++ // A BytecodeStream is used for fast iteration over the bytecodes++ // of a methodOop.++diff --git openjdk.orig/hotspot/src/share/vm/interpreter/bytecodes.cpp openjdk/hotspot/src/share/vm/interpreter/bytecodes.cpp++index 04f3f64..48ef30e 100644++--- openjdk.orig/hotspot/src/share/vm/interpreter/bytecodes.cpp+++++ openjdk/hotspot/src/share/vm/interpreter/bytecodes.cpp++@@ -41,6 +41,9 @@++ #ifdef TARGET_ARCH_ppc++ # include "bytes_ppc.hpp"++ #endif+++#ifdef TARGET_ARCH_aarch64+++# include "bytes_aarch64.hpp"+++#endif++ ++ ++ #if defined(WIN32) && (defined(_MSC_VER) && (_MSC_VER < 1600))++diff --git openjdk.orig/hotspot/src/share/vm/interpreter/cppInterpreter.hpp openjdk/hotspot/src/share/vm/interpreter/cppInterpreter.hpp++index e3a9f2e..8347473 100644++--- openjdk.orig/hotspot/src/share/vm/interpreter/cppInterpreter.hpp+++++ openjdk/hotspot/src/share/vm/interpreter/cppInterpreter.hpp++@@ -101,6 +101,9 @@ class CppInterpreter: public AbstractInterpreter {++ #ifdef TARGET_ARCH_ppc++ # include "cppInterpreter_ppc.hpp"++ #endif+++#ifdef TARGET_ARCH_aarch64+++# include "cppInterpreter_aarch64.hpp"+++#endif++ ++ ++ };++diff --git openjdk.orig/hotspot/src/share/vm/interpreter/cppInterpreterGenerator.hpp openjdk/hotspot/src/share/vm/interpreter/cppInterpreterGenerator.hpp++index c27805e..272f6e8 100644++--- openjdk.orig/hotspot/src/share/vm/interpreter/cppInterpreterGenerator.hpp+++++ openjdk/hotspot/src/share/vm/interpreter/cppInterpreterGenerator.hpp++@@ -59,6 +59,9 @@ class CppInterpreterGenerator: public AbstractInterpreterGenerator {++ #ifdef TARGET_ARCH_ppc++ # include "cppInterpreterGenerator_ppc.hpp"++ #endif+++#ifdef TARGET_ARCH_aarch64+++# include "cppInterpreterGenerator_aarch64.hpp"+++#endif++ ++ };++ ++diff --git openjdk.orig/hotspot/src/share/vm/interpreter/interpreter.hpp openjdk/hotspot/src/share/vm/interpreter/interpreter.hpp++index 0ab0be7..6a6822f 100644++--- openjdk.orig/hotspot/src/share/vm/interpreter/interpreter.hpp+++++ openjdk/hotspot/src/share/vm/interpreter/interpreter.hpp++@@ -158,6 +158,9 @@ class Interpreter: public CC_INTERP_ONLY(CppInterpreter) NOT_CC_INTERP(TemplateI++ #ifdef TARGET_ARCH_ppc++ # include "interpreter_ppc.hpp"++ #endif+++#ifdef TARGET_ARCH_aarch64+++# include "interpreter_aarch64.hpp"+++#endif++ ++ };++ ++diff --git openjdk.orig/hotspot/src/share/vm/interpreter/interpreterGenerator.hpp openjdk/hotspot/src/share/vm/interpreter/interpreterGenerator.hpp++index 7bc43ec..0434ca3 100644++--- openjdk.orig/hotspot/src/share/vm/interpreter/interpreterGenerator.hpp+++++ openjdk/hotspot/src/share/vm/interpreter/interpreterGenerator.hpp++@@ -56,6 +56,9 @@ InterpreterGenerator(StubQueue* _code);++ #ifdef TARGET_ARCH_ppc++ # include "interpreterGenerator_ppc.hpp"++ #endif+++#ifdef TARGET_ARCH_aarch64+++# include "interpreterGenerator_aarch64.hpp"+++#endif++ ++ ++ };++diff --git openjdk.orig/hotspot/src/share/vm/interpreter/interpreterRuntime.cpp openjdk/hotspot/src/share/vm/interpreter/interpreterRuntime.cpp++index e451c04..37700fb 100644++--- openjdk.orig/hotspot/src/share/vm/interpreter/interpreterRuntime.cpp+++++ openjdk/hotspot/src/share/vm/interpreter/interpreterRuntime.cpp++@@ -71,6 +71,9 @@++ #ifdef TARGET_ARCH_ppc++ # include "vm_version_ppc.hpp"++ #endif+++#ifdef TARGET_ARCH_aarch64+++# include "vm_version_aarch64.hpp"+++#endif++ #ifdef COMPILER2++ #include "opto/runtime.hpp"++ #endif++diff --git openjdk.orig/hotspot/src/share/vm/interpreter/interpreterRuntime.hpp openjdk/hotspot/src/share/vm/interpreter/interpreterRuntime.hpp++index 93c1a9e..425400e 100644++--- openjdk.orig/hotspot/src/share/vm/interpreter/interpreterRuntime.hpp+++++ openjdk/hotspot/src/share/vm/interpreter/interpreterRuntime.hpp++@@ -164,6 +164,9 @@ class InterpreterRuntime: AllStatic {++ #endif++ #ifdef TARGET_ARCH_ppc++ # include "interpreterRT_ppc.hpp"+++#endif+++#ifdef TARGET_ARCH_aarch64+++# include "interpreterRT_aarch64.hpp"++ #endif++ ++ ++diff --git openjdk.orig/hotspot/src/share/vm/interpreter/templateInterpreter.hpp openjdk/hotspot/src/share/vm/interpreter/templateInterpreter.hpp++index 25d74f7..f78a16e 100644++--- openjdk.orig/hotspot/src/share/vm/interpreter/templateInterpreter.hpp+++++ openjdk/hotspot/src/share/vm/interpreter/templateInterpreter.hpp++@@ -198,6 +198,9 @@ class TemplateInterpreter: public AbstractInterpreter {++ #ifdef TARGET_ARCH_ppc++ # include "templateInterpreter_ppc.hpp"++ #endif+++#ifdef TARGET_ARCH_aarch64+++# include "templateInterpreter_aarch64.hpp"+++#endif++ ++ ++ };++diff --git openjdk.orig/hotspot/src/share/vm/interpreter/templateInterpreterGenerator.hpp openjdk/hotspot/src/share/vm/interpreter/templateInterpreterGenerator.hpp++index fb7bdc5..6007630 100644++--- openjdk.orig/hotspot/src/share/vm/interpreter/templateInterpreterGenerator.hpp+++++ openjdk/hotspot/src/share/vm/interpreter/templateInterpreterGenerator.hpp++@@ -101,6 +101,9 @@ class TemplateInterpreterGenerator: public AbstractInterpreterGenerator {++ #ifdef TARGET_ARCH_ppc++ # include "templateInterpreterGenerator_ppc.hpp"++ #endif+++#ifdef TARGET_ARCH_aarch64+++# include "templateInterpreterGenerator_aarch64.hpp"+++#endif++ ++ ++ };++diff --git openjdk.orig/hotspot/src/share/vm/interpreter/templateTable.hpp openjdk/hotspot/src/share/vm/interpreter/templateTable.hpp++index 5d2a7e8..c5e0f0a 100644++--- openjdk.orig/hotspot/src/share/vm/interpreter/templateTable.hpp+++++ openjdk/hotspot/src/share/vm/interpreter/templateTable.hpp++@@ -43,6 +43,9 @@++ #ifdef TARGET_ARCH_MODEL_ppc++ # include "interp_masm_ppc.hpp"++ #endif+++#ifdef TARGET_ARCH_MODEL_aarch64+++# include "interp_masm_aarch64.hpp"+++#endif++ ++ #ifndef CC_INTERP++ // All the necessary definitions used for (bytecode) template generation. Instead of++@@ -373,6 +376,9 @@ class TemplateTable: AllStatic {++ #ifdef TARGET_ARCH_MODEL_ppc++ # include "templateTable_ppc.hpp"++ #endif+++#ifdef TARGET_ARCH_MODEL_aarch64+++# include "templateTable_aarch64.hpp"+++#endif++ ++ };++ #endif /* !CC_INTERP */++diff --git openjdk.orig/hotspot/src/share/vm/oops/constantPoolOop.hpp openjdk/hotspot/src/share/vm/oops/constantPoolOop.hpp++index c2f985d..3d0d0fc 100644++--- openjdk.orig/hotspot/src/share/vm/oops/constantPoolOop.hpp+++++ openjdk/hotspot/src/share/vm/oops/constantPoolOop.hpp++@@ -45,6 +45,9 @@++ #ifdef TARGET_ARCH_ppc++ # include "bytes_ppc.hpp"++ #endif+++#ifdef TARGET_ARCH_aarch64+++# include "bytes_aarch64.hpp"+++#endif++ ++ // A constantPool is an array containing class constants as described in the++ // class file.++diff --git openjdk.orig/hotspot/src/share/vm/oops/oop.inline.hpp openjdk/hotspot/src/share/vm/oops/oop.inline.hpp++index db14b2e..c8b326f 100644++--- openjdk.orig/hotspot/src/share/vm/oops/oop.inline.hpp+++++ openjdk/hotspot/src/share/vm/oops/oop.inline.hpp++@@ -58,6 +58,9 @@++ #ifdef TARGET_ARCH_ppc++ # include "bytes_ppc.hpp"++ #endif+++#ifdef TARGET_ARCH_aarch64+++# include "bytes_aarch64.hpp"+++#endif++ ++ // Implementation of all inlined member functions defined in oop.hpp++ // We need a separate file to avoid circular references++diff --git openjdk.orig/hotspot/src/share/vm/opto/buildOopMap.cpp openjdk/hotspot/src/share/vm/opto/buildOopMap.cpp++index fc73160..2c5ec41 100644++--- openjdk.orig/hotspot/src/share/vm/opto/buildOopMap.cpp+++++ openjdk/hotspot/src/share/vm/opto/buildOopMap.cpp++@@ -47,6 +47,9 @@++ #ifdef TARGET_ARCH_ppc++ # include "vmreg_ppc.inline.hpp"++ #endif+++#ifdef TARGET_ARCH_aarch64+++# include "vmreg_aarch64.inline.hpp"+++#endif++ ++ // The functions in this file builds OopMaps after all scheduling is done.++ //++diff --git openjdk.orig/hotspot/src/share/vm/opto/c2_globals.hpp openjdk/hotspot/src/share/vm/opto/c2_globals.hpp++index f73dcbd..462c875 100644++--- openjdk.orig/hotspot/src/share/vm/opto/c2_globals.hpp+++++ openjdk/hotspot/src/share/vm/opto/c2_globals.hpp++@@ -35,6 +35,9 @@++ #ifdef TARGET_ARCH_arm++ # include "c2_globals_arm.hpp"++ #endif+++#ifdef TARGET_ARCH_aarch64+++# include "c2_globals_aarch64.hpp"+++#endif++ #ifdef TARGET_OS_FAMILY_linux++ # include "c2_globals_linux.hpp"++ #endif++diff --git openjdk.orig/hotspot/src/share/vm/opto/c2compiler.cpp openjdk/hotspot/src/share/vm/opto/c2compiler.cpp++index 713e3f1..948e447 100644++--- openjdk.orig/hotspot/src/share/vm/opto/c2compiler.cpp+++++ openjdk/hotspot/src/share/vm/opto/c2compiler.cpp++@@ -43,6 +43,9 @@++ #ifdef TARGET_ARCH_MODEL_ppc++ # include "adfiles/ad_ppc.hpp"++ #endif+++#ifdef TARGET_ARCH_MODEL_aarch64+++# include "adfiles/ad_aarch64.hpp"+++#endif++ ++ ++ volatile int C2Compiler::_runtimes = uninitialized;++diff --git openjdk.orig/hotspot/src/share/vm/opto/compile.cpp openjdk/hotspot/src/share/vm/opto/compile.cpp++index a7ee07a..91dc290 100644++--- openjdk.orig/hotspot/src/share/vm/opto/compile.cpp+++++ openjdk/hotspot/src/share/vm/opto/compile.cpp++@@ -80,6 +80,9 @@++ #ifdef TARGET_ARCH_MODEL_ppc++ # include "adfiles/ad_ppc.hpp"++ #endif+++#ifdef TARGET_ARCH_MODEL_aarch64+++# include "adfiles/ad_aarch64.hpp"+++#endif++ ++ ++ // -------------------- Compile::mach_constant_base_node -----------------------++diff --git openjdk.orig/hotspot/src/share/vm/opto/gcm.cpp openjdk/hotspot/src/share/vm/opto/gcm.cpp++index 8b8f311..4deb0b4 100644++--- openjdk.orig/hotspot/src/share/vm/opto/gcm.cpp+++++ openjdk/hotspot/src/share/vm/opto/gcm.cpp++@@ -53,6 +53,9 @@++ #ifdef TARGET_ARCH_MODEL_ppc++ # include "adfiles/ad_ppc.hpp"++ #endif+++#ifdef TARGET_ARCH_MODEL_aarch64+++# include "adfiles/ad_aarch64.hpp"+++#endif++ ++ // Portions of code courtesy of Clifford Click++ ++diff --git openjdk.orig/hotspot/src/share/vm/opto/lcm.cpp openjdk/hotspot/src/share/vm/opto/lcm.cpp++index aee6123..4b9aaed 100644++--- openjdk.orig/hotspot/src/share/vm/opto/lcm.cpp+++++ openjdk/hotspot/src/share/vm/opto/lcm.cpp++@@ -48,6 +48,9 @@++ #ifdef TARGET_ARCH_MODEL_ppc++ # include "adfiles/ad_ppc.hpp"++ #endif+++#ifdef TARGET_ARCH_MODEL_aarch64+++# include "adfiles/ad_aarch64.hpp"+++#endif++ ++ // Optimization - Graph Style++ ++diff --git openjdk.orig/hotspot/src/share/vm/opto/locknode.hpp openjdk/hotspot/src/share/vm/opto/locknode.hpp++index 91b99bc..665594f 100644++--- openjdk.orig/hotspot/src/share/vm/opto/locknode.hpp+++++ openjdk/hotspot/src/share/vm/opto/locknode.hpp++@@ -46,6 +46,9 @@++ #ifdef TARGET_ARCH_MODEL_ppc++ # include "adfiles/ad_ppc.hpp"++ #endif+++#ifdef TARGET_ARCH_MODEL_aarch64+++# include "adfiles/ad_aarch64.hpp"+++#endif++ ++ //------------------------------BoxLockNode------------------------------------++ class BoxLockNode : public Node {++diff --git openjdk.orig/hotspot/src/share/vm/opto/matcher.cpp openjdk/hotspot/src/share/vm/opto/matcher.cpp++index ca2d4e3..d0f55c5 100644++--- openjdk.orig/hotspot/src/share/vm/opto/matcher.cpp+++++ openjdk/hotspot/src/share/vm/opto/matcher.cpp++@@ -55,6 +55,9 @@++ #ifdef TARGET_ARCH_MODEL_ppc++ # include "adfiles/ad_ppc.hpp"++ #endif+++#ifdef TARGET_ARCH_MODEL_aarch64+++# include "adfiles/ad_aarch64.hpp"+++#endif++ ++ OptoReg::Name OptoReg::c_frame_pointer;++ ++diff --git openjdk.orig/hotspot/src/share/vm/opto/output.hpp openjdk/hotspot/src/share/vm/opto/output.hpp++index 50b6e76..6a920b2 100644++--- openjdk.orig/hotspot/src/share/vm/opto/output.hpp+++++ openjdk/hotspot/src/share/vm/opto/output.hpp++@@ -45,6 +45,9 @@++ #ifdef TARGET_ARCH_MODEL_ppc++ # include "adfiles/ad_ppc.hpp"++ #endif+++#ifdef TARGET_ARCH_MODEL_aarch64+++# include "adfiles/ad_aarch64.hpp"+++#endif++ ++ class Arena;++ class Bundle;++diff --git openjdk.orig/hotspot/src/share/vm/opto/regmask.cpp openjdk/hotspot/src/share/vm/opto/regmask.cpp++index ce220f0..20c6028 100644++--- openjdk.orig/hotspot/src/share/vm/opto/regmask.cpp+++++ openjdk/hotspot/src/share/vm/opto/regmask.cpp++@@ -43,6 +43,9 @@++ #ifdef TARGET_ARCH_MODEL_ppc++ # include "adfiles/ad_ppc.hpp"++ #endif+++#ifdef TARGET_ARCH_MODEL_aarch64+++# include "adfiles/ad_aarch64.hpp"+++#endif++ ++ #define RM_SIZE _RM_SIZE /* a constant private to the class RegMask */++ ++diff --git openjdk.orig/hotspot/src/share/vm/opto/regmask.hpp openjdk/hotspot/src/share/vm/opto/regmask.hpp++index e50ff84..26c6854 100644++--- openjdk.orig/hotspot/src/share/vm/opto/regmask.hpp+++++ openjdk/hotspot/src/share/vm/opto/regmask.hpp++@@ -46,6 +46,9 @@++ #ifdef TARGET_ARCH_MODEL_ppc++ # include "adfiles/adGlobals_ppc.hpp"++ #endif+++#ifdef TARGET_ARCH_MODEL_aarch64+++# include "adfiles/adGlobals_aarch64.hpp"+++#endif++ ++ // Some fun naming (textual) substitutions:++ //++diff --git openjdk.orig/hotspot/src/share/vm/opto/runtime.cpp openjdk/hotspot/src/share/vm/opto/runtime.cpp++index d315f10..11a58b1 100644++--- openjdk.orig/hotspot/src/share/vm/opto/runtime.cpp+++++ openjdk/hotspot/src/share/vm/opto/runtime.cpp++@@ -86,6 +86,9 @@++ #ifdef TARGET_ARCH_MODEL_ppc++ # include "adfiles/ad_ppc.hpp"++ #endif+++#ifdef TARGET_ARCH_MODEL_aarch64+++# include "adfiles/ad_aarch64.hpp"+++#endif++ ++ ++ // For debugging purposes:++diff --git openjdk.orig/hotspot/src/share/vm/prims/jniCheck.cpp openjdk/hotspot/src/share/vm/prims/jniCheck.cpp++index 3bf4ecd..2ad9014 100644++--- openjdk.orig/hotspot/src/share/vm/prims/jniCheck.cpp+++++ openjdk/hotspot/src/share/vm/prims/jniCheck.cpp++@@ -51,6 +51,9 @@++ #ifdef TARGET_ARCH_ppc++ # include "jniTypes_ppc.hpp"++ #endif+++#ifdef TARGET_ARCH_aarch64+++# include "jniTypes_aarch64.hpp"+++#endif++ ++ ++ // Heap objects are allowed to be directly referenced only in VM code,++diff --git openjdk.orig/hotspot/src/share/vm/prims/jni_md.h openjdk/hotspot/src/share/vm/prims/jni_md.h++index 7fa5829..3bd4e31 100644++--- openjdk.orig/hotspot/src/share/vm/prims/jni_md.h+++++ openjdk/hotspot/src/share/vm/prims/jni_md.h++@@ -39,6 +39,9 @@++ #ifdef TARGET_ARCH_ppc++ # include "jni_ppc.h"++ #endif+++#ifdef TARGET_ARCH_aarch64+++# include "jni_aarch64.h"+++#endif++ ++ ++ /*++diff --git openjdk.orig/hotspot/src/share/vm/prims/jvmtiClassFileReconstituter.cpp openjdk/hotspot/src/share/vm/prims/jvmtiClassFileReconstituter.cpp++index 97dd154..fd1fa43 100644++--- openjdk.orig/hotspot/src/share/vm/prims/jvmtiClassFileReconstituter.cpp+++++ openjdk/hotspot/src/share/vm/prims/jvmtiClassFileReconstituter.cpp++@@ -43,6 +43,9 @@++ #ifdef TARGET_ARCH_ppc++ # include "bytes_ppc.hpp"++ #endif+++#ifdef TARGET_ARCH_aarch64+++# include "bytes_aarch64.hpp"+++#endif++ // FIXME: add Deprecated, LVTT attributes++ // FIXME: fix Synthetic attribute++ // FIXME: per Serguei, add error return handling for constantPoolOopDesc::copy_cpool_bytes()++diff --git openjdk.orig/hotspot/src/share/vm/prims/methodHandles.hpp openjdk/hotspot/src/share/vm/prims/methodHandles.hpp++index 514ba6a..ea747d0 100644++--- openjdk.orig/hotspot/src/share/vm/prims/methodHandles.hpp+++++ openjdk/hotspot/src/share/vm/prims/methodHandles.hpp++@@ -738,6 +738,9 @@ public:++ #ifdef TARGET_ARCH_ppc++ # include "methodHandles_ppc.hpp"++ #endif+++#ifdef TARGET_ARCH_aarch64+++# include "methodHandles_aarch64.hpp"+++#endif++ };++ ++ ++diff --git openjdk.orig/hotspot/src/share/vm/runtime/atomic.cpp openjdk/hotspot/src/share/vm/runtime/atomic.cpp++index 80780d7..5a34f15 100644++--- openjdk.orig/hotspot/src/share/vm/runtime/atomic.cpp+++++ openjdk/hotspot/src/share/vm/runtime/atomic.cpp++@@ -60,6 +60,9 @@++ #ifdef TARGET_OS_ARCH_linux_ppc++ # include "atomic_linux_ppc.inline.hpp"++ #endif+++#ifdef TARGET_OS_ARCH_linux_aarch64+++# include "atomic_linux_aarch64.inline.hpp"+++#endif++ #ifdef TARGET_OS_ARCH_bsd_x86++ # include "atomic_bsd_x86.inline.hpp"++ #endif++diff --git openjdk.orig/hotspot/src/share/vm/runtime/deoptimization.cpp openjdk/hotspot/src/share/vm/runtime/deoptimization.cpp++index 4735588..4e7958a 100644++--- openjdk.orig/hotspot/src/share/vm/runtime/deoptimization.cpp+++++ openjdk/hotspot/src/share/vm/runtime/deoptimization.cpp++@@ -65,6 +65,9 @@++ #ifdef TARGET_ARCH_ppc++ # include "vmreg_ppc.inline.hpp"++ #endif+++#ifdef TARGET_ARCH_aarch64+++# include "vmreg_aarch64.inline.hpp"+++#endif++ #ifdef COMPILER2++ #ifdef TARGET_ARCH_MODEL_x86_32++ # include "adfiles/ad_x86_32.hpp"++@@ -84,6 +87,9 @@++ #ifdef TARGET_ARCH_MODEL_ppc++ # include "adfiles/ad_ppc.hpp"++ #endif+++#ifdef TARGET_ARCH_MODEL_aarch64+++# include "adfiles/ad_aarch64.hpp"+++#endif++ #endif++ ++ bool DeoptimizationMarker::_is_active = false;++diff --git openjdk.orig/hotspot/src/share/vm/runtime/dtraceJSDT.hpp openjdk/hotspot/src/share/vm/runtime/dtraceJSDT.hpp++index bff4310..1129cd6 100644++--- openjdk.orig/hotspot/src/share/vm/runtime/dtraceJSDT.hpp+++++ openjdk/hotspot/src/share/vm/runtime/dtraceJSDT.hpp++@@ -41,6 +41,9 @@++ #ifdef TARGET_ARCH_ppc++ # include "nativeInst_ppc.hpp"++ #endif+++#ifdef TARGET_ARCH_aarch64+++# include "nativeInst_aarch64.hpp"+++#endif++ ++ class RegisteredProbes;++ typedef jlong OpaqueProbes;++diff --git openjdk.orig/hotspot/src/share/vm/runtime/frame.cpp openjdk/hotspot/src/share/vm/runtime/frame.cpp++index 7ae9aa8..6654714 100644++--- openjdk.orig/hotspot/src/share/vm/runtime/frame.cpp+++++ openjdk/hotspot/src/share/vm/runtime/frame.cpp++@@ -59,6 +59,9 @@++ #ifdef TARGET_ARCH_ppc++ # include "nativeInst_ppc.hpp"++ #endif+++#ifdef TARGET_ARCH_aarch64+++# include "nativeInst_aarch64.hpp"+++#endif++ ++ RegisterMap::RegisterMap(JavaThread *thread, bool update_map) {++ _thread = thread;++diff --git openjdk.orig/hotspot/src/share/vm/runtime/frame.hpp openjdk/hotspot/src/share/vm/runtime/frame.hpp++index c55380e..c13caae 100644++--- openjdk.orig/hotspot/src/share/vm/runtime/frame.hpp+++++ openjdk/hotspot/src/share/vm/runtime/frame.hpp++@@ -50,6 +50,9 @@++ #ifdef TARGET_ARCH_MODEL_ppc++ # include "adfiles/adGlobals_ppc.hpp"++ #endif+++#ifdef TARGET_ARCH_MODEL_aarch64+++# include "adfiles/adGlobals_aarch64.hpp"+++#endif++ #endif++ #ifdef ZERO++ #ifdef TARGET_ARCH_zero++@@ -491,6 +494,9 @@ class frame VALUE_OBJ_CLASS_SPEC {++ #ifdef TARGET_ARCH_ppc++ # include "frame_ppc.hpp"++ #endif+++#ifdef TARGET_ARCH_aarch64+++# include "frame_aarch64.hpp"+++#endif++ ++ };++ ++diff --git openjdk.orig/hotspot/src/share/vm/runtime/frame.inline.hpp openjdk/hotspot/src/share/vm/runtime/frame.inline.hpp++index b80b042..f6e1b0e 100644++--- openjdk.orig/hotspot/src/share/vm/runtime/frame.inline.hpp+++++ openjdk/hotspot/src/share/vm/runtime/frame.inline.hpp++@@ -46,6 +46,9 @@++ #ifdef TARGET_ARCH_ppc++ # include "jniTypes_ppc.hpp"++ #endif+++#ifdef TARGET_ARCH_aarch64+++# include "jniTypes_aarch64.hpp"+++#endif++ #ifdef ZERO++ #ifdef TARGET_ARCH_zero++ # include "entryFrame_zero.hpp"++@@ -100,6 +103,9 @@ inline bool frame::is_first_frame() const {++ #ifdef TARGET_ARCH_ppc++ # include "frame_ppc.inline.hpp"++ #endif+++#ifdef TARGET_ARCH_aarch64+++# include "frame_aarch64.inline.hpp"+++#endif++ ++ ++ #endif // SHARE_VM_RUNTIME_FRAME_INLINE_HPP++diff --git openjdk.orig/hotspot/src/share/vm/runtime/globals.hpp openjdk/hotspot/src/share/vm/runtime/globals.hpp++index 10d74cd..4cc5dfb 100644++--- openjdk.orig/hotspot/src/share/vm/runtime/globals.hpp+++++ openjdk/hotspot/src/share/vm/runtime/globals.hpp++@@ -52,6 +52,9 @@++ #ifdef TARGET_ARCH_ppc++ # include "globals_ppc.hpp"++ #endif+++#ifdef TARGET_ARCH_aarch64+++# include "globals_aarch64.hpp"+++#endif++ #ifdef TARGET_OS_FAMILY_linux++ # include "globals_linux.hpp"++ #endif++@@ -88,6 +91,9 @@++ #ifdef TARGET_OS_ARCH_linux_ppc++ # include "globals_linux_ppc.hpp"++ #endif+++#ifdef TARGET_OS_ARCH_linux_aarch64+++# include "globals_linux_aarch64.hpp"+++#endif++ #ifdef TARGET_OS_ARCH_bsd_x86++ # include "globals_bsd_x86.hpp"++ #endif++@@ -107,6 +113,9 @@++ #ifdef TARGET_ARCH_ppc++ # include "c1_globals_ppc.hpp"++ #endif+++#ifdef TARGET_ARCH_aarch64+++# include "c1_globals_aarch64.hpp"+++#endif++ #ifdef TARGET_OS_FAMILY_linux++ # include "c1_globals_linux.hpp"++ #endif++@@ -130,6 +139,9 @@++ #ifdef TARGET_ARCH_arm++ # include "c2_globals_arm.hpp"++ #endif+++#ifdef TARGET_ARCH_aarch64+++# include "c2_globals_aarch64.hpp"+++#endif++ #ifdef TARGET_OS_FAMILY_linux++ # include "c2_globals_linux.hpp"++ #endif++diff --git openjdk.orig/hotspot/src/share/vm/runtime/icache.hpp openjdk/hotspot/src/share/vm/runtime/icache.hpp++index d460a0f..9a3b9c8 100644++--- openjdk.orig/hotspot/src/share/vm/runtime/icache.hpp+++++ openjdk/hotspot/src/share/vm/runtime/icache.hpp++@@ -83,6 +83,9 @@ class AbstractICache : AllStatic {++ #ifdef TARGET_ARCH_ppc++ # include "icache_ppc.hpp"++ #endif+++#ifdef TARGET_ARCH_aarch64+++# include "icache_aarch64.hpp"+++#endif++ ++ ++ ++diff --git openjdk.orig/hotspot/src/share/vm/runtime/java.cpp openjdk/hotspot/src/share/vm/runtime/java.cpp++index fc3b67a..46794b0 100644++--- openjdk.orig/hotspot/src/share/vm/runtime/java.cpp+++++ openjdk/hotspot/src/share/vm/runtime/java.cpp++@@ -78,6 +78,9 @@++ #ifdef TARGET_ARCH_ppc++ # include "vm_version_ppc.hpp"++ #endif+++#ifdef TARGET_ARCH_aarch64+++# include "vm_version_aarch64.hpp"+++#endif++ #ifdef TARGET_OS_FAMILY_linux++ # include "thread_linux.inline.hpp"++ #endif++diff --git openjdk.orig/hotspot/src/share/vm/runtime/javaCalls.hpp openjdk/hotspot/src/share/vm/runtime/javaCalls.hpp++index d4f8595..bc2ca9b 100644++--- openjdk.orig/hotspot/src/share/vm/runtime/javaCalls.hpp+++++ openjdk/hotspot/src/share/vm/runtime/javaCalls.hpp++@@ -45,6 +45,9 @@++ #ifdef TARGET_ARCH_ppc++ # include "jniTypes_ppc.hpp"++ #endif+++#ifdef TARGET_ARCH_aarch64+++# include "jniTypes_aarch64.hpp"+++#endif++ #ifdef TARGET_OS_FAMILY_linux++ # include "thread_linux.inline.hpp"++ #endif++diff --git openjdk.orig/hotspot/src/share/vm/runtime/javaFrameAnchor.hpp openjdk/hotspot/src/share/vm/runtime/javaFrameAnchor.hpp++index 8374aa2..6be5f79 100644++--- openjdk.orig/hotspot/src/share/vm/runtime/javaFrameAnchor.hpp+++++ openjdk/hotspot/src/share/vm/runtime/javaFrameAnchor.hpp++@@ -47,6 +47,9 @@++ #ifdef TARGET_OS_ARCH_linux_arm++ # include "orderAccess_linux_arm.inline.hpp"++ #endif+++#ifdef TARGET_OS_ARCH_linux_aarch64+++# include "orderAccess_linux_aarch64.inline.hpp"+++#endif++ #ifdef TARGET_OS_ARCH_linux_ppc++ # include "orderAccess_linux_ppc.inline.hpp"++ #endif++@@ -121,6 +124,9 @@ friend class JavaCallWrapper;++ #ifdef TARGET_ARCH_ppc++ # include "javaFrameAnchor_ppc.hpp"++ #endif+++#ifdef TARGET_ARCH_aarch64+++# include "javaFrameAnchor_aarch64.hpp"+++#endif++ ++ ++ public:++diff --git openjdk.orig/hotspot/src/share/vm/runtime/os.hpp openjdk/hotspot/src/share/vm/runtime/os.hpp++index 5867deb..0f1fbb4 100644++--- openjdk.orig/hotspot/src/share/vm/runtime/os.hpp+++++ openjdk/hotspot/src/share/vm/runtime/os.hpp++@@ -719,6 +719,9 @@ class os: AllStatic {++ #ifdef TARGET_OS_ARCH_linux_ppc++ # include "os_linux_ppc.hpp"++ #endif+++#ifdef TARGET_OS_ARCH_linux_aarch64+++# include "os_linux_aarch64.hpp"+++#endif++ #ifdef TARGET_OS_ARCH_bsd_x86++ # include "os_bsd_x86.hpp"++ #endif++diff --git openjdk.orig/hotspot/src/share/vm/runtime/registerMap.hpp openjdk/hotspot/src/share/vm/runtime/registerMap.hpp++index 5dd677a..7bd425f 100644++--- openjdk.orig/hotspot/src/share/vm/runtime/registerMap.hpp+++++ openjdk/hotspot/src/share/vm/runtime/registerMap.hpp++@@ -42,6 +42,9 @@++ #ifdef TARGET_ARCH_ppc++ # include "register_ppc.hpp"++ #endif+++#ifdef TARGET_ARCH_aarch64+++# include "register_aarch64.hpp"+++#endif++ ++ class JavaThread;++ ++@@ -150,6 +153,9 @@ class RegisterMap : public StackObj {++ #ifdef TARGET_ARCH_ppc++ # include "registerMap_ppc.hpp"++ #endif+++#ifdef TARGET_ARCH_aarch64+++# include "registerMap_aarch64.hpp"+++#endif++ ++ };++ ++diff --git openjdk.orig/hotspot/src/share/vm/runtime/relocator.hpp openjdk/hotspot/src/share/vm/runtime/relocator.hpp++index c34866f..790bd80 100644++--- openjdk.orig/hotspot/src/share/vm/runtime/relocator.hpp+++++ openjdk/hotspot/src/share/vm/runtime/relocator.hpp++@@ -42,6 +42,9 @@++ #ifdef TARGET_ARCH_ppc++ # include "bytes_ppc.hpp"++ #endif+++#ifdef TARGET_ARCH_aarch64+++# include "bytes_aarch64.hpp"+++#endif++ ++ // This code has been converted from the 1.1E java virtual machine++ // Thanks to the JavaTopics group for using the code++diff --git openjdk.orig/hotspot/src/share/vm/runtime/safepoint.cpp openjdk/hotspot/src/share/vm/runtime/safepoint.cpp++index c29d257..a842bb3 100644++--- openjdk.orig/hotspot/src/share/vm/runtime/safepoint.cpp+++++ openjdk/hotspot/src/share/vm/runtime/safepoint.cpp++@@ -70,6 +70,10 @@++ # include "nativeInst_ppc.hpp"++ # include "vmreg_ppc.inline.hpp"++ #endif+++#ifdef TARGET_ARCH_aarch64+++# include "nativeInst_aarch64.hpp"+++# include "vmreg_aarch64.inline.hpp"+++#endif++ #ifdef TARGET_OS_FAMILY_linux++ # include "thread_linux.inline.hpp"++ #endif++diff --git openjdk.orig/hotspot/src/share/vm/runtime/sharedRuntime.cpp openjdk/hotspot/src/share/vm/runtime/sharedRuntime.cpp++index c25dcfe..aa7caff 100644++--- openjdk.orig/hotspot/src/share/vm/runtime/sharedRuntime.cpp+++++ openjdk/hotspot/src/share/vm/runtime/sharedRuntime.cpp++@@ -76,6 +76,10 @@++ # include "nativeInst_ppc.hpp"++ # include "vmreg_ppc.inline.hpp"++ #endif+++#ifdef TARGET_ARCH_aarch64+++# include "nativeInst_aarch64.hpp"+++# include "vmreg_aarch64.inline.hpp"+++#endif++ #ifdef COMPILER1++ #include "c1/c1_Runtime1.hpp"++ #endif++diff --git openjdk.orig/hotspot/src/share/vm/runtime/stackValueCollection.cpp openjdk/hotspot/src/share/vm/runtime/stackValueCollection.cpp++index 110f712..779f994 100644++--- openjdk.orig/hotspot/src/share/vm/runtime/stackValueCollection.cpp+++++ openjdk/hotspot/src/share/vm/runtime/stackValueCollection.cpp++@@ -39,6 +39,9 @@++ #ifdef TARGET_ARCH_ppc++ # include "jniTypes_ppc.hpp"++ #endif+++#ifdef TARGET_ARCH_aarch64+++# include "jniTypes_aarch64.hpp"+++#endif++ ++ jint StackValueCollection::int_at(int slot) const {++ intptr_t val = at(slot)->get_int();++diff --git openjdk.orig/hotspot/src/share/vm/runtime/statSampler.cpp openjdk/hotspot/src/share/vm/runtime/statSampler.cpp++index 0b24def..c82a214 100644++--- openjdk.orig/hotspot/src/share/vm/runtime/statSampler.cpp+++++ openjdk/hotspot/src/share/vm/runtime/statSampler.cpp++@@ -48,6 +48,9 @@++ #ifdef TARGET_ARCH_ppc++ # include "vm_version_ppc.hpp"++ #endif+++#ifdef TARGET_ARCH_aarch64+++# include "vm_version_aarch64.hpp"+++#endif++ ++ // --------------------------------------------------------++ // StatSamplerTask++diff --git openjdk.orig/hotspot/src/share/vm/runtime/stubCodeGenerator.cpp openjdk/hotspot/src/share/vm/runtime/stubCodeGenerator.cpp++index b6068a5..4ef7e38 100644++--- openjdk.orig/hotspot/src/share/vm/runtime/stubCodeGenerator.cpp+++++ openjdk/hotspot/src/share/vm/runtime/stubCodeGenerator.cpp++@@ -42,6 +42,9 @@++ #ifdef TARGET_ARCH_ppc++ # include "assembler_ppc.inline.hpp"++ #endif+++#ifdef TARGET_ARCH_aarch64+++# include "assembler_aarch64.inline.hpp"+++#endif++ ++ ++ // Implementation of StubCodeDesc++diff --git openjdk.orig/hotspot/src/share/vm/runtime/stubRoutines.hpp openjdk/hotspot/src/share/vm/runtime/stubRoutines.hpp++index 8481dce..f233b56 100644++--- openjdk.orig/hotspot/src/share/vm/runtime/stubRoutines.hpp+++++ openjdk/hotspot/src/share/vm/runtime/stubRoutines.hpp++@@ -46,6 +46,9 @@++ #ifdef TARGET_ARCH_ppc++ # include "nativeInst_ppc.hpp"++ #endif+++#ifdef TARGET_ARCH_aarch64+++# include "nativeInst_aarch64.hpp"+++#endif++ ++ // StubRoutines provides entry points to assembly routines used by++ // compiled code and the run-time system. Platform-specific entry++@@ -116,6 +119,9 @@ class StubRoutines: AllStatic {++ #endif++ #ifdef TARGET_ARCH_MODEL_ppc++ # include "stubRoutines_ppc.hpp"+++#endif+++#ifdef TARGET_ARCH_MODEL_aarch64+++# include "stubRoutines_aarch64.hpp"++ #endif++ ++ ++diff --git openjdk.orig/hotspot/src/share/vm/runtime/thread.hpp openjdk/hotspot/src/share/vm/runtime/thread.hpp++index 7846cc0..6964c22 100644++--- openjdk.orig/hotspot/src/share/vm/runtime/thread.hpp+++++ openjdk/hotspot/src/share/vm/runtime/thread.hpp++@@ -1651,6 +1651,9 @@ public:++ #ifdef TARGET_OS_ARCH_linux_ppc++ # include "thread_linux_ppc.hpp"++ #endif+++#ifdef TARGET_OS_ARCH_linux_aarch64+++# include "thread_linux_aarch64.hpp"+++#endif++ #ifdef TARGET_OS_ARCH_bsd_x86++ # include "thread_bsd_x86.hpp"++ #endif++diff --git openjdk.orig/hotspot/src/share/vm/runtime/threadLocalStorage.hpp openjdk/hotspot/src/share/vm/runtime/threadLocalStorage.hpp++index c2f7a9e..26ef559 100644++--- openjdk.orig/hotspot/src/share/vm/runtime/threadLocalStorage.hpp+++++ openjdk/hotspot/src/share/vm/runtime/threadLocalStorage.hpp++@@ -68,6 +68,9 @@ class ThreadLocalStorage : AllStatic {++ #ifdef TARGET_OS_ARCH_linux_ppc++ # include "threadLS_linux_ppc.hpp"++ #endif+++#ifdef TARGET_OS_ARCH_linux_aarch64+++# include "threadLS_linux_aarch64.hpp"+++#endif++ #ifdef TARGET_OS_ARCH_bsd_x86++ # include "threadLS_bsd_x86.hpp"++ #endif++diff --git openjdk.orig/hotspot/src/share/vm/runtime/vmStructs.cpp openjdk/hotspot/src/share/vm/runtime/vmStructs.cpp++index 8afd933..359f9fc 100644++--- openjdk.orig/hotspot/src/share/vm/runtime/vmStructs.cpp+++++ openjdk/hotspot/src/share/vm/runtime/vmStructs.cpp++@@ -125,6 +125,9 @@++ #ifdef TARGET_ARCH_ppc++ # include "vmStructs_ppc.hpp"++ #endif+++#ifdef TARGET_ARCH_aarch64+++# include "vmStructs_aarch64.hpp"+++#endif++ #ifdef TARGET_OS_FAMILY_linux++ # include "thread_linux.inline.hpp"++ #endif++@@ -161,6 +164,9 @@++ #ifdef TARGET_OS_ARCH_linux_ppc++ # include "vmStructs_linux_ppc.hpp"++ #endif+++#ifdef TARGET_OS_ARCH_linux_aarch64+++# include "vmStructs_linux_aarch64.hpp"+++#endif++ #ifdef TARGET_OS_ARCH_bsd_x86++ # include "vmStructs_bsd_x86.hpp"++ #endif++@@ -221,6 +227,9 @@++ #ifdef TARGET_ARCH_MODEL_ppc++ # include "adfiles/adGlobals_ppc.hpp"++ #endif+++#ifdef TARGET_ARCH_MODEL_aarch64+++# include "adfiles/adGlobals_aarch64.hpp"+++#endif++ #endif++ ++ // Note: the cross-product of (c1, c2, product, nonproduct, ...),++diff --git openjdk.orig/hotspot/src/share/vm/runtime/vm_version.cpp openjdk/hotspot/src/share/vm/runtime/vm_version.cpp++index 2d51b67..bba9b01 100644++--- openjdk.orig/hotspot/src/share/vm/runtime/vm_version.cpp+++++ openjdk/hotspot/src/share/vm/runtime/vm_version.cpp++@@ -41,6 +41,9 @@++ #ifdef TARGET_ARCH_ppc++ # include "vm_version_ppc.hpp"++ #endif+++#ifdef TARGET_ARCH_aarch64+++# include "vm_version_aarch64.hpp"+++#endif++ ++ const char* Abstract_VM_Version::_s_vm_release = Abstract_VM_Version::vm_release();++ const char* Abstract_VM_Version::_s_internal_vm_info_string = Abstract_VM_Version::internal_vm_info_string();++@@ -185,6 +188,7 @@ const char* Abstract_VM_Version::jre_release_version() {++ AMD64_ONLY("amd64") \++ ARM_ONLY("arm") \++ PPC_ONLY("ppc") \+++ AARCH64_ONLY("aarch64") \++ SPARC_ONLY("sparc")++ #endif // ZERO++ ++diff --git openjdk.orig/hotspot/src/share/vm/utilities/copy.hpp openjdk/hotspot/src/share/vm/utilities/copy.hpp++index 3dcbfee..198590f 100644++--- openjdk.orig/hotspot/src/share/vm/utilities/copy.hpp+++++ openjdk/hotspot/src/share/vm/utilities/copy.hpp++@@ -337,6 +337,9 @@ class Copy : AllStatic {++ #ifdef TARGET_ARCH_ppc++ # include "copy_ppc.hpp"++ #endif+++#ifdef TARGET_ARCH_aarch64+++# include "copy_aarch64.hpp"+++#endif++ ++ };++ ++diff --git openjdk.orig/hotspot/src/share/vm/utilities/globalDefinitions.hpp openjdk/hotspot/src/share/vm/utilities/globalDefinitions.hpp++index b55b0ac..5d11e26 100644++--- openjdk.orig/hotspot/src/share/vm/utilities/globalDefinitions.hpp+++++ openjdk/hotspot/src/share/vm/utilities/globalDefinitions.hpp++@@ -346,6 +346,9 @@ extern int LogMinObjAlignmentInBytes;++ #ifdef TARGET_ARCH_ppc++ # include "globalDefinitions_ppc.hpp"++ #endif+++#ifdef TARGET_ARCH_aarch64+++# include "globalDefinitions_aarch64.hpp"+++#endif++ ++ ++ // The byte alignment to be used by Arena::Amalloc. See bugid 4169348.++diff --git openjdk.orig/hotspot/src/share/vm/utilities/macros.hpp openjdk/hotspot/src/share/vm/utilities/macros.hpp++index 003f2af..2aa7f87 100644++--- openjdk.orig/hotspot/src/share/vm/utilities/macros.hpp+++++ openjdk/hotspot/src/share/vm/utilities/macros.hpp++@@ -261,6 +261,14 @@++ #define NOT_ARM(code) code++ #endif++ +++#ifdef AARCH64+++#define AARCH64_ONLY(code) code+++#define NOT_AARCH64(code)+++#else+++#define AARCH64_ONLY(code)+++#define NOT_AARCH64(code) code+++#endif+++++ #ifdef JAVASE_EMBEDDED++ #define EMBEDDED_ONLY(code) code++ #define NOT_EMBEDDED(code)+-- +2.26.2+-- 2.26.2
S
S
Simon South wrote on 15 Jun 17:22 +0200
[PATCH 4/7] gnu: icedtea-7: Build in parallel using correct number of jobs.
(address . 41871@debbugs.gnu.org)(name . Simon South)(address . simon@simonsouth.net)
20200615152257.12938-4-simon@simonsouth.net
* gnu/packages/java.scm (icedtea-7)[arguments]<#:configure-flags>: Add"--with-parallel-jobs".--- gnu/packages/java.scm | 2 ++ 1 file changed, 2 insertions(+)
Toggle diff (15 lines)diff --git a/gnu/packages/java.scm b/gnu/packages/java.scmindex 3618b9ee3f..5f46e883fc 100644--- a/gnu/packages/java.scm+++ b/gnu/packages/java.scm@@ -1169,6 +1169,8 @@ bootstrapping purposes.") "--enable-bootstrap" "--enable-nss" "--without-rhino"+ ,(string-append "--with-parallel-jobs="+ (number->string (parallel-job-count))) "--disable-downloading" "--disable-tests" ;they are run in the check phase instead "--with-openjdk-src-dir=./openjdk.src"-- 2.26.2
S
S
Simon South wrote on 15 Jun 17:22 +0200
[PATCH 5/7] gnu: icedtea-7: Fix build on aarch64-linux.
(address . 41871@debbugs.gnu.org)(name . Simon South)(address . simon@simonsouth.net)
20200615152257.12938-5-simon@simonsouth.net
* gnu/packages/java.scm (icedtea-7)[native-inputs]: Remove obsolete,architecture-dependent patch to "hotspot-drop"; replace with patch to fixbuild on aarch64-linux.* gnu/packages/patches/icedtea-7-hotspot-aarch64-use-c++98.patch: New file.* gnu/local.mk (dist_patch_DATA): Add it.--- gnu/local.mk | 1 + gnu/packages/java.scm | 2 +- .../icedtea-7-hotspot-aarch64-use-c++98.patch | 33 +++++++++++++++++++ 3 files changed, 35 insertions(+), 1 deletion(-) create mode 100644 gnu/packages/patches/icedtea-7-hotspot-aarch64-use-c++98.patch
Toggle diff (66 lines)diff --git a/gnu/local.mk b/gnu/local.mkindex 36dbbd0968..4c030a57db 100644--- a/gnu/local.mk+++ b/gnu/local.mk@@ -1094,6 +1094,7 @@ dist_patch_DATA = \ %D%/packages/patches/icecat-use-system-graphite2+harfbuzz.patch \ %D%/packages/patches/icecat-use-system-media-libs.patch \ %D%/packages/patches/icedtea-6-extend-hotspot-aarch64-support.patch \+ %D%/packages/patches/icedtea-7-hotspot-aarch64-use-c++98.patch \ %D%/packages/patches/icedtea-7-hotspot-gcc-segfault-workaround.patch \ %D%/packages/patches/icu4c-CVE-2020-10531.patch \ %D%/packages/patches/id3lib-CVE-2007-4460.patch \diff --git a/gnu/packages/java.scm b/gnu/packages/java.scmindex 5f46e883fc..b86e9aab61 100644--- a/gnu/packages/java.scm+++ b/gnu/packages/java.scm@@ -1599,7 +1599,7 @@ bootstrapping purposes.") (base32 "17bdv39n4lh8l5737c96f3xgamx4y305m067p01cywgp7zaddqws")) (patches (search-patches- "icedtea-7-hotspot-gcc-segfault-workaround.patch"))))+ "icedtea-7-hotspot-aarch64-use-c++98.patch")))) ("ant" ,ant-bootstrap) ("attr" ,attr) ("coreutils" ,coreutils)diff --git a/gnu/packages/patches/icedtea-7-hotspot-aarch64-use-c++98.patch b/gnu/packages/patches/icedtea-7-hotspot-aarch64-use-c++98.patchnew file mode 100644index 0000000000..7ad215f975--- /dev/null+++ b/gnu/packages/patches/icedtea-7-hotspot-aarch64-use-c++98.patch@@ -0,0 +1,33 @@+From 919dd016be1abd213b3a7d0e9a3b79e3286ef6ad Mon Sep 17 00:00:00 2001+From: Simon South <simon@simonsouth.net>+Date: Wed, 10 Jun 2020 13:02:09 -0400+Subject: [PATCH] aarch64: Use only C++98++This patch removes an unneeded C++ template that causes the build to+fail for aarch64 using gcc 7.5.0 and its default support for only the+C++98 standard.++It is based on original work by Severin Gehwolf <sgehwolf@redhat.com>.+See: https://bugzilla.redhat.com/show_bug.cgi?id=1307224+---+ src/cpu/aarch64/vm/sharedRuntime_aarch64.cpp | 4 ----+ 1 file changed, 4 deletions(-)++diff --git a/src/cpu/aarch64/vm/sharedRuntime_aarch64.cpp b/src/cpu/aarch64/vm/sharedRuntime_aarch64.cpp+index 0bc0a2b..6f73ca0 100644+--- a/src/cpu/aarch64/vm/sharedRuntime_aarch64.cpp++++ b/src/cpu/aarch64/vm/sharedRuntime_aarch64.cpp+@@ -194,10 +194,6 @@ static int reg2offset_out(VMReg r) {+ return (r->reg2stack() + SharedRuntime::out_preserve_stack_slots()) * VMRegImpl::stack_slot_size;+ }+ +-template <class T> static const T& min (const T& a, const T& b) {+- return (a > b) ? b : a;+-}+-+ // ---------------------------------------------------------------------------+ // Read the array of BasicTypes from a signature, and compute where the+ // arguments should go. Values in the VMRegPair regs array refer to 4-byte+-- +2.26.2+-- 2.26.2
S
S
Simon South wrote on 15 Jun 17:22 +0200
[PATCH 7/7] gnu: icedtea-8: Fix build on aarch64-linux.
(address . 41871@debbugs.gnu.org)(name . Simon South)(address . simon@simonsouth.net)
20200615152257.12938-7-simon@simonsouth.net
* gnu/packages/java.scm (icedtea-8)[native-inputs]: Remove obsolete,architecture-dependent patch to "hotspot-drop".* gnu/packages/patches/icedtea-7-hotspot-gcc-segfault-workaround.patch: Deletefile.* gnu/local.mk (dist_patch_DATA): Remove it.--- gnu/local.mk | 1 - gnu/packages/java.scm | 12 +---- ...ea-7-hotspot-gcc-segfault-workaround.patch | 45 ------------------- 3 files changed, 2 insertions(+), 56 deletions(-) delete mode 100644 gnu/packages/patches/icedtea-7-hotspot-gcc-segfault-workaround.patch
Toggle diff (88 lines)diff --git a/gnu/local.mk b/gnu/local.mkindex 4c030a57db..2af4c260d6 100644--- a/gnu/local.mk+++ b/gnu/local.mk@@ -1095,7 +1095,6 @@ dist_patch_DATA = \ %D%/packages/patches/icecat-use-system-media-libs.patch \ %D%/packages/patches/icedtea-6-extend-hotspot-aarch64-support.patch \ %D%/packages/patches/icedtea-7-hotspot-aarch64-use-c++98.patch \- %D%/packages/patches/icedtea-7-hotspot-gcc-segfault-workaround.patch \ %D%/packages/patches/icu4c-CVE-2020-10531.patch \ %D%/packages/patches/id3lib-CVE-2007-4460.patch \ %D%/packages/patches/id3lib-UTF16-writing-bug.patch \diff --git a/gnu/packages/java.scm b/gnu/packages/java.scmindex d655f73101..38791b30f3 100644--- a/gnu/packages/java.scm+++ b/gnu/packages/java.scm@@ -1795,16 +1795,8 @@ new Date();")) ,(drop "langtools" "15wizy123vhk40chl1b4p552jf2pw2hdww0myf11qab425axz4nw")) ("hotspot-drop"- ,(origin- (method url-fetch)- (uri (string-append- "http://icedtea.classpath.org/download/drops"- "/icedtea8/" version "/hotspot.tar.xz"))- (sha256- (base32- "1ciz1w9j0kz7s1dxdhyqq71nla9icyz6qvn0b9z2zgkklqa98qmm"))- (patches (search-patches- "icedtea-7-hotspot-gcc-segfault-workaround.patch"))))+ ,(drop "hotspot"+ "1ciz1w9j0kz7s1dxdhyqq71nla9icyz6qvn0b9z2zgkklqa98qmm")) ("nashorn-drop" ,(drop "nashorn" "19pzl3ppaw8j6r5cnyp8qiw3hxijh3hdc46l39g5yfhdl4pr4hpa"))diff --git a/gnu/packages/patches/icedtea-7-hotspot-gcc-segfault-workaround.patch b/gnu/packages/patches/icedtea-7-hotspot-gcc-segfault-workaround.patchdeleted file mode 100644index 35cfe38152..0000000000--- a/gnu/packages/patches/icedtea-7-hotspot-gcc-segfault-workaround.patch+++ /dev/null@@ -1,45 +0,0 @@-From 2f0ef2c69e99e1096a2a72c7a29025a736b044b4 Mon Sep 17 00:00:00 2001-From: =?UTF-8?q?G=C3=A1bor=20Boskovits?= <boskovits@gmail.com>-Date: Mon, 2 Jul 2018 23:37:25 +0200-Subject: [PATCH] Fix gcc segfault.------ src/share/vm/opto/output.cpp | 8 +++++---- 1 file changed, 5 insertions(+), 3 deletions(-)--diff --git a/src/share/vm/opto/output.cpp b/src/share/vm/opto/output.cpp-index d46cb87..0eb9eda 100644---- a/src/share/vm/opto/output.cpp-+++ b/src/share/vm/opto/output.cpp-@@ -1787,6 +1787,8 @@ uint Scheduling::_total_instructions_per_bundle[Pipeline::_max_instrs_per_cycle+- - // Initializer for class Scheduling- -+volatile const void *eePointer = Pipeline_Use::elaborated_elements;-+- Scheduling::Scheduling(Arena *arena, Compile &compile)- : _arena(arena),- _cfg(compile.cfg()),-@@ -1829,7 +1831,7 @@ Scheduling::Scheduling(Arena *arena, Compile &compile)- memset(_current_latency, 0, node_max * sizeof(unsigned short));- - // Clear the bundling information-- memcpy(_bundle_use_elements, Pipeline_Use::elaborated_elements, sizeof(Pipeline_Use::elaborated_elements));-+ memcpy(_bundle_use_elements, (void *)eePointer, 11*sizeof(Pipeline_Use_Element));- - // Get the last node- Block* block = _cfg->get_block(_cfg->number_of_blocks() - 1);-@@ -1880,8 +1882,8 @@ void Scheduling::step_and_clear() {- _bundle_use.reset();- - memcpy(_bundle_use_elements,-- Pipeline_Use::elaborated_elements,-- sizeof(Pipeline_Use::elaborated_elements));-+ (void *)eePointer,-+ 11*sizeof(Pipeline_Use_Element));- }- - // Perform instruction scheduling and bundling over the sequence of--- -2.18.0--- 2.26.2
S
S
Simon South wrote on 15 Jun 17:22 +0200
[PATCH 6/7] gnu: icedtea-8: Build in parallel using correct number of jobs.
(address . 41871@debbugs.gnu.org)(name . Simon South)(address . simon@simonsouth.net)
20200615152257.12938-6-simon@simonsouth.net
* gnu/packages/java.scm (icedtea-8)[arguments]<#:configure-flags>: Add"--with-parallel-jobs".--- gnu/packages/java.scm | 2 ++ 1 file changed, 2 insertions(+)
Toggle diff (15 lines)diff --git a/gnu/packages/java.scm b/gnu/packages/java.scmindex b86e9aab61..d655f73101 100644--- a/gnu/packages/java.scm+++ b/gnu/packages/java.scm@@ -1702,6 +1702,8 @@ IcedTea build harness.") `( ;;"--disable-bootstrap" "--enable-bootstrap" "--enable-nss"+ ,(string-append "--with-parallel-jobs="+ (number->string (parallel-job-count))) "--disable-downloading" "--disable-system-pcsc" "--disable-system-sctp"-- 2.26.2
?