diff --git a/compile.c b/compile.c index fb385f9ee6..26bfa5e396 100644 --- a/compile.c +++ b/compile.c @@ -7093,6 +7093,18 @@ iseq_compile_each0(rb_iseq_t *iseq, LINK_ANCHOR *const ret, const NODE *node, in return COMPILE_NG; } + /* remove tracecoverage instruction if there is no relevant instruction */ + if (IS_TRACE(ret->last) && ((TRACE*) ret->last)->event == RUBY_EVENT_LINE) { + LINK_ELEMENT *insn = ret->last->prev; + if (IS_INSN(insn) && + IS_INSN_ID(insn, tracecoverage) && + FIX2LONG(OPERAND_AT(insn, 0)) == RUBY_EVENT_COVERAGE_LINE + ) { + ELEM_REMOVE(insn); /* remove tracecovearge */ + RARRAY_ASET(ISEQ_LINE_COVERAGE(iseq), line - 1, Qnil); + } + } + debug_node_end(); return COMPILE_OK; } diff --git a/version.h b/version.h index 34521b6a54..1ac49e41c9 100644 --- a/version.h +++ b/version.h @@ -1,10 +1,10 @@ #define RUBY_VERSION "2.5.0" -#define RUBY_RELEASE_DATE "2018-02-18" -#define RUBY_PATCHLEVEL 21 +#define RUBY_RELEASE_DATE "2018-02-19" +#define RUBY_PATCHLEVEL 22 #define RUBY_RELEASE_YEAR 2018 #define RUBY_RELEASE_MONTH 2 -#define RUBY_RELEASE_DAY 18 +#define RUBY_RELEASE_DAY 19 #include "ruby/version.h"