Skip to content

Commit 3cd5eb1

Browse files
committed
Use Immix as non moving space
1 parent 3e7ac4f commit 3cd5eb1

File tree

5 files changed

+44
-44
lines changed

5 files changed

+44
-44
lines changed

mmtk/Cargo.lock

+4-11
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

mmtk/Cargo.toml

+1-1
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ lazy_static = "1.1"
2727
# - change branch
2828
# - change repo name
2929
# But other changes including adding/removing whitespaces in commented lines may break the CI
30-
mmtk = { git = "https://github.com/udesou/mmtk-core.git", rev = "7039d5d6ff8a671dc31f700314778b2bfdb34224" }
30+
mmtk = { git = "https://github.com/qinsoon/mmtk-core.git", rev = "0763fb7ec8909b0ebb4008caeff47b332a468879" }
3131
# Uncomment the following to build locally
3232
# mmtk = { path = "../repos/mmtk-core" }
3333
log = {version = "0.4", features = ["max_level_trace", "release_max_level_off"] }

mmtk/api/mmtkMutator.h

+1-1
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ typedef struct {
2121
#define MAX_BUMP_ALLOCATORS 6
2222
#define MAX_LARGE_OBJECT_ALLOCATORS 2
2323
#define MAX_MALLOC_ALLOCATORS 1
24-
#define MAX_IMMIX_ALLOCATORS 1
24+
#define MAX_IMMIX_ALLOCATORS 2
2525
#define MAX_FREE_LIST_ALLOCATORS 2
2626
#define MAX_MARK_COMPACT_ALLOCATORS 1
2727

mmtk/src/julia_types.rs

+30-30
Original file line numberDiff line numberDiff line change
@@ -389,11 +389,11 @@ pub type jl_value_t = _jl_value_t;
389389
#[repr(C)]
390390
#[repr(align(8))]
391391
pub struct MMTkMutatorContext {
392-
pub _bindgen_opaque_blob: [u64; 87usize],
392+
pub _bindgen_opaque_blob: [u64; 98usize],
393393
}
394394
#[allow(clippy::unnecessary_operation, clippy::identity_op)]
395395
const _: () = {
396-
["Size of MMTkMutatorContext"][::std::mem::size_of::<MMTkMutatorContext>() - 696usize];
396+
["Size of MMTkMutatorContext"][::std::mem::size_of::<MMTkMutatorContext>() - 784usize];
397397
["Alignment of MMTkMutatorContext"][::std::mem::align_of::<MMTkMutatorContext>() - 8usize];
398398
};
399399
#[repr(C)]
@@ -404,14 +404,14 @@ pub struct jl_gc_tls_states_t {
404404
}
405405
#[allow(clippy::unnecessary_operation, clippy::identity_op)]
406406
const _: () = {
407-
["Size of jl_gc_tls_states_t"][::std::mem::size_of::<jl_gc_tls_states_t>() - 1672usize];
407+
["Size of jl_gc_tls_states_t"][::std::mem::size_of::<jl_gc_tls_states_t>() - 1760usize];
408408
["Alignment of jl_gc_tls_states_t"][::std::mem::align_of::<jl_gc_tls_states_t>() - 8usize];
409409
["Offset of field: jl_gc_tls_states_t::mmtk_mutator"]
410410
[::std::mem::offset_of!(jl_gc_tls_states_t, mmtk_mutator) - 0usize];
411411
["Offset of field: jl_gc_tls_states_t::malloc_sz_since_last_poll"]
412-
[::std::mem::offset_of!(jl_gc_tls_states_t, malloc_sz_since_last_poll) - 696usize];
412+
[::std::mem::offset_of!(jl_gc_tls_states_t, malloc_sz_since_last_poll) - 784usize];
413413
["Offset of field: jl_gc_tls_states_t::ctx_at_the_time_gc_started"]
414-
[::std::mem::offset_of!(jl_gc_tls_states_t, ctx_at_the_time_gc_started) - 704usize];
414+
[::std::mem::offset_of!(jl_gc_tls_states_t, ctx_at_the_time_gc_started) - 792usize];
415415
};
416416
#[repr(C)]
417417
#[derive(Debug, Copy, Clone)]
@@ -675,7 +675,7 @@ pub struct _jl_tls_states_t {
675675
}
676676
#[allow(clippy::unnecessary_operation, clippy::identity_op)]
677677
const _: () = {
678-
["Size of _jl_tls_states_t"][::std::mem::size_of::<_jl_tls_states_t>() - 3528usize];
678+
["Size of _jl_tls_states_t"][::std::mem::size_of::<_jl_tls_states_t>() - 3616usize];
679679
["Alignment of _jl_tls_states_t"][::std::mem::align_of::<_jl_tls_states_t>() - 8usize];
680680
["Offset of field: _jl_tls_states_t::tid"]
681681
[::std::mem::offset_of!(_jl_tls_states_t, tid) - 0usize];
@@ -700,53 +700,53 @@ const _: () = {
700700
["Offset of field: _jl_tls_states_t::gc_tls"]
701701
[::std::mem::offset_of!(_jl_tls_states_t, gc_tls) - 40usize];
702702
["Offset of field: _jl_tls_states_t::gc_tls_common"]
703-
[::std::mem::offset_of!(_jl_tls_states_t, gc_tls_common) - 1712usize];
703+
[::std::mem::offset_of!(_jl_tls_states_t, gc_tls_common) - 1800usize];
704704
["Offset of field: _jl_tls_states_t::lazily_freed_mtarraylist_buffers"]
705-
[::std::mem::offset_of!(_jl_tls_states_t, lazily_freed_mtarraylist_buffers) - 2992usize];
705+
[::std::mem::offset_of!(_jl_tls_states_t, lazily_freed_mtarraylist_buffers) - 3080usize];
706706
["Offset of field: _jl_tls_states_t::defer_signal"]
707-
[::std::mem::offset_of!(_jl_tls_states_t, defer_signal) - 3056usize];
707+
[::std::mem::offset_of!(_jl_tls_states_t, defer_signal) - 3144usize];
708708
["Offset of field: _jl_tls_states_t::current_task"]
709-
[::std::mem::offset_of!(_jl_tls_states_t, current_task) - 3064usize];
709+
[::std::mem::offset_of!(_jl_tls_states_t, current_task) - 3152usize];
710710
["Offset of field: _jl_tls_states_t::next_task"]
711-
[::std::mem::offset_of!(_jl_tls_states_t, next_task) - 3072usize];
711+
[::std::mem::offset_of!(_jl_tls_states_t, next_task) - 3160usize];
712712
["Offset of field: _jl_tls_states_t::previous_task"]
713-
[::std::mem::offset_of!(_jl_tls_states_t, previous_task) - 3080usize];
713+
[::std::mem::offset_of!(_jl_tls_states_t, previous_task) - 3168usize];
714714
["Offset of field: _jl_tls_states_t::root_task"]
715-
[::std::mem::offset_of!(_jl_tls_states_t, root_task) - 3088usize];
715+
[::std::mem::offset_of!(_jl_tls_states_t, root_task) - 3176usize];
716716
["Offset of field: _jl_tls_states_t::timing_stack"]
717-
[::std::mem::offset_of!(_jl_tls_states_t, timing_stack) - 3096usize];
717+
[::std::mem::offset_of!(_jl_tls_states_t, timing_stack) - 3184usize];
718718
["Offset of field: _jl_tls_states_t::stackbase"]
719-
[::std::mem::offset_of!(_jl_tls_states_t, stackbase) - 3104usize];
719+
[::std::mem::offset_of!(_jl_tls_states_t, stackbase) - 3192usize];
720720
["Offset of field: _jl_tls_states_t::stacksize"]
721-
[::std::mem::offset_of!(_jl_tls_states_t, stacksize) - 3112usize];
721+
[::std::mem::offset_of!(_jl_tls_states_t, stacksize) - 3200usize];
722722
["Offset of field: _jl_tls_states_t::sig_exception"]
723-
[::std::mem::offset_of!(_jl_tls_states_t, sig_exception) - 3120usize];
723+
[::std::mem::offset_of!(_jl_tls_states_t, sig_exception) - 3208usize];
724724
["Offset of field: _jl_tls_states_t::bt_data"]
725-
[::std::mem::offset_of!(_jl_tls_states_t, bt_data) - 3128usize];
725+
[::std::mem::offset_of!(_jl_tls_states_t, bt_data) - 3216usize];
726726
["Offset of field: _jl_tls_states_t::bt_size"]
727-
[::std::mem::offset_of!(_jl_tls_states_t, bt_size) - 3136usize];
727+
[::std::mem::offset_of!(_jl_tls_states_t, bt_size) - 3224usize];
728728
["Offset of field: _jl_tls_states_t::profiling_bt_buffer"]
729-
[::std::mem::offset_of!(_jl_tls_states_t, profiling_bt_buffer) - 3144usize];
729+
[::std::mem::offset_of!(_jl_tls_states_t, profiling_bt_buffer) - 3232usize];
730730
["Offset of field: _jl_tls_states_t::signal_request"]
731-
[::std::mem::offset_of!(_jl_tls_states_t, signal_request) - 3152usize];
731+
[::std::mem::offset_of!(_jl_tls_states_t, signal_request) - 3240usize];
732732
["Offset of field: _jl_tls_states_t::io_wait"]
733-
[::std::mem::offset_of!(_jl_tls_states_t, io_wait) - 3156usize];
733+
[::std::mem::offset_of!(_jl_tls_states_t, io_wait) - 3244usize];
734734
["Offset of field: _jl_tls_states_t::signal_stack"]
735-
[::std::mem::offset_of!(_jl_tls_states_t, signal_stack) - 3160usize];
735+
[::std::mem::offset_of!(_jl_tls_states_t, signal_stack) - 3248usize];
736736
["Offset of field: _jl_tls_states_t::signal_stack_size"]
737-
[::std::mem::offset_of!(_jl_tls_states_t, signal_stack_size) - 3168usize];
737+
[::std::mem::offset_of!(_jl_tls_states_t, signal_stack_size) - 3256usize];
738738
["Offset of field: _jl_tls_states_t::system_id"]
739-
[::std::mem::offset_of!(_jl_tls_states_t, system_id) - 3176usize];
739+
[::std::mem::offset_of!(_jl_tls_states_t, system_id) - 3264usize];
740740
["Offset of field: _jl_tls_states_t::suspend_count"]
741-
[::std::mem::offset_of!(_jl_tls_states_t, suspend_count) - 3184usize];
741+
[::std::mem::offset_of!(_jl_tls_states_t, suspend_count) - 3272usize];
742742
["Offset of field: _jl_tls_states_t::finalizers"]
743-
[::std::mem::offset_of!(_jl_tls_states_t, finalizers) - 3192usize];
743+
[::std::mem::offset_of!(_jl_tls_states_t, finalizers) - 3280usize];
744744
["Offset of field: _jl_tls_states_t::previous_exception"]
745-
[::std::mem::offset_of!(_jl_tls_states_t, previous_exception) - 3448usize];
745+
[::std::mem::offset_of!(_jl_tls_states_t, previous_exception) - 3536usize];
746746
["Offset of field: _jl_tls_states_t::locks"]
747-
[::std::mem::offset_of!(_jl_tls_states_t, locks) - 3456usize];
747+
[::std::mem::offset_of!(_jl_tls_states_t, locks) - 3544usize];
748748
["Offset of field: _jl_tls_states_t::engine_nqueued"]
749-
[::std::mem::offset_of!(_jl_tls_states_t, engine_nqueued) - 3520usize];
749+
[::std::mem::offset_of!(_jl_tls_states_t, engine_nqueued) - 3608usize];
750750
};
751751
pub type jl_function_t = jl_value_t;
752752
pub type jl_timing_block_t = _jl_timing_block_t;

mmtk/src/object_model.rs

+8-1
Original file line numberDiff line numberDiff line change
@@ -115,7 +115,7 @@ impl ObjectModel<JuliaVM> for VMObjectModel {
115115
fn get_current_size(object: ObjectReference) -> usize {
116116
if is_object_in_los(&object) {
117117
unsafe { get_lo_object_size(object) }
118-
} else if is_object_in_immixspace(&object) {
118+
} else if is_object_in_immixspace(&object) || is_object_in_nonmoving(&object) {
119119
unsafe { get_so_object_size(object) }
120120
} else {
121121
// This is hacky but it should work.
@@ -186,6 +186,13 @@ pub fn is_addr_in_immixspace(addr: Address) -> bool {
186186
addr.as_usize() >= 0x200_0000_0000 && addr.as_usize() < 0x400_0000_0000
187187
}
188188

189+
#[inline(always)]
190+
pub fn is_object_in_nonmoving(object: &ObjectReference) -> bool {
191+
// FIXME: get the range from MMTk. Or at least assert at boot time to make sure those constants are correct.
192+
(*object).to_raw_address().as_usize() >= 0x800_0000_0000
193+
&& (*object).to_raw_address().as_usize() < 0xa00_0000_0000
194+
}
195+
189196
/// This function uses mutable static variables and requires unsafe annotation
190197
191198
#[inline(always)]

0 commit comments

Comments
 (0)