summaryrefslogtreecommitdiff
path: root/ujit_iface.c
diff options
context:
space:
mode:
authorMaxime Chevalier-Boisvert <maxime.chevalierboisvert@shopify.com>2021-03-04 12:05:18 -0500
committerAlan Wu <XrXr@users.noreply.github.com>2021-10-20 18:19:30 -0400
commitabc016ad2c85a15ad6a512be57f47d893bc81e27 (patch)
tree81e5d7c6d0417204a71cb78cba1da8fdfd528682 /ujit_iface.c
parent5c497dfd7f86c88c9730dda397fecb3aa943e84d (diff)
WIP refactor block lists to use darray
Diffstat (limited to 'ujit_iface.c')
-rw-r--r--ujit_iface.c15
1 files changed, 9 insertions, 6 deletions
diff --git a/ujit_iface.c b/ujit_iface.c
index 2030501637..0d4e6c0fc9 100644
--- a/ujit_iface.c
+++ b/ujit_iface.c
@@ -379,12 +379,13 @@ ujit_blocks_for(VALUE mod, VALUE rb_iseq)
}
const rb_iseq_t *iseq = rb_iseqw_to_iseq(rb_iseq);
- block_t **element;
- VALUE all_versions = rb_ary_new();
- rb_darray_foreach(iseq->body->ujit_blocks, idx, element) {
- for (block_t *version = *element; version; version = version->next) {
- VALUE rb_block = TypedData_Wrap_Struct(cUjitBlock, &ujit_block_type, version);
+ VALUE all_versions = rb_ary_new();
+ rb_ujit_block_array_t *versions;
+ rb_darray_foreach(iseq->body->ujit_blocks, idx, versions) {
+ block_t **block;
+ rb_darray_foreach(*versions, idx, block) {
+ VALUE rb_block = TypedData_Wrap_Struct(cUjitBlock, &ujit_block_type, *block);
rb_ary_push(all_versions, rb_block);
}
}
@@ -679,9 +680,11 @@ rb_ujit_iseq_mark(const struct rb_iseq_constant_body *body)
{
block_t **element;
rb_darray_foreach(body->ujit_blocks, idx, element) {
+
+
+
for (block_t *block = *element; block; block = block->next) {
rb_gc_mark_movable((VALUE)block->blockid.iseq);
-
rb_gc_mark_movable(block->dependencies.cc);
rb_gc_mark_movable(block->dependencies.cme);
rb_gc_mark_movable(block->dependencies.iseq);