path: root/iseq.c
diff options
authormame <mame@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2018-08-22 10:38:56 (GMT)
committermame <mame@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2018-08-22 10:38:56 (GMT)
commitd65f7458bc8b4fa4404c41713cfa1ece5260fc8a (patch)
treeedb94c2a2caf7c5727b9b2f87a94db94d8669321 /iseq.c
parent52bd0d190042f739a80e76f43e7ef3cbc8ae0969 (diff)
parse.y: remove coverage-related code fragments
The code fragments that initializes coverage data were scattered into both parse.y and compile.c. parse.y allocated a coverage data, and compile.c initialize the data. To remove this cross-cutting concern, this change moves the allocation from "coverage" function of parse.y to "rb_iseq_new_top" of iseq.c. For the sake, parse.y just counts the line number of the original source code, and the number is passed via rb_ast_body_t. git-svn-id: svn+ssh:// b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'iseq.c')
1 files changed, 8 insertions, 0 deletions
diff --git a/iseq.c b/iseq.c
index 935c69d..04b55bb 100644
--- a/iseq.c
+++ b/iseq.c
@@ -647,6 +647,14 @@ rb_iseq_new(const rb_ast_body_t *ast, VALUE name, VALUE path, VALUE realpath,
rb_iseq_t *
rb_iseq_new_top(const rb_ast_body_t *ast, VALUE name, VALUE path, VALUE realpath, const rb_iseq_t *parent)
+ VALUE coverages = rb_get_coverages();
+ if (RTEST(coverages)) {
+ if (ast->line_count >= 0) {
+ VALUE coverage = rb_default_coverage(ast->line_count);
+ rb_hash_aset(coverages, path, coverage);
+ }
+ }
return rb_iseq_new_with_opt(ast, name, path, realpath, INT2FIX(0), parent, ISEQ_TYPE_TOP,