Skip to content

Commit

Permalink
Merge upstream-jdk
Browse files Browse the repository at this point in the history
  • Loading branch information
synecdoche committed Oct 29, 2024
2 parents ee7a808 + 520ddac commit f49a38e
Show file tree
Hide file tree
Showing 310 changed files with 11,381 additions and 1,493 deletions.
84 changes: 84 additions & 0 deletions .github/actions/build-jtreg/action.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,84 @@
#
# Copyright (c) 2023, 2024, Oracle and/or its affiliates. All rights reserved.
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
#
# This code is free software; you can redistribute it and/or modify it
# under the terms of the GNU General Public License version 2 only, as
# published by the Free Software Foundation. Oracle designates this
# particular file as subject to the "Classpath" exception as provided
# by Oracle in the LICENSE file that accompanied this code.
#
# This code is distributed in the hope that it will be useful, but WITHOUT
# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
# version 2 for more details (a copy is included in the LICENSE file that
# accompanied this code).
#
# You should have received a copy of the GNU General Public License version
# 2 along with this work; if not, write to the Free Software Foundation,
# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
#
# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
# or visit www.oracle.com if you need additional information or have any
# questions.
#

name: 'Build JTReg'
description: 'Build JTReg'

runs:
using: composite
steps:
- name: 'Get JTReg version configuration'
id: version
uses: ./.github/actions/config
with:
var: JTREG_VERSION

- name: 'Check cache for already built JTReg'
id: get-cached
uses: actions/cache@v4
with:
path: jtreg/installed
key: jtreg-${{ steps.version.outputs.value }}

- name: 'Checkout the JTReg source'
uses: actions/checkout@v4
with:
repository: openjdk/jtreg
ref: jtreg-${{ steps.version.outputs.value }}
path: jtreg/src
if: (steps.get-cached.outputs.cache-hit != 'true')

