Skip to content

Commit 1d67c22

Browse files
committed
Merge branch 'master' into feature/weak-final-guide
2 parents b07dbd9 + 4ca8812 commit 1d67c22

File tree

4 files changed

+36
-4
lines changed

4 files changed

+36
-4
lines changed

.github/workflows/extended-tests-bindings.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -121,7 +121,7 @@ jobs:
121121
- name: Setup
122122
run: |
123123
cd mmtk-julia
124-
./.github/scripts/ci-checkout.sh
124+
./.github/scripts/ci-checkout.sh ${{ needs.binding-refs.outputs.julia_vm_repo }} ${{ needs.binding-refs.outputs.julia_vm_ref }}
125125
./.github/scripts/ci-setup.sh
126126
sed -i 's/^mmtk[[:space:]]=/#ci:mmtk=/g' mmtk/Cargo.toml
127127
sed -i 's/^#[[:space:]]mmtk/mmtk/g' mmtk/Cargo.toml

.github/workflows/pr-binding-refs.yml

Lines changed: 27 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,8 @@
2222
# V8_BINDING_REF=xxxxxx
2323
# JULIA_BINDING_REPO=xx/xx
2424
# JULIA_BINDING_REF=xxxxxx
25+
# JULIA_VM_REPO=xx/xx
26+
# JULIA_VM_REF=xxxxxx
2527
# RUBY_BINDING_REPO=xx/xx
2628
# RUBY_BINDING_REF=xxxxxx
2729
# ```
@@ -86,6 +88,21 @@ on:
8688
julia_binding_ref_default:
8789
description: "The default git ref of Julia binding, such as sha and branch name"
8890
value: ${{ jobs.binding-refs.outputs.julia_binding_ref_default }}
91+
# We further define the Julia version to run with, as we no longer record the Julia
92+
# version with each binding commit. Instead, we record the binding version with
93+
# each Julia commit.
94+
julia_vm_repo:
95+
description: "The repository of Julia, such as {user}/{repo}"
96+
value: ${{ jobs.binding-refs.outputs.julia_vm_repo }}
97+
julia_vm_repo_default:
98+
description: "The default repository of Julia, such as {user}/{repo}"
99+
value: ${{ jobs.binding-refs.outputs.julia_vm_repo_default }}
100+
julia_vm_ref:
101+
description: "The git ref of Julia, such as sha and branch name"
102+
value: ${{ jobs.binding-refs.outputs.julia_vm_ref }}
103+
julia_vm_ref_default:
104+
description: "The default git ref of Julia, such as sha and branch name"
105+
value: ${{ jobs.binding-refs.outputs.julia_vm_ref_default }}
89106

