diff options
| author | Maxime Chevalier-Boisvert <maxime.chevalierboisvert@shopify.com> | 2021-03-04 12:05:18 -0500 |
|---|---|---|
| committer | Alan Wu <XrXr@users.noreply.github.com> | 2021-10-20 18:19:30 -0400 |
| commit | abc016ad2c85a15ad6a512be57f47d893bc81e27 (patch) | |
| tree | 81e5d7c6d0417204a71cb78cba1da8fdfd528682 /ujit_iface.c | |
| parent | 5c497dfd7f86c88c9730dda397fecb3aa943e84d (diff) | |
WIP refactor block lists to use darray
Diffstat (limited to 'ujit_iface.c')
| -rw-r--r-- | ujit_iface.c | 15 |
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); |
