Skip to content

Remove dependency to JVMCI for JDK27+ backwards compatiblity for JDKs 21-26 #58

Remove dependency to JVMCI for JDK27+ backwards compatiblity for JDKs 21-26

Remove dependency to JVMCI for JDK27+ backwards compatiblity for JDKs 21-26 #58

name: Reflection API Unit Tests (no-GPU) [JDK 21/25/26/27]
# Pure-JVM unit tests for the reflection JVMCI layer (tornado-runtime/src/test). These need no GPU,
# so they run on a standard GitHub-hosted runner - the first no-GPU CI stage for TornadoVM. The full
# build is still required first so the modular dependencies (tornado-api, tornado.graal, ...) are on
# the module path for the reflection tests; the tests themselves touch no device.
#
# Matrixed across every JDK profile the project supports building on, because each one gives the
# reflection layer a genuinely different jdk.internal.vm.ci to sit on top of:
# jdk21 - native platform module, unmodified
# jdk25/jdk26 - native module, patched at compile+runtime with the frozen graalJars/jvmci-21.0.2.jar
# jdk27 - JVMCI removed from the platform entirely; supplied as the vendored tornado.jvmci
# application module (bin/build_jvmci_module.py)
# A regression specific to one of those shapes would stay green here forever if only jdk21 ran.
on:
push:
branches: [master, develop, jdk27-jvmci-removal]
pull_request:
types: [opened, synchronize, reopened]
workflow_dispatch:
jobs:
reflection-unit-tests:
runs-on: ubuntu-latest
timeout-minutes: 40
strategy:
fail-fast: false
matrix:
jdk:
- profile: jdk21
setup_java_version: '21'
# jdk25/26/27 also install JDK 21 alongside the target JDK: build_jvmci_module.py
# (invoked by pull_graal_jars for these profiles) needs a JDK 21 runtime image to
# source the frozen jdk.vm.ci.* SPI from. Listing 21 first and the target version
# last matters -- actions/setup-java points JAVA_HOME at the *last* JDK installed,
# and bin/compile's --jdk check requires JAVA_HOME to be the target JDK.
- profile: jdk25
setup_java_version: |
21
25
- profile: jdk26
setup_java_version: |
21
26
- profile: jdk27
setup_java_version: |
21
27-ea
steps:
- uses: actions/checkout@v4
- name: Set up JDK (${{ matrix.jdk.profile }})
uses: actions/setup-java@v4
with:
distribution: temurin
java-version: ${{ matrix.jdk.setup_java_version }}
- name: Point JVMCI_SOURCE_JDK at the co-installed JDK 21 (jdk25/26/27 only)
if: matrix.jdk.profile != 'jdk21'
run: echo "JVMCI_SOURCE_JDK=$JAVA_HOME_21_X64" >> "$GITHUB_ENV"
- name: Install native build dependencies
run: |
sudo apt-get update
sudo apt-get install -y cmake ocl-icd-opencl-dev opencl-headers python3-venv
- name: Build TornadoVM (opencl, ${{ matrix.jdk.profile }})
run: |
python3 -m venv venv
source venv/bin/activate
pip install --upgrade pip tqdm psutil
make ${{ matrix.jdk.profile }} BACKEND=opencl
- name: Run reflection unit tests (${{ matrix.jdk.profile }})
run: make test-reflection JDK=${{ matrix.jdk.profile }}