diff options
author | mame <mame@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2008-07-08 13:57:06 +0000 |
---|---|---|
committer | mame <mame@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2008-07-08 13:57:06 +0000 |
commit | caf3933babe1be5bba95b271b567caec92855cdb (patch) | |
tree | 001d1e98fd86421447657d3fd4b2c461b8ffa4c4 /parse.y | |
parent | 7e16f9e7777781a4969537b5d9f659b1356b2786 (diff) | |
download | ruby-caf3933babe1be5bba95b271b567caec92855cdb.tar.gz |
* thread.c (rb_enable_coverages): hide coverage array by setting 0 to
klass during measurement.
* parse.y (coverage, yycompile0): ditto.
* iseq.c (prepare_iseq_build): use rb_hash_lookup instead of
rb_hash_aref.
* thread.c (rb_coverage_result): restore klass of coverage array and
return it.
* theaad.c (update_coverage): chcek whether its klass is 0.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@17959 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'parse.y')
-rw-r--r-- | parse.y | 6 |
1 files changed, 2 insertions, 4 deletions
@@ -4674,10 +4674,11 @@ coverage(const char *f, int n) { extern VALUE rb_vm_get_coverages(void); VALUE coverages = rb_vm_get_coverages(); - if (RTEST(coverages)) { + if (RTEST(coverages) && RBASIC(coverages)->klass == 0) { VALUE fname = rb_str_new2(f); VALUE lines = rb_ary_new2(n); int i; + RBASIC(lines)->klass = 0; for (i = 0; i < n; i++) RARRAY_PTR(lines)[i] = Qnil; RARRAY(lines)->len = n; rb_hash_aset(coverages, fname, lines); @@ -4718,9 +4719,6 @@ yycompile0(VALUE arg, int tracing) parser_prepare(parser); n = yyparse((void*)parser); - if (ruby_coverage) { - rb_ary_freeze(ruby_coverage); - } ruby_debug_lines = 0; ruby_coverage = 0; compile_for_eval = 0; |