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

ruby-changes:66508

From: Yusuke <ko1@a...>
Date: Fri, 18 Jun 2021 03:35:55 +0900 (JST)
Subject: [ruby-changes:66508] 0a36cab1b5 (master): Enable USE_ISEQ_NODE_ID by default

https://git.ruby-lang.org/ruby.git/commit/?id=0a36cab1b5

From 0a36cab1b53646062026c3181117fad73802baf4 Mon Sep 17 00:00:00 2001
From: Yusuke Endoh <mame@r...>
Date: Tue, 8 Jun 2021 17:57:44 +0900
Subject: Enable USE_ISEQ_NODE_ID by default

... which is formally called EXPERIMENTAL_ISEQ_NODE_ID.

See also ff69ef27b06eed1ba750e7d9cab8322f351ed245.

https://bugs.ruby-lang.org/issues/17930
---
 ast.c          |  4 ++--
 compile.c      | 10 +++++-----
 iseq.c         |  8 ++++----
 iseq.h         |  8 +++++---
 vm_backtrace.c | 10 +++++-----
 5 files changed, 21 insertions(+), 19 deletions(-)

diff --git a/ast.c b/ast.c
index 04ba3c9..3945a32 100644
--- a/ast.c
+++ b/ast.c
@@ -254,7 +254,7 @@ ast_node_type(rb_execution_context_t *ec, VALUE self) https://github.com/ruby/ruby/blob/trunk/ast.c#L254
     return rb_sym_intern_ascii_cstr(node_type_to_str(data->node));
 }
 
-#ifdef EXPERIMENTAL_ISEQ_NODE_ID
+#ifdef DEBUG_ISEQ_NODE_ID
 static VALUE
 ast_node_node_id(VALUE self)
 {
@@ -725,7 +725,7 @@ Init_ast(void) https://github.com/ruby/ruby/blob/trunk/ast.c#L725
     rb_mAST = rb_define_module_under(rb_cRubyVM, "AbstractSyntaxTree");
     rb_cNode = rb_define_class_under(rb_mAST, "Node", rb_cObject);
     rb_undef_alloc_func(rb_cNode);
-#ifdef EXPERIMENTAL_ISEQ_NODE_ID
+#ifdef DEBUG_ISEQ_NODE_ID
     rb_define_method(rb_cNode, "node_id", ast_node_node_id, 0);
 #endif
 }
