* iseq.c (prepare_iseq_build): set coverage at once, not
  repeatedly resetting.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@54076 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
nobu 2016-03-10 05:32:49 +00:00
Родитель c3900ff4a8
Коммит 9871d88ee4
1 изменённых файлов: 5 добавлений и 4 удалений

9
iseq.c
Просмотреть файл

@ -267,6 +267,8 @@ prepare_iseq_build(rb_iseq_t *iseq,
const rb_iseq_t *parent, enum iseq_type type,
const rb_compile_option_t *option)
{
VALUE coverage = Qfalse;
iseq->body->type = type;
set_relation(iseq, parent);
@ -296,15 +298,14 @@ prepare_iseq_build(rb_iseq_t *iseq,
ISEQ_COMPILE_DATA(iseq)->option = option;
ISEQ_COMPILE_DATA(iseq)->last_coverable_line = -1;
ISEQ_COVERAGE_SET(iseq, Qfalse);
if (!GET_THREAD()->parse_in_eval) {
VALUE coverages = rb_get_coverages();
if (RTEST(coverages)) {
ISEQ_COVERAGE_SET(iseq, rb_hash_lookup(coverages, path));
if (NIL_P(ISEQ_COVERAGE(iseq))) ISEQ_COVERAGE_SET(iseq, Qfalse);
coverage = rb_hash_lookup(coverages, path);
if (NIL_P(coverage)) coverage = Qfalse;
}
}
ISEQ_COVERAGE_SET(iseq, coverage);
return Qtrue;
}