summaryrefslogtreecommitdiff
path: root/insns.def
diff options
context:
space:
mode:
authormame <mame@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2017-12-20 04:24:14 (GMT)
committermame <mame@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2017-12-20 04:24:14 (GMT)
commitc08e8886badd47890a54bdc54f1c09de7ad5c8e8 (patch)
tree4e6482561ec1853289c3cdba8c77251728418d17 /insns.def
parente7464561b5151501beb356fc750d5dd1a88014f7 (diff)
compile.c: add a RUBY_EVENT_COVERAGE_LINE event for line coverage
2.5's line coverage measurement was about two times slower than 2.4 because of two reasons; (1) vm_trace uses rb_iseq_event_flags (which takes O(n) currently where n is the length of iseq) to get an event type, and (2) RUBY_EVENT_LINE uses setjmp to call an event hook. This change adds a special event for line coverage, RUBY_EVENT_COVERAGE_LINE, and adds `tracecoverage` instructions where the event occurs in iseq. `tracecoverage` instruction calls an event hook without vm_trace. And, RUBY_EVENT_COVERAGE_LINE is an internal event which does not use setjmp. This change also cancells lineno change due to the deletion of trace instructions [Feature #14104]. So fixes [Bug #14191]. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@61350 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'insns.def')
-rw-r--r--insns.def6
1 files changed, 3 insertions, 3 deletions
diff --git a/insns.def b/insns.def
index 1c20573..120040c 100644
--- a/insns.def
+++ b/insns.def
@@ -778,11 +778,11 @@ checkkeyword
/**
@c setting
- @e trace a branch
- @j 分岐を trace する
+ @e fire a coverage event (currently, this is used for line coverage and branch coverage)
+ @j カバレッジイベントを trace する
*/
DEFINE_INSN
-tracebranch
+tracecoverage
(rb_num_t nf, VALUE data)
()
()