From fbde1d9bee1da0a27ead6ce3ae7bc4411b10198d Mon Sep 17 00:00:00 2001 From: John Hawthorn Date: Sat, 7 Aug 2021 22:49:31 -0700 Subject: Store block callee_cme in darray This allows a block version to have dependencies on multiple CMEs. --- yjit_core.c | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) (limited to 'yjit_core.c') diff --git a/yjit_core.c b/yjit_core.c index ef6017b74d..77e5b98190 100644 --- a/yjit_core.c +++ b/yjit_core.c @@ -540,8 +540,11 @@ add_block_version(blockid_t blockid, block_t* block) { // By writing the new block to the iseq, the iseq now // contains new references to Ruby objects. Run write barriers. - RB_OBJ_WRITTEN(iseq, Qundef, block->receiver_klass); - RB_OBJ_WRITTEN(iseq, Qundef, block->callee_cme); + cme_dependency_t *cme_dep; + rb_darray_foreach(block->cme_dependencies, cme_dependency_idx, cme_dep) { + RB_OBJ_WRITTEN(iseq, Qundef, cme_dep->receiver_klass); + RB_OBJ_WRITTEN(iseq, Qundef, cme_dep->callee_cme); + } // Run write barriers for all objects in generated code. uint32_t *offset_element; -- cgit v1.2.3