90107
ruby_binding_repo:
91108
description: "The repository of Ruby binding, such as {user}/{repo}"
@@ -111,7 +128,9 @@ jobs:
111128
V8_BINDING_REPO_DEFAULT: mmtk/mmtk-v8
112129
V8_BINDING_REF_DEFAULT: master
113130
JULIA_BINDING_REPO_DEFAULT: mmtk/mmtk-julia
114-
JULIA_BINDING_REF_DEFAULT: dev
131+
JULIA_BINDING_REF_DEFAULT: master
132+
JULIA_VM_REPO_DEFAULT: JuliaLang/julia
133+
JULIA_VM_REF_DEFAULT: master
115134
RUBY_BINDING_REPO_DEFAULT: mmtk/mmtk-ruby
116135
RUBY_BINDING_REF_DEFAULT: master
117136
outputs:
@@ -131,6 +150,10 @@ jobs:
131150
julia_binding_repo_default: ${{ env.JULIA_BINDING_REPO_DEFAULT }}
132151
julia_binding_ref: ${{ steps.print.outputs.julia_binding_ref }}
133152
julia_binding_ref_default: ${{ env.JULIA_BINDING_REF_DEFAULT }}
153+
julia_vm_repo: ${{ steps.print.outputs.julia_vm_repo }}
154+
julia_vm_repo_default: ${{ env.JULIA_VM_REPO_DEFAULT }}
155+
julia_vm_ref: ${{ steps.print.outputs.julia_vm_ref }}
156+
julia_vm_ref_default: ${{ env.JULIA_VM_REF_DEFAULT }}
134157
ruby_binding_repo: ${{ steps.print.outputs.ruby_binding_repo }}
135158
ruby_binding_repo_default: ${{ env.RUBY_BINDING_REPO_DEFAULT }}
136159
ruby_binding_ref: ${{ steps.print.outputs.ruby_binding_ref }}
@@ -141,7 +164,7 @@ jobs:
141164
with:
142165
pull_request: ${{ inputs.pull_request }}
143166
token: ${{ secrets.GITHUB_TOKEN }}
144-
default_env: 'OPENJDK_BINDING_REPO=${{ env.OPENJDK_BINDING_REPO_DEFAULT }},OPENJDK_BINDING_REF=${{ env.OPENJDK_BINDING_REF_DEFAULT }},JIKESRVM_BINDING_REPO=${{ env.JIKESRVM_BINDING_REPO_DEFAULT }},JIKESRVM_BINDING_REF=${{ env.JIKESRVM_BINDING_REF_DEFAULT }},V8_BINDING_REPO=${{ env.V8_BINDING_REPO_DEFAULT }},V8_BINDING_REF=${{ env.V8_BINDING_REF_DEFAULT }},JULIA_BINDING_REPO=${{ env.JULIA_BINDING_REPO_DEFAULT }},JULIA_BINDING_REF=${{ env.JULIA_BINDING_REF_DEFAULT }},RUBY_BINDING_REPO=${{ env.RUBY_BINDING_REPO_DEFAULT }},RUBY_BINDING_REF=${{ env.RUBY_BINDING_REF_DEFAULT }}'
167+
default_env: 'OPENJDK_BINDING_REPO=${{ env.OPENJDK_BINDING_REPO_DEFAULT }},OPENJDK_BINDING_REF=${{ env.OPENJDK_BINDING_REF_DEFAULT }},JIKESRVM_BINDING_REPO=${{ env.JIKESRVM_BINDING_REPO_DEFAULT }},JIKESRVM_BINDING_REF=${{ env.JIKESRVM_BINDING_REF_DEFAULT }},V8_BINDING_REPO=${{ env.V8_BINDING_REPO_DEFAULT }},V8_BINDING_REF=${{ env.V8_BINDING_REF_DEFAULT }},JULIA_BINDING_REPO=${{ env.JULIA_BINDING_REPO_DEFAULT }},JULIA_BINDING_REF=${{ env.JULIA_BINDING_REF_DEFAULT }},JULIA_VM_REPO=${{ env.JULIA_VM_REPO_DEFAULT }},JULIA_VM_REF=${{ env.JULIA_VM_REF_DEFAULT }},RUBY_BINDING_REPO=${{ env.RUBY_BINDING_REPO_DEFAULT }},RUBY_BINDING_REF=${{ env.RUBY_BINDING_REF_DEFAULT }}'
145168
- id: print
146169
run: |
147170
echo "openjdk_binding_repo=${{ env.OPENJDK_BINDING_REPO }}" >> $GITHUB_OUTPUT
@@ -152,5 +175,7 @@ jobs:
152175
echo "v8_binding_ref=${{ env.V8_BINDING_REF }}" >> $GITHUB_OUTPUT
153176
echo "julia_binding_repo=${{ env.JULIA_BINDING_REPO }}" >> $GITHUB_OUTPUT
154177
echo "julia_binding_ref=${{ env.JULIA_BINDING_REF }}" >> $GITHUB_OUTPUT
178+
echo "julia_vm_repo=${{ env.JULIA_VM_REPO }}" >> $GITHUB_OUTPUT
179+
echo "julia_vm_ref=${{ env.JULIA_VM_REF }}" >> $GITHUB_OUTPUT
155180
echo "ruby_binding_repo=${{ env.RUBY_BINDING_REPO }}" >> $GITHUB_OUTPUT
156181
echo "ruby_binding_ref=${{ env.RUBY_BINDING_REF }}" >> $GITHUB_OUTPUT

src/policy/immix/block.rs

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -247,7 +247,11 @@ impl Block {
247247
if prev_line_is_marked {
248248
holes += 1;
249249
}
250-
250+
// We need to clear the line mark state at least twice in every 128 GC
251+
// otherwise, the line mark state of the last GC will stick around
252+
if line_mark_state > Line::MAX_MARK_STATE - 2 {
253+
line.mark(0);
254+
}
251255
#[cfg(feature = "immix_zero_on_release")]
252256
crate::util::memory::zero(line.start(), Line::BYTES);
253257

src/util/alloc/immix_allocator.rs

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -298,6 +298,9 @@ impl<VM: VMBinding> ImmixAllocator<VM> {
298298
block.start(),
299299
block.end()
300300
);
301+
// Bulk clear stale line mark state
302+
Line::MARK_TABLE
303+
.bzero_metadata(block.start(), crate::policy::immix::block::Block::BYTES);
301304
if self.request_for_large {
302305
self.large_bump_pointer.cursor = block.start();
303306
self.large_bump_pointer.limit = block.end();

0 commit comments

Comments
 (0)