diff options
author | mame <mame@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2009-10-08 16:11:30 +0000 |
---|---|---|
committer | mame <mame@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2009-10-08 16:11:30 +0000 |
commit | 4b62641c130017e7d871fb3ee0d2c219844a6701 (patch) | |
tree | 79814917c2fba8a0fdc38ca2a6faeec7f773e328 | |
parent | c2c679bc385f8d1067e218a3c96de570daa48117 (diff) |
* compile.c (ADD_TRACE): fire coverage event in ensure clause.
[ruby-dev:39303]
* iseq.h, iseq.c: ditto.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@25266 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
-rw-r--r-- | ChangeLog | 7 | ||||
-rw-r--r-- | compile.c | 3 | ||||
-rw-r--r-- | iseq.c | 1 | ||||
-rw-r--r-- | iseq.h | 1 |
4 files changed, 11 insertions, 1 deletions
@@ -1,3 +1,10 @@ +Fri Oct 9 01:07:34 2009 Yusuke Endoh <[email protected]> + + * compile.c (ADD_TRACE): fire coverage event in ensure clause. + [ruby-dev:39303] + + * iseq.h, iseq.c: ditto. + Fri Oct 9 00:33:29 2009 Marc-Andre Lafortune <[email protected]> * lib/net/telnet.rb (cmd): Pass FailEOF options: patch by Brian @@ -223,8 +223,9 @@ PRINTF_ARGS(void ruby_debug_printf(const char*, ...), 1, 2); #define ADD_TRACE(seq, line, event) \ do { \ if ((event) == RUBY_EVENT_LINE && iseq->coverage && \ - RARRAY_PTR(iseq->coverage)[(line) - 1] == Qnil) { \ + (line) != iseq->compile_data->last_coverable_line) { \ RARRAY_PTR(iseq->coverage)[(line) - 1] = INT2FIX(0); \ + iseq->compile_data->last_coverable_line = (line); \ ADD_INSN1(seq, line, trace, INT2FIX(RUBY_EVENT_COVERAGE)); \ } \ if (iseq->compile_data->option->trace_instruction) { \ @@ -249,6 +249,7 @@ prepare_iseq_build(rb_iseq_t *iseq, iseq->compile_data->storage_head->buff = (char *)(&iseq->compile_data->storage_head->buff + 1); iseq->compile_data->option = option; + iseq->compile_data->last_coverable_line = -1; set_relation(iseq, parent); @@ -82,6 +82,7 @@ struct iseq_compile_data { struct iseq_compile_data_storage *storage_head; struct iseq_compile_data_storage *storage_current; int last_line; + int last_coverable_line; int flip_cnt; int label_no; int node_level; |