[前][次][番号順一覧][スレッド一覧]

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/

[前][次][番号順一覧][スレッド一覧]