- name: 'Build JTReg'
run: |
# Try building JTReg several times, backing off exponentially on failure.
# ~500 seconds in total should be enough to capture most of the transient
# failures.
for I in `seq 0 8`; do
rm -rf build/images/jtreg
bash make/build.sh --jdk "$JAVA_HOME_17_X64" && break
S=$(( 2 ** $I ))
echo "Failure. Waiting $S seconds before retrying"
sleep $S
done
# Check if build was successful
if [ ! -d build/images/jtreg ]; then
echo "Build failed"
exit 1;
fi
# Move files to the proper locations
mkdir ../installed
mv build/images/jtreg/* ../installed
working-directory: jtreg/src
shell: bash
if: (steps.get-cached.outputs.cache-hit != 'true')

- name: 'Upload JTReg artifact'
uses: actions/upload-artifact@v4
with:
name: bundles-jtreg-${{ steps.version.outputs.value }}
path: jtreg/installed
retention-days: 1
34 changes: 5 additions & 29 deletions .github/actions/get-jtreg/action.yml
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@
#

name: 'Get JTReg'
description: 'Download JTReg from cache or source location'
description: 'Get JTReg'
outputs:
path:
description: 'Path to the installed JTReg'
Expand All @@ -39,36 +39,12 @@ runs:
with:
var: JTREG_VERSION

- name: 'Check cache for JTReg'
id: get-cached-jtreg
uses: actions/cache@v4
- name: 'Download JTReg artifact'
id: download-jtreg
uses: actions/download-artifact@v4
with:
name: bundles-jtreg-${{ steps.version.outputs.value }}
path: jtreg/installed
key: jtreg-${{ steps.version.outputs.value }}

- name: 'Checkout the JTReg source'
uses: actions/checkout@v4
with:
repository: openjdk/jtreg
ref: jtreg-${{ steps.version.outputs.value }}
path: jtreg/src
if: steps.get-cached-jtreg.outputs.cache-hit != 'true'

- name: 'Build JTReg'
run: |
# If runner architecture is x64 set JAVA_HOME_17_X64 otherwise set to JAVA_HOME_17_arm64
if [[ '${{ runner.arch }}' == 'X64' ]]; then
JDK="$JAVA_HOME_17_X64"
else
JDK="$JAVA_HOME_17_arm64"
fi
# Build JTReg and move files to the proper locations
bash make/build.sh --jdk "$JDK"
mkdir ../installed
mv build/images/jtreg/* ../installed
working-directory: jtreg/src
shell: bash
if: steps.get-cached-jtreg.outputs.cache-hit != 'true'

- name: 'Export path to where JTReg is installed'
id: path-name
Expand Down
71 changes: 41 additions & 30 deletions .github/workflows/main.yml
Original file line number Diff line number Diff line change
Expand Up @@ -55,8 +55,8 @@ jobs:
### Determine platforms to include
###

select:
name: 'Select platforms'
prepare:
name: 'Prepare the run'
runs-on: ubuntu-22.04
env:
# List of platforms to exclude by default
Expand All @@ -74,7 +74,19 @@ jobs:
docs: ${{ steps.include.outputs.docs }}

steps:
# This function must be inlined in main.yml, or we'd be forced to checkout the repo
- name: 'Checkout the scripts'
uses: actions/checkout@v4
with:
sparse-checkout: |
.github
make/conf/github-actions.conf
- name: 'Build JTReg'
id: jtreg
uses: ./.github/actions/build-jtreg

# TODO: Now that we are checking out the repo scripts, we can put the following code
# into a separate file
- name: 'Check what jobs to run'
id: include
run: |
Expand Down Expand Up @@ -150,18 +162,18 @@ jobs:

build-linux-x64:
name: linux-x64
needs: select
needs: prepare
uses: ./.github/workflows/build-linux.yml
with:
platform: linux-x64
gcc-major-version: '10'
configure-arguments: ${{ github.event.inputs.configure-arguments }}
make-arguments: ${{ github.event.inputs.make-arguments }}
if: needs.select.outputs.linux-x64 == 'true'
if: needs.prepare.outputs.linux-x64 == 'true'

build-linux-x86-hs:
name: linux-x86-hs
needs: select
needs: prepare
uses: ./.github/workflows/build-linux.yml
with:
platform: linux-x86
Expand All @@ -175,11 +187,11 @@ jobs:
extra-conf-options: '--with-target-bits=32 --enable-fallback-linker --enable-libffi-bundling'
configure-arguments: ${{ github.event.inputs.configure-arguments }}
make-arguments: ${{ github.event.inputs.make-arguments }}
if: needs.select.outputs.linux-x86-hs == 'true'
if: needs.prepare.outputs.linux-x86-hs == 'true'

build-linux-x64-hs-nopch:
name: linux-x64-hs-nopch
needs: select
needs: prepare
uses: ./.github/workflows/build-linux.yml
with:
platform: linux-x64
Expand All @@ -189,11 +201,11 @@ jobs:
extra-conf-options: '--disable-precompiled-headers'
configure-arguments: ${{ github.event.inputs.configure-arguments }}
make-arguments: ${{ github.event.inputs.make-arguments }}
if: needs.select.outputs.linux-x64-variants == 'true'
if: needs.prepare.outputs.linux-x64-variants == 'true'

build-linux-x64-hs-zero:
name: linux-x64-hs-zero
needs: select
needs: prepare
uses: ./.github/workflows/build-linux.yml
with:
platform: linux-x64
Expand All @@ -203,11 +215,11 @@ jobs:
extra-conf-options: '--with-jvm-variants=zero --disable-precompiled-headers'
configure-arguments: ${{ github.event.inputs.configure-arguments }}
make-arguments: ${{ github.event.inputs.make-arguments }}
if: needs.select.outputs.linux-x64-variants == 'true'
if: needs.prepare.outputs.linux-x64-variants == 'true'

build-linux-x64-hs-minimal:
name: linux-x64-hs-minimal
needs: select
needs: prepare
uses: ./.github/workflows/build-linux.yml
with:
platform: linux-x64
Expand All @@ -217,11 +229,11 @@ jobs:
extra-conf-options: '--with-jvm-variants=minimal --disable-precompiled-headers'
configure-arguments: ${{ github.event.inputs.configure-arguments }}
make-arguments: ${{ github.event.inputs.make-arguments }}
if: needs.select.outputs.linux-x64-variants == 'true'
if: needs.prepare.outputs.linux-x64-variants == 'true'

build-linux-x64-hs-optimized:
name: linux-x64-hs-optimized
needs: select
needs: prepare
uses: ./.github/workflows/build-linux.yml
with:
platform: linux-x64
Expand All @@ -232,68 +244,67 @@ jobs:
extra-conf-options: '--with-debug-level=optimized --disable-precompiled-headers'
configure-arguments: ${{ github.event.inputs.configure-arguments }}
make-arguments: ${{ github.event.inputs.make-arguments }}
if: needs.select.outputs.linux-x64-variants == 'true'
if: needs.prepare.outputs.linux-x64-variants == 'true'

build-linux-cross-compile:
name: linux-cross-compile
needs:
- select
needs: prepare
uses: ./.github/workflows/build-cross-compile.yml
with:
gcc-major-version: '10'
configure-arguments: ${{ github.event.inputs.configure-arguments }}
make-arguments: ${{ github.event.inputs.make-arguments }}
if: needs.select.outputs.linux-cross-compile == 'true'
if: needs.prepare.outputs.linux-cross-compile == 'true'

build-alpine-linux-x64:
name: alpine-linux-x64
needs: select
needs: prepare
uses: ./.github/workflows/build-alpine-linux.yml
with:
platform: alpine-linux-x64
configure-arguments: ${{ github.event.inputs.configure-arguments }}
make-arguments: ${{ github.event.inputs.make-arguments }}
if: needs.select.outputs.alpine-linux-x64 == 'true'
if: needs.prepare.outputs.alpine-linux-x64 == 'true'

build-macos-x64:
name: macos-x64
needs: select
needs: prepare
uses: ./.github/workflows/build-macos.yml
with:
platform: macos-x64
runs-on: 'macos-13'
xcode-toolset-version: '14.3.1'
configure-arguments: ${{ github.event.inputs.configure-arguments }}
make-arguments: ${{ github.event.inputs.make-arguments }}
if: needs.select.outputs.macos-x64 == 'true'
if: needs.prepare.outputs.macos-x64 == 'true'

build-macos-aarch64:
name: macos-aarch64
needs: select
needs: prepare
uses: ./.github/workflows/build-macos.yml
with:
platform: macos-aarch64
runs-on: 'macos-14'
xcode-toolset-version: '14.3.1'
configure-arguments: ${{ github.event.inputs.configure-arguments }}
make-arguments: ${{ github.event.inputs.make-arguments }}
if: needs.select.outputs.macos-aarch64 == 'true'
if: needs.prepare.outputs.macos-aarch64 == 'true'

build-windows-x64:
name: windows-x64
needs: select
needs: prepare
uses: ./.github/workflows/build-windows.yml
with:
platform: windows-x64
msvc-toolset-version: '14.29'
msvc-toolset-architecture: 'x86.x64'
configure-arguments: ${{ github.event.inputs.configure-arguments }}
make-arguments: ${{ github.event.inputs.make-arguments }}
if: needs.select.outputs.windows-x64 == 'true'
if: needs.prepare.outputs.windows-x64 == 'true'

build-windows-aarch64:
name: windows-aarch64
needs: select
needs: prepare
uses: ./.github/workflows/build-windows.yml
with:
platform: windows-aarch64
Expand All @@ -303,11 +314,11 @@ jobs:
extra-conf-options: '--openjdk-target=aarch64-unknown-cygwin'
configure-arguments: ${{ github.event.inputs.configure-arguments }}
make-arguments: ${{ github.event.inputs.make-arguments }}
if: needs.select.outputs.windows-aarch64 == 'true'
if: needs.prepare.outputs.windows-aarch64 == 'true'

build-docs:
name: docs
needs: select
needs: prepare
uses: ./.github/workflows/build-linux.yml
with:
platform: linux-x64
Expand All @@ -319,7 +330,7 @@ jobs:
gcc-major-version: '10'
configure-arguments: ${{ github.event.inputs.configure-arguments }}
make-arguments: ${{ github.event.inputs.make-arguments }}
if: needs.select.outputs.docs == 'true'
if: needs.prepare.outputs.docs == 'true'

###
### Test jobs
Expand Down
4 changes: 2 additions & 2 deletions src/hotspot/cpu/aarch64/c2_MacroAssembler_aarch64.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -217,7 +217,7 @@ void C2_MacroAssembler::fast_unlock(Register objectReg, Register boxReg, Registe
// StoreLoad achieves this.
membar(StoreLoad);

// Check if the entry lists are empty.
// Check if the entry lists are empty (EntryList first - by convention).
ldr(rscratch1, Address(tmp, ObjectMonitor::EntryList_offset()));
ldr(tmpReg, Address(tmp, ObjectMonitor::cxq_offset()));
orr(rscratch1, rscratch1, tmpReg);
Expand Down Expand Up @@ -538,7 +538,7 @@ void C2_MacroAssembler::fast_unlock_lightweight(Register obj, Register box, Regi
// StoreLoad achieves this.
membar(StoreLoad);

// Check if the entry lists are empty.
// Check if the entry lists are empty (EntryList first - by convention).
ldr(rscratch1, Address(t1_monitor, ObjectMonitor::EntryList_offset()));
ldr(t3_t, Address(t1_monitor, ObjectMonitor::cxq_offset()));
orr(rscratch1, rscratch1, t3_t);
Expand Down
2 changes: 1 addition & 1 deletion src/hotspot/cpu/aarch64/globals_aarch64.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -38,7 +38,7 @@ define_pd_global(bool, UncommonNullCast, true); // Uncommon-trap nulls

define_pd_global(bool, DelayCompilerStubsGeneration, COMPILER2_OR_JVMCI);

define_pd_global(uintx, CodeCacheSegmentSize, 64 COMPILER1_AND_COMPILER2_PRESENT(+64)); // Tiered compilation has large code-entry alignment.
define_pd_global(uintx, CodeCacheSegmentSize, 64);
define_pd_global(intx, CodeEntryAlignment, 64);
define_pd_global(intx, OptoLoopAlignment, 16);

Expand Down
17 changes: 0 additions & 17 deletions src/hotspot/cpu/aarch64/macroAssembler_aarch64.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -4782,23 +4782,6 @@ void MacroAssembler::kernel_crc32_common_fold_using_crypto_pmull(Register crc, R
mov(tmp1, v0, D, 1);
}

SkipIfEqual::SkipIfEqual(
MacroAssembler* masm, const bool* flag_addr, bool value) {
_masm = masm;
uint64_t offset;
_masm->adrp(rscratch1, ExternalAddress((address)flag_addr), offset);
_masm->ldrb(rscratch1, Address(rscratch1, offset));
if (value) {
_masm->cbnzw(rscratch1, _label);
} else {
_masm->cbzw(rscratch1, _label);
}
}

SkipIfEqual::~SkipIfEqual() {
_masm->bind(_label);
}

void MacroAssembler::addptr(const Address &dst, int32_t src) {
Address adr;
switch(dst.getMode()) {
Expand Down
Loading

0 comments on commit f49a38e

Please sign in to comment.