From 1ca6da8d801eb6111a27e9efc481d76abc48f858 Mon Sep 17 00:00:00 2001 From: yugui Date: Sat, 30 Jan 2010 12:45:14 +0000 Subject: [PATCH] merges r25266 from trunk into ruby_1_9_1. -- * 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/branches/ruby_1_9_1@26476 b2dd03c8-39d4-4d8f-98ff-823fe69b080e --- ChangeLog | 7 +++++++ compile.c | 3 ++- iseq.c | 1 + iseq.h | 1 + version.h | 2 +- 5 files changed, 12 insertions(+), 2 deletions(-) diff --git a/ChangeLog b/ChangeLog index 887afdf907..f94414f6ea 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,10 @@ +Fri Oct 9 01:07:34 2009 Yusuke Endoh + + * 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 * lib/net/telnet.rb (cmd): Pass FailEOF options: patch by Brian diff --git a/compile.c b/compile.c index 650424a70e..d910e22ea8 100644 --- a/compile.c +++ b/compile.c @@ -219,8 +219,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) { \ diff --git a/iseq.c b/iseq.c index 159357cec2..3f9bcdd686 100644 --- a/iseq.c +++ b/iseq.c @@ -191,6 +191,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); diff --git a/iseq.h b/iseq.h index 5ceebbbcf0..1c1138692c 100644 --- a/iseq.h +++ b/iseq.h @@ -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; diff --git a/version.h b/version.h index 6ab9fc6f6b..21297ae9f7 100644 --- a/version.h +++ b/version.h @@ -1,5 +1,5 @@ #define RUBY_VERSION "1.9.1" -#define RUBY_PATCHLEVEL 381 +#define RUBY_PATCHLEVEL 382 #define RUBY_VERSION_MAJOR 1 #define RUBY_VERSION_MINOR 9 #define RUBY_VERSION_TEENY 1