From a7bd0ec5706caf2767b29ab09a3d40d62bab3fc4 Mon Sep 17 00:00:00 2001 From: wanabe Date: Sat, 8 Aug 2020 08:34:22 +0900 Subject: [PATCH] Warn sp overwriting on compile time --- compile.c | 21 ++++++++++++++++++++- 1 file changed, 20 insertions(+), 1 deletion(-) 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; }