mirror of
https://github.com/ruby/ruby.git
synced 2022-11-09 12:17:21 -05:00
merge revision(s) 61711:
compile.c (iseq_compile_each0): remove irrelevant tracecoverage This change removes tracecoverage instructions on a line that has any NODE but is non-significant, such as, just one literal. This fixes the following failure that occurs only when coverage is enabled: 1) Failure: TestISeq#test_to_a_lines [.../ruby/test/ruby/test_iseq.rb:56]: <[3, 4, 7, 9]> expected but was <[3, 4, 5, 6, 7, 8, 9]>. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_2_5@62481 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
parent
2fdf83ba3e
commit
c1dc8a1354
2 changed files with 15 additions and 3 deletions
12
compile.c
12
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;
|
||||
}
|
||||
|
|
|
@ -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"
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue