From 1a1e403d9fb17ccc21adfc9780d7a2cdd978b846 Mon Sep 17 00:00:00 2001 From: Kunshan Wang Date: Fri, 10 Jul 2026 15:56:46 +0800 Subject: [PATCH 1/3] Upstream API change w.r.t. field log bits --- mmtk/Cargo.lock | 2 -- mmtk/Cargo.toml | 4 ++-- mmtk/src/object_model.rs | 3 ++- mmtk/src/vm_metadata/constants.rs | 6 +++++- 4 files changed, 9 insertions(+), 6 deletions(-) diff --git a/mmtk/Cargo.lock b/mmtk/Cargo.lock index 106e4bee..6507379b 100644 --- a/mmtk/Cargo.lock +++ b/mmtk/Cargo.lock @@ -582,7 +582,6 @@ dependencies = [ [[package]] name = "mmtk" version = "0.32.0" -source = "git+https://github.com/mmtk/mmtk-core.git?rev=37d81218028d788f7a24158aac0588c3f6925d08#37d81218028d788f7a24158aac0588c3f6925d08" dependencies = [ "atomic", "atomic-traits", @@ -618,7 +617,6 @@ dependencies = [ [[package]] name = "mmtk-macros" version = "0.32.0" -source = "git+https://github.com/mmtk/mmtk-core.git?rev=37d81218028d788f7a24158aac0588c3f6925d08#37d81218028d788f7a24158aac0588c3f6925d08" dependencies = [ "proc-macro-error", "proc-macro2", diff --git a/mmtk/Cargo.toml b/mmtk/Cargo.toml index 9c7287b0..6bb8d3ce 100644 --- a/mmtk/Cargo.toml +++ b/mmtk/Cargo.toml @@ -36,9 +36,9 @@ probe = "0.5" # - change branch # - change repo name # But other changes including adding/removing whitespaces in commented lines may break the CI. -mmtk = { git = "https://github.com/mmtk/mmtk-core.git", rev = "37d81218028d788f7a24158aac0588c3f6925d08" } +# mmtk = { git = "https://github.com/mmtk/mmtk-core.git", rev = "37d81218028d788f7a24158aac0588c3f6925d08" } # Uncomment the following to build locally -# mmtk = { path = "../repos/mmtk-core" } +mmtk = { path = "../../mmtk-core" } [build-dependencies] built = { version = "0.7.7", features = ["git2"] } diff --git a/mmtk/src/object_model.rs b/mmtk/src/object_model.rs index 945b20b2..fbd9aad1 100644 --- a/mmtk/src/object_model.rs +++ b/mmtk/src/object_model.rs @@ -9,7 +9,8 @@ use mmtk::vm::*; pub struct VMObjectModel {} impl ObjectModel> for VMObjectModel { - const GLOBAL_LOG_BIT_SPEC: VMGlobalLogBitSpec = vm_metadata::LOGGING_SIDE_METADATA_SPEC; + const GLOBAL_OBJECT_UNLOG_BIT_SPEC: VMGlobalObjectUnlogBitSpec = vm_metadata::OBJECT_LOGGING_SIDE_METADATA_SPEC; + const GLOBAL_FIELD_UNLOG_BIT_SPEC: VMGlobalFieldUnlogBitSpec = vm_metadata::FIELD_LOGGING_SIDE_METADATA_SPEC; const LOCAL_FORWARDING_POINTER_SPEC: VMLocalForwardingPointerSpec = vm_metadata::FORWARDING_POINTER_METADATA_SPEC; diff --git a/mmtk/src/vm_metadata/constants.rs b/mmtk/src/vm_metadata/constants.rs index e9e5a6ac..ef1aac1a 100644 --- a/mmtk/src/vm_metadata/constants.rs +++ b/mmtk/src/vm_metadata/constants.rs @@ -13,7 +13,11 @@ pub(crate) const FORWARDING_POINTER_OFFSET: isize = 0; /// Global logging bit metadata spec /// 1 bit per object -pub(crate) const LOGGING_SIDE_METADATA_SPEC: VMGlobalLogBitSpec = VMGlobalLogBitSpec::side_first(); +pub(crate) const OBJECT_LOGGING_SIDE_METADATA_SPEC: VMGlobalObjectUnlogBitSpec = + VMGlobalObjectUnlogBitSpec::side_first(); + +pub(crate) const FIELD_LOGGING_SIDE_METADATA_SPEC: VMGlobalFieldUnlogBitSpec = + VMGlobalFieldUnlogBitSpec::in_header(0); // Global MetadataSpecs - End From 4e75de2b17369196ac77843fa4dc6cc66f5ffe4a Mon Sep 17 00:00:00 2001 From: Kunshan Wang Date: Fri, 17 Jul 2026 16:13:07 +0800 Subject: [PATCH 2/3] WIP: Make interpreter work with field-logging barrier. --- mmtk/src/slots.rs | 5 +++++ mmtk/src/vm_metadata/constants.rs | 2 +- openjdk/cpu/x86/mmtkUnlogBitBarrierSetAssembler_x86.cpp | 4 ++-- 3 files changed, 8 insertions(+), 3 deletions(-) diff --git a/mmtk/src/slots.rs b/mmtk/src/slots.rs index 02896836..58d40000 100644 --- a/mmtk/src/slots.rs +++ b/mmtk/src/slots.rs @@ -205,6 +205,11 @@ impl Slot for OpenJDKSlot { unsafe { self.addr.store(object) } } } + + fn to_address(&self) -> Address { + assert!(!COMPRESSED); + self.addr + } } /// A range of OpenJDKSlot, usually used for arrays. diff --git a/mmtk/src/vm_metadata/constants.rs b/mmtk/src/vm_metadata/constants.rs index ef1aac1a..99d17538 100644 --- a/mmtk/src/vm_metadata/constants.rs +++ b/mmtk/src/vm_metadata/constants.rs @@ -17,7 +17,7 @@ pub(crate) const OBJECT_LOGGING_SIDE_METADATA_SPEC: VMGlobalObjectUnlogBitSpec = VMGlobalObjectUnlogBitSpec::side_first(); pub(crate) const FIELD_LOGGING_SIDE_METADATA_SPEC: VMGlobalFieldUnlogBitSpec = - VMGlobalFieldUnlogBitSpec::in_header(0); + VMGlobalFieldUnlogBitSpec::side_after(OBJECT_LOGGING_SIDE_METADATA_SPEC.as_spec()); // Global MetadataSpecs - End diff --git a/openjdk/cpu/x86/mmtkUnlogBitBarrierSetAssembler_x86.cpp b/openjdk/cpu/x86/mmtkUnlogBitBarrierSetAssembler_x86.cpp index 4c3a28f0..8f472d9a 100644 --- a/openjdk/cpu/x86/mmtkUnlogBitBarrierSetAssembler_x86.cpp +++ b/openjdk/cpu/x86/mmtkUnlogBitBarrierSetAssembler_x86.cpp @@ -62,8 +62,8 @@ void MMTkUnlogBitBarrierSetAssembler::object_reference_write_pre_or_post(MacroAs // compressed oops, the `val` register will be holding a compressed pointer to the target object // due to the way `BarrierSetAssembler::store_at` works. If the write barrier needs to know the // target, we will need to decompress it before passing it to the barrier slow path. - __ xorptr(c_rarg1, c_rarg1); - __ xorptr(c_rarg2, c_rarg2); + __ lea(c_rarg1, dst); + __ movptr(c_rarg2, val); address entry_point = mmtk_enable_barrier_fastpath ? FN_ADDR(MMTkBarrierSetRuntime::object_reference_write_slow_call) : pre ? FN_ADDR(MMTkBarrierSetRuntime::object_reference_write_pre_call) From d1980053cc50a3c84b7928a4ea9bfeb3d8b524ad Mon Sep 17 00:00:00 2001 From: Kunshan Wang Date: Mon, 27 Jul 2026 18:06:46 +0800 Subject: [PATCH 3/3] Rename barrier-related classes. `ObjectBarrier` -> `GenBarrier`. It is related to generational GC, and can be object or field-grained. `UnlogBit` -> `ObjectUnlogBit`. Added `Object` prefix to prepare for adding field unlog bit barriers. --- mmtk/Cargo.lock | 1 - ...ch64.cpp => mmtkGenBarrierSetAssembler_aarch64.cpp} | 4 ++-- ...ch64.hpp => mmtkGenBarrierSetAssembler_aarch64.hpp} | 4 ++-- ... mmtkObjectUnlogBitBarrierSetAssembler_aarch64.cpp} | 10 +++++----- ... mmtkObjectUnlogBitBarrierSetAssembler_aarch64.hpp} | 2 +- .../aarch64/mmtkSATBBarrierSetAssembler_aarch64.hpp | 4 ++-- ..._riscv.cpp => mmtkGenBarrierSetAssembler_riscv.cpp} | 4 ++-- ..._riscv.hpp => mmtkGenBarrierSetAssembler_riscv.hpp} | 2 +- ...bler_x86.cpp => mmtkGenBarrierSetAssembler_x86.cpp} | 6 +++--- ...bler_x86.hpp => mmtkGenBarrierSetAssembler_x86.hpp} | 4 ++-- ...p => mmtkObjectUnlogBitBarrierSetAssembler_x86.cpp} | 10 +++++----- ...p => mmtkObjectUnlogBitBarrierSetAssembler_x86.hpp} | 2 +- openjdk/cpu/x86/mmtkSATBBarrierSetAssembler_x86.hpp | 4 ++-- ...er_zero.hpp => mmtkGenBarrierSetAssembler_zero.hpp} | 2 +- openjdk/share/barriers/mmtkObjectBarrier.hpp | 4 ++-- 15 files changed, 31 insertions(+), 32 deletions(-) rename openjdk/cpu/aarch64/{mmtkObjectBarrierSetAssembler_aarch64.cpp => mmtkGenBarrierSetAssembler_aarch64.cpp} (75%) rename openjdk/cpu/aarch64/{mmtkObjectBarrierSetAssembler_aarch64.hpp => mmtkGenBarrierSetAssembler_aarch64.hpp} (83%) rename openjdk/cpu/aarch64/{mmtkUnlogBitBarrierSetAssembler_aarch64.cpp => mmtkObjectUnlogBitBarrierSetAssembler_aarch64.cpp} (81%) rename openjdk/cpu/aarch64/{mmtkUnlogBitBarrierSetAssembler_aarch64.hpp => mmtkObjectUnlogBitBarrierSetAssembler_aarch64.hpp} (92%) rename openjdk/cpu/riscv/{mmtkObjectBarrierSetAssembler_riscv.cpp => mmtkGenBarrierSetAssembler_riscv.cpp} (92%) rename openjdk/cpu/riscv/{mmtkObjectBarrierSetAssembler_riscv.hpp => mmtkGenBarrierSetAssembler_riscv.hpp} (89%) rename openjdk/cpu/x86/{mmtkObjectBarrierSetAssembler_x86.cpp => mmtkGenBarrierSetAssembler_x86.cpp} (78%) rename openjdk/cpu/x86/{mmtkObjectBarrierSetAssembler_x86.hpp => mmtkGenBarrierSetAssembler_x86.hpp} (85%) rename openjdk/cpu/x86/{mmtkUnlogBitBarrierSetAssembler_x86.cpp => mmtkObjectUnlogBitBarrierSetAssembler_x86.cpp} (81%) rename openjdk/cpu/x86/{mmtkUnlogBitBarrierSetAssembler_x86.hpp => mmtkObjectUnlogBitBarrierSetAssembler_x86.hpp} (92%) rename openjdk/cpu/zero/{mmtkObjectBarrierSetAssembler_zero.hpp => mmtkGenBarrierSetAssembler_zero.hpp} (84%) diff --git a/mmtk/Cargo.lock b/mmtk/Cargo.lock index 6507379b..69152755 100644 --- a/mmtk/Cargo.lock +++ b/mmtk/Cargo.lock @@ -599,7 +599,6 @@ dependencies = [ "lazy_static", "libc", "log", - "memoffset", "mmtk-macros", "num-traits", "num_cpus", diff --git a/openjdk/cpu/aarch64/mmtkObjectBarrierSetAssembler_aarch64.cpp b/openjdk/cpu/aarch64/mmtkGenBarrierSetAssembler_aarch64.cpp similarity index 75% rename from openjdk/cpu/aarch64/mmtkObjectBarrierSetAssembler_aarch64.cpp rename to openjdk/cpu/aarch64/mmtkGenBarrierSetAssembler_aarch64.cpp index 518441b7..e69759fc 100644 --- a/openjdk/cpu/aarch64/mmtkObjectBarrierSetAssembler_aarch64.cpp +++ b/openjdk/cpu/aarch64/mmtkGenBarrierSetAssembler_aarch64.cpp @@ -6,12 +6,12 @@ #define __ masm-> -void MMTkObjectBarrierSetAssembler::object_reference_write_post(MacroAssembler* masm, DecoratorSet decorators, Address dst, Register val, Register tmp1, Register tmp2, Register tmp3) const { +void MMTkGenBarrierSetAssembler::object_reference_write_post(MacroAssembler* masm, DecoratorSet decorators, Address dst, Register val, Register tmp1, Register tmp2, Register tmp3) const { if (can_remove_barrier(decorators, val, /* skip_const_null */ true)) return; object_reference_write_pre_or_post(masm, decorators, dst, val, tmp1, tmp2, tmp3, /* pre = */ false); } -void MMTkObjectBarrierSetAssembler::arraycopy_epilogue(MacroAssembler* masm, DecoratorSet decorators, bool is_oop, +void MMTkGenBarrierSetAssembler::arraycopy_epilogue(MacroAssembler* masm, DecoratorSet decorators, bool is_oop, Register src, Register dst, Register count, Register tmp, RegSet saved_regs) { // see also void G1BarrierSetAssembler::gen_write_ref_array_post_barrier assert_different_registers(src, dst, count); diff --git a/openjdk/cpu/aarch64/mmtkObjectBarrierSetAssembler_aarch64.hpp b/openjdk/cpu/aarch64/mmtkGenBarrierSetAssembler_aarch64.hpp similarity index 83% rename from openjdk/cpu/aarch64/mmtkObjectBarrierSetAssembler_aarch64.hpp rename to openjdk/cpu/aarch64/mmtkGenBarrierSetAssembler_aarch64.hpp index 60801b55..4253e91d 100644 --- a/openjdk/cpu/aarch64/mmtkObjectBarrierSetAssembler_aarch64.hpp +++ b/openjdk/cpu/aarch64/mmtkGenBarrierSetAssembler_aarch64.hpp @@ -2,11 +2,11 @@ #define MMTK_OPENJDK_MMTK_OBJECT_BARRIER_SET_ASSEMBLER_AARCH64_HPP #include "utilities/macros.hpp" -#include CPU_HEADER(mmtkUnlogBitBarrierSetAssembler) +#include CPU_HEADER(mmtkObjectUnlogBitBarrierSetAssembler) //////////////////// Assembler //////////////////// -class MMTkObjectBarrierSetAssembler: public MMTkUnlogBitBarrierSetAssembler { +class MMTkGenBarrierSetAssembler: public MMTkObjectUnlogBitBarrierSetAssembler { protected: virtual void object_reference_write_post(MacroAssembler* masm, DecoratorSet decorators, Address dst, Register val, Register tmp1, Register tmp2, Register tmp3) const override; public: diff --git a/openjdk/cpu/aarch64/mmtkUnlogBitBarrierSetAssembler_aarch64.cpp b/openjdk/cpu/aarch64/mmtkObjectUnlogBitBarrierSetAssembler_aarch64.cpp similarity index 81% rename from openjdk/cpu/aarch64/mmtkUnlogBitBarrierSetAssembler_aarch64.cpp rename to openjdk/cpu/aarch64/mmtkObjectUnlogBitBarrierSetAssembler_aarch64.cpp index 32b5e6b5..bb7afbbc 100644 --- a/openjdk/cpu/aarch64/mmtkUnlogBitBarrierSetAssembler_aarch64.cpp +++ b/openjdk/cpu/aarch64/mmtkObjectUnlogBitBarrierSetAssembler_aarch64.cpp @@ -4,7 +4,7 @@ #include "c1/c1_MacroAssembler.hpp" #include "utilities/macros.hpp" -#include CPU_HEADER(mmtkUnlogBitBarrierSetAssembler) +#include CPU_HEADER(mmtkObjectUnlogBitBarrierSetAssembler) #include @@ -12,7 +12,7 @@ #define __ masm-> -void MMTkUnlogBitBarrierSetAssembler::emit_check_unlog_bit_fast_path(MacroAssembler* masm, Label &done, Register obj, Register tmp1, Register tmp2, Register tmp3) { +void MMTkObjectUnlogBitBarrierSetAssembler::emit_check_unlog_bit_fast_path(MacroAssembler* masm, Label &done, Register obj, Register tmp1, Register tmp2, Register tmp3) { // Note that `tmp1` and `tmp2` are actual temporary registers available for use, // not the `tmp1` and `tmp2` from `store_at`. assert_different_registers(obj, tmp1, tmp2, tmp3); @@ -33,7 +33,7 @@ void MMTkUnlogBitBarrierSetAssembler::emit_check_unlog_bit_fast_path(MacroAssemb #define __ masm-> -void MMTkUnlogBitBarrierSetAssembler::object_reference_write_pre_or_post(MacroAssembler* masm, DecoratorSet decorators, Address dst, Register val, Register tmp1, Register tmp2, Register tmp3, bool pre) { +void MMTkObjectUnlogBitBarrierSetAssembler::object_reference_write_pre_or_post(MacroAssembler* masm, DecoratorSet decorators, Address dst, Register val, Register tmp1, Register tmp2, Register tmp3, bool pre) { Label done; Register obj = dst.base(); if (mmtk_enable_barrier_fastpath) { @@ -80,7 +80,7 @@ void MMTkUnlogBitBarrierSetAssembler::object_reference_write_pre_or_post(MacroAs #define __ ce->masm()-> -void MMTkUnlogBitBarrierSetAssembler::generate_c1_unlog_bit_barrier_slow_path_stub(LIR_Assembler* ce, MMTkC1UnlogBitBarrierSlowPathStub* stub) const { +void MMTkObjectUnlogBitBarrierSetAssembler::generate_c1_unlog_bit_barrier_slow_path_stub(LIR_Assembler* ce, MMTkC1UnlogBitBarrierSlowPathStub* stub) const { MMTkBarrierSetC1* bs = (MMTkBarrierSetC1*) BarrierSet::barrier_set()->barrier_set_c1(); __ bind(*stub->entry()); ce->store_parameter(stub->src->as_pointer_register(), 0); @@ -94,7 +94,7 @@ void MMTkUnlogBitBarrierSetAssembler::generate_c1_unlog_bit_barrier_slow_path_st } void MMTkC1UnlogBitBarrierSlowPathStub::emit_code(LIR_Assembler* ce) { - MMTkUnlogBitBarrierSetAssembler* bs = (MMTkUnlogBitBarrierSetAssembler*) BarrierSet::barrier_set()->barrier_set_assembler(); + MMTkObjectUnlogBitBarrierSetAssembler* bs = (MMTkObjectUnlogBitBarrierSetAssembler*) BarrierSet::barrier_set()->barrier_set_assembler(); bs->generate_c1_unlog_bit_barrier_slow_path_stub(ce, this); } diff --git a/openjdk/cpu/aarch64/mmtkUnlogBitBarrierSetAssembler_aarch64.hpp b/openjdk/cpu/aarch64/mmtkObjectUnlogBitBarrierSetAssembler_aarch64.hpp similarity index 92% rename from openjdk/cpu/aarch64/mmtkUnlogBitBarrierSetAssembler_aarch64.hpp rename to openjdk/cpu/aarch64/mmtkObjectUnlogBitBarrierSetAssembler_aarch64.hpp index e6a558c7..2a8557ad 100644 --- a/openjdk/cpu/aarch64/mmtkUnlogBitBarrierSetAssembler_aarch64.hpp +++ b/openjdk/cpu/aarch64/mmtkObjectUnlogBitBarrierSetAssembler_aarch64.hpp @@ -9,7 +9,7 @@ //////////////////// Assembler //////////////////// -class MMTkUnlogBitBarrierSetAssembler: public MMTkBarrierSetAssembler { +class MMTkObjectUnlogBitBarrierSetAssembler: public MMTkBarrierSetAssembler { protected: static void emit_check_unlog_bit_fast_path(MacroAssembler* masm, Label &done, Register obj, Register tmp1, Register tmp2, Register tmp3); static void object_reference_write_pre_or_post(MacroAssembler* masm, DecoratorSet decorators, Address dst, Register val, Register tmp1, Register tmp2, Register tmp3, bool pre); diff --git a/openjdk/cpu/aarch64/mmtkSATBBarrierSetAssembler_aarch64.hpp b/openjdk/cpu/aarch64/mmtkSATBBarrierSetAssembler_aarch64.hpp index 4deb12d0..02173f1f 100644 --- a/openjdk/cpu/aarch64/mmtkSATBBarrierSetAssembler_aarch64.hpp +++ b/openjdk/cpu/aarch64/mmtkSATBBarrierSetAssembler_aarch64.hpp @@ -2,11 +2,11 @@ #define MMTK_OPENJDK_MMTK_SATB_BARRIER_SET_ASSEMBLER_AARCH64_HPP #include "utilities/macros.hpp" -#include CPU_HEADER(mmtkUnlogBitBarrierSetAssembler) +#include CPU_HEADER(mmtkObjectUnlogBitBarrierSetAssembler) //////////////////// Assembler //////////////////// -class MMTkSATBBarrierSetAssembler: public MMTkUnlogBitBarrierSetAssembler { +class MMTkSATBBarrierSetAssembler: public MMTkObjectUnlogBitBarrierSetAssembler { protected: virtual void object_reference_write_pre(MacroAssembler* masm, DecoratorSet decorators, Address dst, Register val, Register tmp1, Register tmp2, Register tmp3) const override; public: diff --git a/openjdk/cpu/riscv/mmtkObjectBarrierSetAssembler_riscv.cpp b/openjdk/cpu/riscv/mmtkGenBarrierSetAssembler_riscv.cpp similarity index 92% rename from openjdk/cpu/riscv/mmtkObjectBarrierSetAssembler_riscv.cpp rename to openjdk/cpu/riscv/mmtkGenBarrierSetAssembler_riscv.cpp index 9c2c761f..132ba8db 100644 --- a/openjdk/cpu/riscv/mmtkObjectBarrierSetAssembler_riscv.cpp +++ b/openjdk/cpu/riscv/mmtkGenBarrierSetAssembler_riscv.cpp @@ -30,7 +30,7 @@ // li a1,0 // mv a0,a4 // tail _Z32object_reference_write_slow_callPvS_m -void MMTkObjectBarrierSetAssembler::object_reference_write_post(MacroAssembler* masm, DecoratorSet decorators, Address dst, Register val, Register tmp1, Register tmp2) const { +void MMTkGenBarrierSetAssembler::object_reference_write_post(MacroAssembler* masm, DecoratorSet decorators, Address dst, Register val, Register tmp1, Register tmp2) const { // tmp1 and tmp2 is from MacroAssembler::access_store_at // For do_oop_store, we have three tmps, x28/t3, x29/t4, x13/a3 // printf("object_reference_write_post\n"); @@ -83,7 +83,7 @@ void MMTkObjectBarrierSetAssembler::object_reference_write_post(MacroAssembler* } } -void MMTkObjectBarrierSetAssembler::arraycopy_epilogue(MacroAssembler* masm, DecoratorSet decorators, bool is_oop, +void MMTkGenBarrierSetAssembler::arraycopy_epilogue(MacroAssembler* masm, DecoratorSet decorators, bool is_oop, Register src, Register dst, Register count, Register tmp, RegSet saved_regs) { // see also void G1BarrierSetAssembler::gen_write_ref_array_post_barrier assert_different_registers(src, dst, count); diff --git a/openjdk/cpu/riscv/mmtkObjectBarrierSetAssembler_riscv.hpp b/openjdk/cpu/riscv/mmtkGenBarrierSetAssembler_riscv.hpp similarity index 89% rename from openjdk/cpu/riscv/mmtkObjectBarrierSetAssembler_riscv.hpp rename to openjdk/cpu/riscv/mmtkGenBarrierSetAssembler_riscv.hpp index ca7a9ca2..ff444876 100644 --- a/openjdk/cpu/riscv/mmtkObjectBarrierSetAssembler_riscv.hpp +++ b/openjdk/cpu/riscv/mmtkGenBarrierSetAssembler_riscv.hpp @@ -1,7 +1,7 @@ #ifndef MMTK_OPENJDK_MMTK_OBJECT_BARRIER_SET_ASSEMBLER_RISCV_HPP #define MMTK_OPENJDK_MMTK_OBJECT_BARRIER_SET_ASSEMBLER_RISCV_HPP -class MMTkObjectBarrierSetAssembler: public MMTkBarrierSetAssembler { +class MMTkGenBarrierSetAssembler: public MMTkBarrierSetAssembler { protected: virtual void object_reference_write_post(MacroAssembler* masm, DecoratorSet decorators, Address dst, Register val, Register tmp1, Register tmp2) const override; public: diff --git a/openjdk/cpu/x86/mmtkObjectBarrierSetAssembler_x86.cpp b/openjdk/cpu/x86/mmtkGenBarrierSetAssembler_x86.cpp similarity index 78% rename from openjdk/cpu/x86/mmtkObjectBarrierSetAssembler_x86.cpp rename to openjdk/cpu/x86/mmtkGenBarrierSetAssembler_x86.cpp index 474d958a..ddd32cac 100644 --- a/openjdk/cpu/x86/mmtkObjectBarrierSetAssembler_x86.cpp +++ b/openjdk/cpu/x86/mmtkGenBarrierSetAssembler_x86.cpp @@ -6,12 +6,12 @@ #define __ masm-> -void MMTkObjectBarrierSetAssembler::object_reference_write_post(MacroAssembler* masm, DecoratorSet decorators, Address dst, Register val, Register tmp1, Register tmp2, Register tmp3, bool compensate_val_reg) const { +void MMTkGenBarrierSetAssembler::object_reference_write_post(MacroAssembler* masm, DecoratorSet decorators, Address dst, Register val, Register tmp1, Register tmp2, Register tmp3, bool compensate_val_reg) const { if (can_remove_barrier(decorators, val, /* skip_const_null */ true)) return; object_reference_write_pre_or_post(masm, decorators, dst, val, tmp1, tmp2, tmp3, /* pre = */ false); } -void MMTkObjectBarrierSetAssembler::arraycopy_prologue(MacroAssembler* masm, DecoratorSet decorators, BasicType type, Register src, Register dst, Register count) { +void MMTkGenBarrierSetAssembler::arraycopy_prologue(MacroAssembler* masm, DecoratorSet decorators, BasicType type, Register src, Register dst, Register count) { // `count` or `dst` register values may get overwritten after the array copy, and `arraycopy_epilogue` can receive invalid addresses. // Save the register values here and restore them in `arraycopy_epilogue`. // See https://github.com/openjdk/jdk/blob/jdk-11%2B19/src/hotspot/cpu/x86/gc/shared/modRefBarrierSetAssembler_x86.cpp#L37-L50 @@ -31,7 +31,7 @@ void MMTkObjectBarrierSetAssembler::arraycopy_prologue(MacroAssembler* masm, Dec } } -void MMTkObjectBarrierSetAssembler::arraycopy_epilogue(MacroAssembler* masm, DecoratorSet decorators, BasicType type, Register src, Register dst, Register count) { +void MMTkGenBarrierSetAssembler::arraycopy_epilogue(MacroAssembler* masm, DecoratorSet decorators, BasicType type, Register src, Register dst, Register count) { bool checkcast = (decorators & ARRAYCOPY_CHECKCAST) != 0; bool disjoint = (decorators & ARRAYCOPY_DISJOINT) != 0; bool obj_int = type == T_OBJECT LP64_ONLY(&& UseCompressedOops); diff --git a/openjdk/cpu/x86/mmtkObjectBarrierSetAssembler_x86.hpp b/openjdk/cpu/x86/mmtkGenBarrierSetAssembler_x86.hpp similarity index 85% rename from openjdk/cpu/x86/mmtkObjectBarrierSetAssembler_x86.hpp rename to openjdk/cpu/x86/mmtkGenBarrierSetAssembler_x86.hpp index 2f294cfc..0f897c97 100644 --- a/openjdk/cpu/x86/mmtkObjectBarrierSetAssembler_x86.hpp +++ b/openjdk/cpu/x86/mmtkGenBarrierSetAssembler_x86.hpp @@ -2,11 +2,11 @@ #define MMTK_OPENJDK_MMTK_OBJECT_BARRIER_SET_ASSEMBLER_X86_HPP #include "utilities/macros.hpp" -#include CPU_HEADER(mmtkUnlogBitBarrierSetAssembler) +#include CPU_HEADER(mmtkObjectUnlogBitBarrierSetAssembler) //////////////////// Assembler //////////////////// -class MMTkObjectBarrierSetAssembler: public MMTkUnlogBitBarrierSetAssembler { +class MMTkGenBarrierSetAssembler: public MMTkObjectUnlogBitBarrierSetAssembler { protected: virtual void object_reference_write_post(MacroAssembler* masm, DecoratorSet decorators, Address dst, Register val, Register tmp1, Register tmp2, Register tmp3, bool compensate_val_reg) const override; public: diff --git a/openjdk/cpu/x86/mmtkUnlogBitBarrierSetAssembler_x86.cpp b/openjdk/cpu/x86/mmtkObjectUnlogBitBarrierSetAssembler_x86.cpp similarity index 81% rename from openjdk/cpu/x86/mmtkUnlogBitBarrierSetAssembler_x86.cpp rename to openjdk/cpu/x86/mmtkObjectUnlogBitBarrierSetAssembler_x86.cpp index 8f472d9a..1c349469 100644 --- a/openjdk/cpu/x86/mmtkUnlogBitBarrierSetAssembler_x86.cpp +++ b/openjdk/cpu/x86/mmtkObjectUnlogBitBarrierSetAssembler_x86.cpp @@ -4,7 +4,7 @@ #include "c1/c1_MacroAssembler.hpp" #include "utilities/macros.hpp" -#include CPU_HEADER(mmtkUnlogBitBarrierSetAssembler) +#include CPU_HEADER(mmtkObjectUnlogBitBarrierSetAssembler) #include @@ -12,7 +12,7 @@ #define __ masm-> -void MMTkUnlogBitBarrierSetAssembler::emit_check_unlog_bit_fast_path(MacroAssembler* masm, Label &done, Register obj, Register tmp1, Register tmp2, Register tmp3) { +void MMTkObjectUnlogBitBarrierSetAssembler::emit_check_unlog_bit_fast_path(MacroAssembler* masm, Label &done, Register obj, Register tmp1, Register tmp2, Register tmp3) { // Note that `tmp1` and `tmp2` are actual temporary registers available for use, // not the `tmp1` and `tmp2` from `store_at`. assert_different_registers(obj, tmp1, tmp2, tmp3); @@ -39,7 +39,7 @@ void MMTkUnlogBitBarrierSetAssembler::emit_check_unlog_bit_fast_path(MacroAssemb #define __ masm-> -void MMTkUnlogBitBarrierSetAssembler::object_reference_write_pre_or_post(MacroAssembler* masm, DecoratorSet decorators, Address dst, Register val, Register tmp1, Register tmp2, Register tmp3, bool pre) { +void MMTkObjectUnlogBitBarrierSetAssembler::object_reference_write_pre_or_post(MacroAssembler* masm, DecoratorSet decorators, Address dst, Register val, Register tmp1, Register tmp2, Register tmp3, bool pre) { Label done; Register obj = dst.base(); if (mmtk_enable_barrier_fastpath) { @@ -86,7 +86,7 @@ void MMTkUnlogBitBarrierSetAssembler::object_reference_write_pre_or_post(MacroAs #define __ ce->masm()-> -void MMTkUnlogBitBarrierSetAssembler::generate_c1_unlog_bit_barrier_slow_path_stub(LIR_Assembler* ce, MMTkC1UnlogBitBarrierSlowPathStub* stub) const { +void MMTkObjectUnlogBitBarrierSetAssembler::generate_c1_unlog_bit_barrier_slow_path_stub(LIR_Assembler* ce, MMTkC1UnlogBitBarrierSlowPathStub* stub) const { MMTkBarrierSetC1* bs = (MMTkBarrierSetC1*) BarrierSet::barrier_set()->barrier_set_c1(); __ bind(*stub->entry()); ce->store_parameter(stub->src->as_pointer_register(), 0); @@ -100,7 +100,7 @@ void MMTkUnlogBitBarrierSetAssembler::generate_c1_unlog_bit_barrier_slow_path_st } void MMTkC1UnlogBitBarrierSlowPathStub::emit_code(LIR_Assembler* ce) { - MMTkUnlogBitBarrierSetAssembler* bs = (MMTkUnlogBitBarrierSetAssembler*) BarrierSet::barrier_set()->barrier_set_assembler(); + MMTkObjectUnlogBitBarrierSetAssembler* bs = (MMTkObjectUnlogBitBarrierSetAssembler*) BarrierSet::barrier_set()->barrier_set_assembler(); bs->generate_c1_unlog_bit_barrier_slow_path_stub(ce, this); } diff --git a/openjdk/cpu/x86/mmtkUnlogBitBarrierSetAssembler_x86.hpp b/openjdk/cpu/x86/mmtkObjectUnlogBitBarrierSetAssembler_x86.hpp similarity index 92% rename from openjdk/cpu/x86/mmtkUnlogBitBarrierSetAssembler_x86.hpp rename to openjdk/cpu/x86/mmtkObjectUnlogBitBarrierSetAssembler_x86.hpp index 1d9f87bf..b774e174 100644 --- a/openjdk/cpu/x86/mmtkUnlogBitBarrierSetAssembler_x86.hpp +++ b/openjdk/cpu/x86/mmtkObjectUnlogBitBarrierSetAssembler_x86.hpp @@ -9,7 +9,7 @@ //////////////////// Assembler //////////////////// -class MMTkUnlogBitBarrierSetAssembler: public MMTkBarrierSetAssembler { +class MMTkObjectUnlogBitBarrierSetAssembler: public MMTkBarrierSetAssembler { protected: static void emit_check_unlog_bit_fast_path(MacroAssembler* masm, Label &done, Register obj, Register tmp1, Register tmp2, Register tmp3); static void object_reference_write_pre_or_post(MacroAssembler* masm, DecoratorSet decorators, Address dst, Register val, Register tmp1, Register tmp2, Register tmp3, bool pre); diff --git a/openjdk/cpu/x86/mmtkSATBBarrierSetAssembler_x86.hpp b/openjdk/cpu/x86/mmtkSATBBarrierSetAssembler_x86.hpp index 5e977b8b..49e2875d 100644 --- a/openjdk/cpu/x86/mmtkSATBBarrierSetAssembler_x86.hpp +++ b/openjdk/cpu/x86/mmtkSATBBarrierSetAssembler_x86.hpp @@ -2,11 +2,11 @@ #define MMTK_OPENJDK_MMTK_SATB_BARRIER_SET_ASSEMBLER_X86_HPP #include "utilities/macros.hpp" -#include CPU_HEADER(mmtkUnlogBitBarrierSetAssembler) +#include CPU_HEADER(mmtkObjectUnlogBitBarrierSetAssembler) //////////////////// Assembler //////////////////// -class MMTkSATBBarrierSetAssembler: public MMTkUnlogBitBarrierSetAssembler { +class MMTkSATBBarrierSetAssembler: public MMTkObjectUnlogBitBarrierSetAssembler { protected: virtual void object_reference_write_pre(MacroAssembler* masm, DecoratorSet decorators, Address dst, Register val, Register tmp1, Register tmp2, Register tmp3) const override; public: diff --git a/openjdk/cpu/zero/mmtkObjectBarrierSetAssembler_zero.hpp b/openjdk/cpu/zero/mmtkGenBarrierSetAssembler_zero.hpp similarity index 84% rename from openjdk/cpu/zero/mmtkObjectBarrierSetAssembler_zero.hpp rename to openjdk/cpu/zero/mmtkGenBarrierSetAssembler_zero.hpp index 7fbfd37b..06fe2a00 100644 --- a/openjdk/cpu/zero/mmtkObjectBarrierSetAssembler_zero.hpp +++ b/openjdk/cpu/zero/mmtkGenBarrierSetAssembler_zero.hpp @@ -1,5 +1,5 @@ #ifndef MMTK_OPENJDK_MMTK_OBJECT_BARRIER_SET_ASSEMBLER_ZERO_HPP #define MMTK_OPENJDK_MMTK_OBJECT_BARRIER_SET_ASSEMBLER_ZERO_HPP -class MMTkObjectBarrierSetAssembler; +class MMTkGenBarrierSetAssembler; #endif // MMTK_OPENJDK_MMTK_OBJECT_BARRIER_SET_ASSEMBLER_ZERO_HPP diff --git a/openjdk/share/barriers/mmtkObjectBarrier.hpp b/openjdk/share/barriers/mmtkObjectBarrier.hpp index 14af6d8b..c2e7d138 100644 --- a/openjdk/share/barriers/mmtkObjectBarrier.hpp +++ b/openjdk/share/barriers/mmtkObjectBarrier.hpp @@ -5,7 +5,7 @@ #include "../mmtkBarrierSet.hpp" #include "utilities/macros.hpp" #include CPU_HEADER(mmtkBarrierSetAssembler) -#include CPU_HEADER(mmtkObjectBarrierSetAssembler) +#include CPU_HEADER(mmtkGenBarrierSetAssembler) #include "mmtkUnlogBitBarrier.hpp" #ifdef COMPILER1 #include "../mmtkBarrierSetC1.hpp" @@ -67,7 +67,7 @@ class MMTkObjectBarrierSetC2; struct MMTkObjectBarrier: MMTkBarrierImpl< MMTkObjectBarrierSetRuntime, - MMTkObjectBarrierSetAssembler, + MMTkGenBarrierSetAssembler, MMTkObjectBarrierSetC1, MMTkObjectBarrierSetC2 > {};