Skip to content

Commit 4dd4675

Browse files
committed
Update ruby and mmtk-core repo rev
This is a reguler merging commit that synchronizes the MMTK's CRuby fork with the upstream. The upstream introduced the imemo:fields type, and is now using it for the `generic_fields_tbl_`, i.e. it now holds instance variables for objects other than `T_OBJECT`, `T_CLASS` and `T_MODULE`. When using MMTk, we treat the key-value pair in the `generic_fields_tbl_` as a strong edge, i.e. treating the imemo:fields of an object as if it were a child. We now update the `generic_fields_tbl_` like other weak tables. This simplified the handling of generic fields table in the MMTk binding. With imemo:fields added, we now have 17 imemo types including MMTk's imemo:mmtk_strbuf and imemo:mmtk_objbuf. We increased the header bits of the imemo type to 5 bits and changed the value of some imemo-specific header offsets, such as `ISEQ_TRANSLATED`. The upstream changed the API for acquiring/releasing the GVL. We make changes accordingly. YJIT assumes there is only one thread doing GC. It panics when two GC worker threads try to mark two iseq objects simultaneously. We made several changes to support parallel GC for YJIT-compiled iseq objects: 1. We replaced `Block::gc_obj_offsets` with `Block::gc_obj_addresses` which are now absolute pointers instead of offsets. By doing so, we no longer need to borrow the `Rc<RefCell<VirtualMem>>` during GC. 2. `rb_yjit_iseq_update_references` no longer uses `CodeBlock` to write code, and no longer calls `mark_all_executable` after updating each object. Instead we make the whole code memory writable before updating any objects, and make it executable after the updating phase finishes. This should both make it friendly to parallel GC and improve performance.
1 parent 37c55d0 commit 4dd4675

File tree

2 files changed

+4
-4
lines changed

2 files changed

+4
-4
lines changed

mmtk/Cargo.lock

Lines changed: 2 additions & 2 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

mmtk/Cargo.toml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ edition = "2021"
1212
# Metadata for the Ruby repository
1313
[package.metadata.ci-repos.ruby]
1414
repo = "mmtk/ruby" # This is used by actions/checkout, so the format is "owner/repo", not URL.
15-
rev = "820a028762342fb44b34954a49fa2faec8563198"
15+
rev = "38be667194be94e8e9adf9b248a19e54f4e198b7"
1616

1717
[lib]
1818
name = "mmtk_ruby"
@@ -37,7 +37,7 @@ features = ["is_mmtk_object", "object_pinning", "sticky_immix_non_moving_nursery
3737

3838
# Uncomment the following lines to use mmtk-core from the official repository.
3939
git = "https://github.com/mmtk/mmtk-core.git"
40-
rev = "3d89bb51c191d3077278684ec5059726128d3e2b"
40+
rev = "8dcfcc32c30eaf0f2a8d7f93489e465f215af093"
4141

4242
# Uncomment the following line to use mmtk-core from a local repository.
4343
#path = "../../mmtk-core"

0 commit comments

Comments
 (0)