Skip to content

Merge the jdk-21+35-mmtk branch into master #307

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Draft
wants to merge 91 commits into
base: master
Choose a base branch
from
Draft

Conversation

wks
Copy link
Contributor

@wks wks commented Apr 29, 2025

We merge the branch for OpenJDK 21 into master. From now on, the master branch of the mmtk-openjdk repository will directly target OpenJDK 21. The jdk-21+35-mmtk branch will be decommissioned, and will remain its current state (i.e. the state just before merging into master), and will only be looked up when any developers are interested in the history of the development of the OpenJDK binding.

The following things work:

  • We can run OpenJDK 21 with MMTk on x86_64, and it supports compressed oops.
  • CI tests for pull requests of the mmtk-openjdk binding work.
  • CI binding tests (including both minimal tests and extended tests) for pull requests of the mmtk-core repo work.

One important thing that doesn't work immediately is the performance regression CI. It requires a change in the ci-perf-kit repo and also needs related changes in the CI scripts in mmtk-core. This PR is for OpenJDK, and will not trigger the performance regression CI. This leaves us a small window to update mmtk-core and ci-perf-kit after this PR is merged.

This PR should not be merged with "squash merge". Instead we should make a proper merge commit so that the jdk-21+35-mmtk branch will be considered as an ancestor of the master branch from Git's point of view. GitHub will also consider the branch jdk-21+35-mmtk as "merged".

Major changes compared to the OpenJDK 11 binding

The OpenJDK repository is now https://github.com/mmtk/jdk. We made this change to align with the naming convention of the repositories of the upstream. The old repository https://github.com/mmtk/openjdk will be decommissioned.

We also made the following changes in the mmtk-openjdk repo:

  • Changes are made to reflect upstream changes in OpenJDK, including initialization, mutex API, roots, JIT compilers, etc.
  • We now support multiple architectures, including x86_64, ARM64 and RISC-V 64. We changed the directory structure so that architecture-specific parts are held in separate files.
  • We updated the CI scripts to reflect related changes, such as checking out OpenJDK in the jdk directory instead of openjdk, and remove the -normal part from the OpenJDK CONF string. We also slightly refactored the CI scripts to reduce the repetition of the path "repos/jdk" which used to be "repos/openjdk".

caizixian and others added 27 commits May 29, 2023 03:02
OpenJDK no longer reserves 4 words for every frame, but instead let each
GC barrier set decide the reserved size.  We reserve 3 words for MMTk's
C1 barrier set.

See: openjdk/jdk@36a0822
This follows the upstream change
This changes paths build options, etc., to make the CI scripts work with
OpenJDK 21.

We now use a single source of truth for the OpenJDK path instead of
defining OPENJDK_PATH in multiple scripts.
Use jdk21 workarounds for Cassandra and H2O
Point to the newer version of dacapo
We just use the name defined in running-ng, i.e. "dacapochopin".  This
allows us to use modifiers such as "dacapochopin_jdk21" which expects
the benchmark suite name "dacapochopin".
Also fixed ci-style.sh and ci-check-lineends.sh to fail if any file has
line-end problems.
Update contents for OpenJDK 21 and recent changes in mmtk-openjdk.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

4 participants