diff --git a/compile.c b/compile.c
index a653b2d..c3aa8f3 100644
--- a/compile.c
+++ b/compile.c
@@ -2216,12 +2216,12 @@ add_insn_info(struct iseq_insn_info_entry *insns_info, unsigned int *positions, https://github.com/ruby/ruby/blob/trunk/compile.c#L2216
 {
     if (insns_info_index == 0 ||
         insns_info[insns_info_index-1].line_no != iobj->insn_info.line_no ||
-#ifdef EXPERIMENTAL_ISEQ_NODE_ID
+#ifdef USE_ISEQ_NODE_ID
         insns_info[insns_info_index-1].node_id != iobj->insn_info.node_id ||
 #endif
         insns_info[insns_info_index-1].events  != iobj->insn_info.events) {
         insns_info[insns_info_index].line_no    = iobj->insn_info.line_no;
-#ifdef EXPERIMENTAL_ISEQ_NODE_ID
+#ifdef USE_ISEQ_NODE_ID
         insns_info[insns_info_index].node_id    = iobj->insn_info.node_id;
 #endif
         insns_info[insns_info_index].events     = iobj->insn_info.events;
@@ -10059,7 +10059,7 @@ rb_iseq_build_from_ary(rb_iseq_t *iseq, VALUE misc, VALUE locals, VALUE params, https://github.com/ruby/ruby/blob/trunk/compile.c#L10059
     }
 
     VALUE node_ids = Qfalse;
-#ifdef EXPERIMENTAL_ISEQ_NODE_ID
+#ifdef USE_ISEQ_NODE_ID
     node_ids = rb_hash_aref(misc, ID2SYM(rb_intern("node_ids")));
     if (!RB_TYPE_P(node_ids, T_ARRAY)) {
 	rb_raise(rb_eTypeError, "node_ids is not an array");
@@ -10940,7 +10940,7 @@ ibf_dump_insns_info_body(struct ibf_dump *dump, const rb_iseq_t *iseq) https://github.com/ruby/ruby/blob/trunk/compile.c#L10940
     unsigned int i;
     for (i = 0; i < iseq->body->insns_info.size; i++) {
         ibf_dump_write_small_value(dump, entries[i].line_no);
-#ifdef EXPERIMENTAL_ISEQ_NODE_ID
+#ifdef USE_ISEQ_NODE_ID
         ibf_dump_write_small_value(dump, entries[i].node_id);
 #endif
         ibf_dump_write_small_value(dump, entries[i].events);
@@ -10958,7 +10958,7 @@ ibf_load_insns_info_body(const struct ibf_load *load, ibf_offset_t body_offset, https://github.com/ruby/ruby/blob/trunk/compile.c#L10958
     unsigned int i;
     for (i = 0; i < size; i++) {
         entries[i].line_no = (int)ibf_load_small_value(load, &reading_pos);
-#ifdef EXPERIMENTAL_ISEQ_NODE_ID
+#ifdef USE_ISEQ_NODE_ID
         entries[i].node_id = (int)ibf_load_small_value(load, &reading_pos);
 #endif
         entries[i].events = (rb_event_flag_t)ibf_load_small_value(load, &reading_pos);
diff --git a/iseq.c b/iseq.c
index 26c59b8..7a3d946 100644
--- a/iseq.c
+++ b/iseq.c
@@ -1840,7 +1840,7 @@ rb_iseq_line_no(const rb_iseq_t *iseq, size_t pos) https://github.com/ruby/ruby/blob/trunk/iseq.c#L1840
     }
 }
 
-#ifdef EXPERIMENTAL_ISEQ_NODE_ID
+#ifdef USE_ISEQ_NODE_ID
 int
 rb_iseq_node_id(const rb_iseq_t *iseq, size_t pos)
 {
@@ -2943,7 +2943,7 @@ iseq_data_to_ary(const rb_iseq_t *iseq) https://github.com/ruby/ruby/blob/trunk/iseq.c#L2943
     /* make body with labels and insert line number */
     body = rb_ary_new();
     prev_insn_info = NULL;
-#ifdef EXPERIMENTAL_ISEQ_NODE_ID
+#ifdef USE_ISEQ_NODE_ID
     VALUE node_ids = rb_ary_new();
 #endif
 
@@ -2957,7 +2957,7 @@ iseq_data_to_ary(const rb_iseq_t *iseq) https://github.com/ruby/ruby/blob/trunk/iseq.c#L2957
 	}
 
 	info = get_insn_info(iseq, pos);
-#ifdef EXPERIMENTAL_ISEQ_NODE_ID
+#ifdef USE_ISEQ_NODE_ID
         rb_ary_push(node_ids, INT2FIX(info->node_id));
 #endif
 
@@ -2997,7 +2997,7 @@ iseq_data_to_ary(const rb_iseq_t *iseq) https://github.com/ruby/ruby/blob/trunk/iseq.c#L2997
 		INT2FIX(iseq_body->location.code_location.beg_pos.column),
 		INT2FIX(iseq_body->location.code_location.end_pos.lineno),
 		INT2FIX(iseq_body->location.code_location.end_pos.column)));
-#ifdef EXPERIMENTAL_ISEQ_NODE_ID
+#ifdef USE_ISEQ_NODE_ID
     rb_hash_aset(misc, ID2SYM(rb_intern("node_ids")), node_ids);
 #endif
 
diff --git a/iseq.h b/iseq.h
index d3130a4..87e4982 100644
--- a/iseq.h
+++ b/iseq.h
@@ -17,7 +17,9 @@ RUBY_EXTERN const int ruby_api_version[]; https://github.com/ruby/ruby/blob/trunk/iseq.h#L17
 #define ISEQ_MAJOR_VERSION ((unsigned int)ruby_api_version[0])
 #define ISEQ_MINOR_VERSION ((unsigned int)ruby_api_version[1])
 
-//#define EXPERIMENTAL_ISEQ_NODE_ID
+#ifndef USE_ISEQ_NODE_ID
+#define USE_ISEQ_NODE_ID 1
+#endif
 
 #ifndef rb_iseq_t
 typedef struct rb_iseq_struct rb_iseq_t;
@@ -178,7 +180,7 @@ void rb_iseq_mark_insn_storage(struct iseq_compile_data_storage *arena); https://github.com/ruby/ruby/blob/trunk/iseq.h#L180
 VALUE rb_iseq_load(VALUE data, VALUE parent, VALUE opt);
 VALUE rb_iseq_parameters(const rb_iseq_t *iseq, int is_proc);
 unsigned int rb_iseq_line_no(const rb_iseq_t *iseq, size_t pos);
-#ifdef EXPERIMENTAL_ISEQ_NODE_ID
+#ifdef USE_ISEQ_NODE_ID
 int rb_iseq_node_id(const rb_iseq_t *iseq, size_t pos);
 #endif
 void rb_iseq_trace_set(const rb_iseq_t *iseq, rb_event_flag_t turnon_events);
@@ -218,7 +220,7 @@ struct rb_compile_option_struct { https://github.com/ruby/ruby/blob/trunk/iseq.h#L220
 
 struct iseq_insn_info_entry {
     int line_no;
-#ifdef EXPERIMENTAL_ISEQ_NODE_ID
+#ifdef USE_ISEQ_NODE_ID
     int node_id;
 #endif
     rb_event_flag_t events;
diff --git a/vm_backtrace.c b/vm_backtrace.c
index d0fdda3..670f73d 100644
--- a/vm_backtrace.c
+++ b/vm_backtrace.c
@@ -47,7 +47,7 @@ calc_pos(const rb_iseq_t *iseq, const VALUE *pc, int *lineno, int *node_id) https://github.com/ruby/ruby/blob/trunk/vm_backtrace.c#L47
             return 0;
         }
         if (lineno) *lineno = FIX2INT(iseq->body->location.first_lineno);
-#ifdef EXPERIMENTAL_ISEQ_NODE_ID
+#ifdef USE_ISEQ_NODE_ID
         if (node_id) *node_id = -1;
 #endif
         return 1;
@@ -70,7 +70,7 @@ calc_pos(const rb_iseq_t *iseq, const VALUE *pc, int *lineno, int *node_id) https://github.com/ruby/ruby/blob/trunk/vm_backtrace.c#L70
         }
 #endif
         if (lineno) *lineno = rb_iseq_line_no(iseq, pos);
-#ifdef EXPERIMENTAL_ISEQ_NODE_ID
+#ifdef USE_ISEQ_NODE_ID
         if (node_id) *node_id = rb_iseq_node_id(iseq, pos);
 #endif
         return 1;
@@ -85,7 +85,7 @@ calc_lineno(const rb_iseq_t *iseq, const VALUE *pc) https://github.com/ruby/ruby/blob/trunk/vm_backtrace.c#L85
     return 0;
 }
 
-#ifdef EXPERIMENTAL_ISEQ_NODE_ID
+#ifdef USE_ISEQ_NODE_ID
 inline static int
 calc_node_id(const rb_iseq_t *iseq, const VALUE *pc)
 {
@@ -319,7 +319,7 @@ location_path_m(VALUE self) https://github.com/ruby/ruby/blob/trunk/vm_backtrace.c#L319
     return location_path(location_ptr(self));
 }
 
-#ifdef EXPERIMENTAL_ISEQ_NODE_ID
+#ifdef USE_ISEQ_NODE_ID
 static int
 location_node_id(rb_backtrace_location_t *loc)
 {
@@ -341,7 +341,7 @@ location_node_id(rb_backtrace_location_t *loc) https://github.com/ruby/ruby/blob/trunk/vm_backtrace.c#L341
 void
 rb_frame_info_get(VALUE obj, VALUE *path, int *node_id)
 {
-#ifdef EXPERIMENTAL_ISEQ_NODE_ID
+#ifdef USE_ISEQ_NODE_ID
     rb_backtrace_location_t *loc = location_ptr(obj);
     *path = location_path(loc);
     *node_id = location_node_id(loc);
-- 
cgit v1.1


--
ML: ruby-changes@q...
Info: http://www.atdot.net/~ko1/quickml/

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