Add macOS arm64 sys-vm JIT and update CI runners - #12
Merged
Conversation
huangminghuang
force-pushed
the
feature/macos-arm64-jit-sysvm-infra
branch
from
June 8, 2026 14:00
b4fc934 to
0df72da
Compare
heifner
reviewed
Jun 9, 2026
heifner
reviewed
Jun 11, 2026
heifner
approved these changes
Jun 11, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Change Description
Adds the macOS arm64
sysio::vm::jitbackend and the supporting runtime, test, benchmark, and CI changes needed to make it usable on Apple Silicon.Concrete changes in this PR:
include/sysio/vm/aarch64.hpp, an AArch64 machine-code writer for WASM constants, params/locals, globals, memory load/store/size/grow, integer arithmetic and bit operations, integer division/remainder traps, structured control flow,br_table, direct internal calls, imported host calls,call_indirect, and softfloat-backed floating-point arithmetic/conversions.sysio::vm::jitbackend on macOS arm64 while keepingjit_profilelimited to x86_64.config.hppfor x86_64, arm64, Apple, generic JIT availability, AArch64 JIT availability, and JIT profiling availability.call_indirectexecution.jit_execution_contextfor the AArch64 trampoline ABI, argument-array entry point, 16-byte stack-slot alignment,remaining_call_depth_offset()support for generated inline call-depth accounting, and call-depth restoration after execution.MAP_JIT,pthread_jit_write_protect_npwrite windows, instruction-cache flushing after code emission/patching, and explicit generated-code enabled/disabled state tracking.SIGILLhandling, interrupted-PC inspection, and safe previous-handler chaining, while preserving existing page-revocation timeout behavior where supported.br_table, globals, memory growth, softfloat operations, and trap behavior.watchdog interrupttest scheduler-tolerant by waiting for the watchdog callback instead of cancelling the guard after a fixed sleep, addressing the macOS 26 hosted-runner flake in run27368839657/ job80875404820.sum_toworkload.1.1.1to1.2.0.API Changes
No runtime WASM, host-function, or backend call API changes are intended. The PR does add public compile-time capability flags/macros so integrations can distinguish x86_64 JIT, Apple AArch64 JIT, and JIT profiling support.
Documentation Additions
Includes the AArch64 JIT benchmark report. The downstream Wire development/full-suite testing process was also documented in the integration repository for local validation, but that documentation is not part of this eos-vm PR.
Testing
e95ba4b: rebuiltunit_testsinbuild/macos-arm64-port.e95ba4b: watchdog CTest subset passed:9/9tests.e95ba4b: exact failingwatchdog interrupttest passed50/50repeats withctest --repeat until-fail:50.aee4e44: rebuiltunit_testsandaarch64_jit_benchmarkinbuild/macos-arm64-port.aee4e44: focused CTest slice for AArch64 JIT, watchdog, signal, allocator, null backend, and capability-flag coverage:47/47tests passed.608e3dc, before the final unused-helper/test-flake cleanups:5151/5151tests passed.608e3dccompleted with:CMAKE_BUILD_TYPE=ReleaseSYSIO_TEST_FORBIDDEN_PORTS=11434VCPKG_TARGET_TRIPLET=arm64-osxwire-sys-vm 1.2.0#10interrupt_trx_testat608e3dc:1/1passed in111.03 sec.608e3dc:105/105passed withctest -j9in1876.75 secreal time.