ruby-changes:68751
From: Alan <ko1@a...>
Date: Thu, 21 Oct 2021 08:13:25 +0900 (JST)
Subject: [ruby-changes:68751] 2fcb17d655 (master): Make UJIT.disasm accept Procs
https://git.ruby-lang.org/ruby.git/commit/?id=2fcb17d655 From 2fcb17d655143845083117b199c991fcf66c48f7 Mon Sep 17 00:00:00 2001 From: Alan Wu <XrXr@u...> Date: Thu, 4 Feb 2021 12:29:36 -0500 Subject: Make UJIT.disasm accept Procs --- ujit.rb | 4 +--- ujit_iface.c | 6 ++++++ 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/ujit.rb b/ujit.rb index 629ee6b0af..7c2a6522c9 100644 --- a/ujit.rb +++ b/ujit.rb @@ -1,8 +1,6 @@ https://github.com/ruby/ruby/blob/trunk/ujit.rb#L1 module UJIT def self.disasm(iseq) - if iseq.is_a? Method - iseq = RubyVM::InstructionSequence.of(iseq) - end + iseq = RubyVM::InstructionSequence.of(iseq) blocks = UJIT.blocks_for(iseq) return if blocks.empty? diff --git a/ujit_iface.c b/ujit_iface.c index 2494d6c854..98698d4b79 100644 --- a/ujit_iface.c +++ b/ujit_iface.c @@ -353,6 +353,9 @@ iseqw_ujit_collect_blocks(st_data_t key, st_data_t value, st_data_t argp) https://github.com/ruby/ruby/blob/trunk/ujit_iface.c#L353 static VALUE ujit_blocks_for(VALUE mod, VALUE rb_iseq) { + if (!rb_obj_is_iseq(rb_iseq)) { + return rb_ary_new(); + } const rb_iseq_t *iseq = rb_iseqw_to_iseq(rb_iseq); st_table * vt = (st_table *)version_tbl; struct ujit_block_itr itr; @@ -367,6 +370,9 @@ ujit_blocks_for(VALUE mod, VALUE rb_iseq) https://github.com/ruby/ruby/blob/trunk/ujit_iface.c#L370 static VALUE ujit_install_entry(VALUE mod, VALUE iseq) { + if (!rb_obj_is_iseq(iseq)) { + rb_raise(rb_eTypeError, "not an InstructionSequence"); + } rb_ujit_compile_iseq(rb_iseqw_to_iseq(iseq)); return iseq; } -- cgit v1.2.1 -- ML: ruby-changes@q... Info: http://www.atdot.net/~ko1/quickml/