Skip to content
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

[mmtk-julia] Allow building Julia with variations of the binding #57176

Open
wants to merge 4 commits into
base: master
Choose a base branch
from

Conversation

udesou
Copy link
Contributor

@udesou udesou commented Jan 28, 2025

This PR enables building the mmtk-julia binding with different configurations other than non-moving Immix. While it was already possible to do so when building from source, this should enable using the binaries generated via the latest version from BinaryBuilder (JuliaPackaging/Yggdrasil#10357).
I have also decoupled MMTk from the code, such that it should be an option for a third-party heap. This should be set using WITH_THIRD_PARTY_GC=mmtk (in Make.user or as an environment variable).

The different configurations of MMTk can be achieved by setting the variables below (set in Make.user, for example):

Variable
MMTK_PLAN Immix StickyImmix
MMTK_MOVING 0 1
MMTK_BUILD release debug

Note that the actual code to support building with moving and sticky immix will be added in future PRs.
I've also added some preliminary documentation in doc/gc.md about building Julia with MMTk, including a link to the binding and an small FAQ on what to do if you break the build of Julia+MMTk.

@udesou udesou added the GC Garbage collector label Jan 28, 2025
@udesou udesou force-pushed the feature/adding-build-flags branch 2 times, most recently from 5ec92d1 to 12e2954 Compare January 28, 2025 05:10
@udesou udesou requested review from d-netto and qinsoon January 28, 2025 05:12
@udesou udesou force-pushed the feature/adding-build-flags branch from 12e2954 to 47cf1c5 Compare January 28, 2025 05:18
@udesou udesou changed the title Allow building Julia with variations of the binding [mmtk-julia] Allow building Julia with variations of the binding Jan 28, 2025
@udesou udesou added the GC: MMTK MMTK GC integration label Jan 28, 2025
@udesou udesou force-pushed the feature/adding-build-flags branch 3 times, most recently from cab6d06 to 9f53c2c Compare January 28, 2025 07:14
@udesou udesou force-pushed the feature/adding-build-flags branch 11 times, most recently from 45f710e to a0f5c24 Compare February 4, 2025 01:22
@d-netto d-netto force-pushed the feature/adding-build-flags branch 2 times, most recently from 7e309a4 to d7bc72c Compare February 4, 2025 18:56
@udesou udesou force-pushed the feature/adding-build-flags branch 2 times, most recently from d5b9db2 to f890322 Compare February 9, 2025 22:46
@udesou udesou force-pushed the feature/adding-build-flags branch 2 times, most recently from 1870113 to 51a7abc Compare February 12, 2025 00:18
@udesou udesou force-pushed the feature/adding-build-flags branch 5 times, most recently from 9aac610 to 20d4373 Compare February 18, 2025 23:22
@udesou udesou force-pushed the feature/adding-build-flags branch 3 times, most recently from 1673f57 to 2ece67b Compare February 20, 2025 05:41
@udesou udesou force-pushed the feature/adding-build-flags branch from 2ece67b to 120a7bf Compare February 20, 2025 22:30
Copy link
Member

@d-netto d-netto left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM. Minor comment about error handling when the third-party-GC flag is set to something other than mmtk.

Comment on lines +845 to 858
ifeq (${USE_THIRD_PARTY_GC},mmtk)
JCXXFLAGS += -DWITH_THIRD_PARTY_HEAP=1
JCFLAGS += -DWITH_THIRD_PARTY_HEAP=1

# Must specify a supported MMTk Plan: Immix or StickyImmix
ifeq (${MMTK_PLAN},Immix)
JCXXFLAGS += -DMMTK_PLAN_IMMIX
JCFLAGS += -DMMTK_PLAN_IMMIX
else ifeq (${MMTK_PLAN},StickyImmix)
JCXXFLAGS += -DMMTK_PLAN_STICKYIMMIX
JCFLAGS += -DMMTK_PLAN_STICKYIMMIX
else
$(error "Unsupported MMTk plan: $(MMTK_PLAN)")
$(error "Unsupported MMTk plan: $(MMTK_PLAN). Supported plans: Immix or StickyImmix.")
endif
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Perhaps have an else branch in which we throw an "unsupported" error if someone sets the third-party-GC flag to something else.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
GC: MMTK MMTK GC integration GC Garbage collector
Projects
None yet
Development

Successfully merging this pull request may close these issues.

4 participants