module RubyVM::YJIT
Public Class Methods
                              blocks_for(p1)
                              click to toggle source
                            
                            Get a list of the YJIT blocks associated with ‘rb_iseq`
static VALUE
yjit_blocks_for(VALUE mod, VALUE rb_iseq)
{
    if (CLASS_OF(rb_iseq) != rb_cISeq) {
        return rb_ary_new();
    }
    const rb_iseq_t *iseq = rb_iseqw_to_iseq(rb_iseq);
    VALUE all_versions = rb_ary_new();
    rb_darray_for(iseq->body->yjit_blocks, version_array_idx) {
        rb_yjit_block_array_t versions = rb_darray_get(iseq->body->yjit_blocks, version_array_idx);
        rb_darray_for(versions, block_idx) {
            block_t *block = rb_darray_get(versions, block_idx);
            // FIXME: The object craeted here can outlive the block itself
            VALUE rb_block = TypedData_Wrap_Struct(cYjitBlock, &yjit_block_type, block);
            rb_ary_push(all_versions, rb_block);
        }
    }
    return all_versions;
}