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

ruby-changes:62579

From: wanabe <ko1@a...>
Date: Sun, 16 Aug 2020 08:43:55 +0900 (JST)
Subject: [ruby-changes:62579] a7bd0ec570 (master): Warn sp overwriting on compile time

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

From a7bd0ec5706caf2767b29ab09a3d40d62bab3fc4 Mon Sep 17 00:00:00 2001
From: wanabe <s.wanabe@g...>
Date: Sat, 8 Aug 2020 08:34:22 +0900
Subject: Warn sp overwriting on compile time


diff --git a/compile.c b/compile.c
index 4a4c276..c7a4a8c 100644
--- a/compile.c
+++ b/compile.c
@@ -2058,7 +2058,11 @@ fix_sp_depth(rb_iseq_t *iseq, LINK_ANCHOR *const anchor) https://github.com/ruby/ruby/blob/trunk/compile.c#L2058
 			}
 			if (lobj->sp == -1) {
 			    lobj->sp = sp;
-			}
+                        } else if (lobj->sp != sp) {
+                            debugs("%s:%d: sp inconsistency found but ignored (" LABEL_FORMAT " sp: %d, calculated sp: %d)\n",
+                                   RSTRING_PTR(rb_iseq_path(iseq)), line,
+                                   lobj->label_no, lobj->sp, sp);
+                        }
 		    }
 		}
 		break;
@@ -2070,6 +2074,11 @@ fix_sp_depth(rb_iseq_t *iseq, LINK_ANCHOR *const anchor) https://github.com/ruby/ruby/blob/trunk/compile.c#L2074
 		    lobj->sp = sp;
 		}
 		else {
+                    if (lobj->sp != sp) {
+                        debugs("%s:%d: sp inconsistency found but ignored (" LABEL_FORMAT " sp: %d, calculated sp: %d)\n",
+                                RSTRING_PTR(rb_iseq_path(iseq)), line,
+                                lobj->label_no, lobj->sp, sp);
+                    }
 		    sp = lobj->sp;
 		}
 		break;
@@ -2187,6 +2196,11 @@ iseq_set_sequence(rb_iseq_t *iseq, LINK_ANCHOR *const anchor) https://github.com/ruby/ruby/blob/trunk/compile.c#L2196
 	    {
 		LABEL *lobj = (LABEL *)list;
 		lobj->position = code_index;
+                if (lobj->sp != sp) {
+                    debugs("%s: sp inconsistency found but ignored (" LABEL_FORMAT " sp: %d, calculated sp: %d)\n",
+                           RSTRING_PTR(rb_iseq_path(iseq)),
+                           lobj->label_no, lobj->sp, sp);
+                }
 		sp = lobj->sp;
 		break;
 	    }
@@ -2337,6 +2351,11 @@ iseq_set_sequence(rb_iseq_t *iseq, LINK_ANCHOR *const anchor) https://github.com/ruby/ruby/blob/trunk/compile.c#L2351
 	  case ISEQ_ELEMENT_LABEL:
 	    {
 		LABEL *lobj = (LABEL *)list;
+                if (lobj->sp != sp) {
+                    debugs("%s: sp inconsistency found but ignored (" LABEL_FORMAT " sp: %d, calculated sp: %d)\n",
+                           RSTRING_PTR(rb_iseq_path(iseq)),
+                           lobj->label_no, lobj->sp, sp);
+                }
 		sp = lobj->sp;
 		break;
 	    }
-- 
cgit v0.10.2


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

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