summaryrefslogtreecommitdiff
path: root/yjit_core.h
diff options
context:
space:
mode:
authorJohn Hawthorn <john@hawthorn.email>2021-08-07 22:49:31 -0700
committerAlan Wu <XrXr@users.noreply.github.com>2021-10-20 18:19:39 -0400
commitfbde1d9bee1da0a27ead6ce3ae7bc4411b10198d (patch)
treeb8652acded2a8793dcca73f8464cbf70db458a12 /yjit_core.h
parent9d5b3e1d0f3d44a52dffb6ec1f09c361c3b419c7 (diff)
Store block callee_cme in darray
This allows a block version to have dependencies on multiple CMEs.
Diffstat (limited to 'yjit_core.h')
-rw-r--r--yjit_core.h16
1 files changed, 12 insertions, 4 deletions
diff --git a/yjit_core.h b/yjit_core.h
index 6d8f3fcfad..d6f7611a40 100644
--- a/yjit_core.h
+++ b/yjit_core.h
@@ -211,6 +211,15 @@ typedef struct yjit_branch_entry
} branch_t;
+// In case this block is invalidated, these two pieces of info
+// help to remove all pointers to this block in the system.
+typedef struct {
+ VALUE receiver_klass;
+ VALUE callee_cme;
+} cme_dependency_t;
+
+typedef rb_darray(cme_dependency_t) cme_dependency_array_t;
+
typedef rb_darray(branch_t*) branch_array_t;
typedef rb_darray(uint32_t) int32_array_t;
@@ -242,10 +251,9 @@ typedef struct yjit_block_version
// Offsets for GC managed objects in the mainline code block
int32_array_t gc_object_offsets;
- // In case this block is invalidated, these two pieces of info
- // help to remove all pointers to this block in the system.
- VALUE receiver_klass;
- VALUE callee_cme;
+ // CME dependencies of this block, to help to remove all pointers to this
+ // block in the system.
+ cme_dependency_array_t cme_dependencies;
// Code page this block lives on
VALUE code_page;