summaryrefslogtreecommitdiff
path: root/compile.c
diff options
context:
space:
mode:
authorwanabe <s.wanabe@gmail.com>2020-08-08 08:34:22 +0900
committerwanabe <s.wanabe@gmail.com>2020-08-16 08:43:29 +0900
commita7bd0ec5706caf2767b29ab09a3d40d62bab3fc4 (patch)
tree72d7e39ca03de4187570e047e019895d011739c9 /compile.c
parentac399c2c7a51b044e23c6dc8f7f9d55ee271d9a5 (diff)
Warn sp overwriting on compile time
Notes
Notes: Merged: https://github.com/ruby/ruby/pull/3401
Diffstat (limited to 'compile.c')
-rw-r--r--compile.c21
1 files changed, 20 insertions, 1 deletions
diff --git a/compile.c b/compile.c
index 4a4c276c4f..c7a4a8c324 100644
--- a/compile.c
+++ b/compile.c
@@ -2058,7 +2058,11 @@ fix_sp_depth(rb_iseq_t *iseq, LINK_ANCHOR *const anchor)
}
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)
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)
{
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)
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;
}