mirror of
https://github.com/ruby/ruby.git
synced 2022-11-09 12:17:21 -05:00
Remove unneeded trace instruction for coverage
When no instruction is emitted in `iseq_compile_each0` (i.e., when the line has no significant code), trace instruction for `RUBY_EVENT_LINE` has been optimized out. But trace for `RUBY_EVENT_COVERAGE` has not been removed. Now, it is also removed. `TestISeq#test_to_a_lines` has failed a long time under coverage measurement (`make test-all COVERAGE=true`). This change makes it pass. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@59769 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
parent
af32570535
commit
1a643bac88
1 changed files with 5 additions and 0 deletions
|
@ -6593,6 +6593,11 @@ iseq_compile_each0(rb_iseq_t *iseq, LINK_ANCHOR *const ret, NODE *node, int popp
|
|||
ret->last == saved_last_element &&
|
||||
((INSN *)saved_last_element)->insn_id == BIN(trace)) {
|
||||
POP_ELEMENT(ret);
|
||||
/* remove trace(coverage) */
|
||||
if (((INSN *)ret->last)->insn_id == BIN(trace)) {
|
||||
POP_ELEMENT(ret);
|
||||
RARRAY_ASET(ISEQ_LINE_COVERAGE(iseq), line - 1, Qnil);
|
||||
}
|
||||
}
|
||||
|
||||
debug_node_end();
|
||||
|
|
Loading…
Add table
Reference in a new issue