Simplified LXR GC#358
Draft
wenyuzhao wants to merge 607 commits into
Draft
Conversation
Remove scan_multiple_thread_roots from the OpenJDK binding to match the corresponding removal in mmtk-core. This includes removing: - scan_multiple_thread_root implementation in scanning.rs - scan_multiple_thread_roots field from OpenJDK_Upcalls struct - mmtk_scan_multiple_thread_roots function and initializer entry in mmtkUpcalls.cpp - Function pointer declaration in mmtk.h Co-Authored-By: Claude Opus 4.6 (1M context) <[email protected]>
- Remove ~30 unused Cargo feature flags: barrier measurement/instrumentation (barrier_measurement, yield_and_roots_timer, satb_timer, log_gc, etc.), experiment flags (field_barrier_no_*, compressed pointer modes, no_fast_alloc, same_stw_and_conc_threads, lxr_*_conc_workers), and stale flags (release_debug_assertions, discontig_space, g3_compatibilities) - Delete .cargo/config.toml that forced AVX/SSE target features - Remove DISABLE_ALLOCATION_FAST_PATH and FIELD_BARRIER_NO_* exported statics from lib.rs and their corresponding extern declarations in mmtk.h - Remove stale declarations from mmtk.h: CLASS_UNLOADING_ENABLED, ENABLE_CLASS_UNLOADING_LOGS macro, GLOBAL_SIDE_METADATA_VM_BASE_ADDRESS_COMPRESSED, HEAP_START, HEAP_END, disable_fast_alloc() - Simplify mmtk_builder_set_conc_threads to pass through the value directly - Remove all FIELD_BARRIER_NO_* conditional guards from C++ barrier code (mmtkFieldBarrier.cpp/hpp, mmtkBarrierSet.cpp, mmtkBarrierSetC2.cpp, mmtkBarrierSetAssembler_x86.cpp), always executing the full barrier path - Remove disable_fast_alloc() checks from allocation fast-path conditions - Remove commented-out profile settings from Cargo.toml Co-Authored-By: Claude Opus 4.6 (1M context) <[email protected]>
Remove the VM binding implementations for the array scanning optimization that was removed from mmtk-core. Changes: - Remove Scanning trait method implementations: obj_array_data, is_obj_array, is_val_array, get_obj_kind - Remove helper functions from object_scanning.rs: is_obj_array, is_val_array, get_obj_kind, obj_array_data - Remove ObjectKind imports Co-Authored-By: Claude Opus 4.6 (1M context) <[email protected]>
…mplify implementations
…implify allocation checks
…wrappers All barrier types (FieldBarrier, ObjectBarrier, SATBBarrier) on all architectures (x86, aarch64, riscv) now call Rust FFI functions directly from assembler, C1, and C2 generated code, eliminating the intermediate C++ wrapper functions that only added a Thread::current() lookup. Rust FFI parameter order changes (mutator moved to last position): - mmtk_object_reference_write_pre(src, slot, target, mutator) - mmtk_object_reference_write_post(src, slot, target, mutator) - mmtk_array_copy_post(src, dst, count, mutator) Assembler changes (x86, aarch64, riscv): - UnlogBitBarrier: loads mutator from thread register, calls mmtk_object_reference_write_slow/pre/post directly - ObjectBarrier arraycopy_epilogue: calls mmtk_array_copy_post directly - SATBBarrier load_at/arraycopy_prologue: calls mmtk_load_reference and mmtk_array_copy_pre directly C1 runtime stubs (x86, aarch64, riscv): - Loads mutator as the (argc+1)-th argument from thread register - Entry points changed to Rust functions C2 (shared): - UnlogBitBarrier, SATBBarrier, FieldBarrier: all call Rust functions directly with mutator node from thread pointer Removed C++ wrapper functions from MMTkBarrierSetRuntime: - object_reference_write_pre_call - object_reference_write_post_call - object_reference_write_slow_call - object_reference_array_copy_pre_call - object_reference_array_copy_post_call - load_reference_call Co-Authored-By: Claude Opus 4.6 (1M context) <[email protected]>
…mbly calls - Updated assembly code across various architectures (AArch64, RISC-V, x86) to eliminate the need for passing the mutator as an argument in barrier calls. - Introduced new runtime functions in MMTkBarrierSetRuntime to handle mutator retrieval internally. - Adjusted function signatures in the MMTk API to reflect the changes in argument order for load and write barriers. - Removed unnecessary includes of mmtkMutator.hpp from several files. - Ensured that all references to mutator in barrier calls are replaced with the new runtime functions.
Co-authored-by: Copilot <[email protected]>
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.
The mmtk-core PR: mmtk/mmtk-core#1508
Important features that has been removed from the main lxr branch: