diff options
author | Yusuke Endoh <[email protected]> | 2021-10-25 20:00:51 +0900 |
---|---|---|
committer | GitHub <[email protected]> | 2021-10-25 20:00:51 +0900 |
commit | 86e3d77abb8a033650937710d1ab009e98647494 (patch) | |
tree | 928732b8a0bb6f9067ceb659f1d72bc32ddcb55b /thread.c | |
parent | 54379e3d7d297cc8b3ea61ad98c6cc337dc04882 (diff) |
Make Coverage suspendable (#4856)
* Make Coverage suspendable
Add `Coverage.suspend`, `Coverage.resume` and some methods.
[Feature #18176] [ruby-core:105321]
Notes
Notes:
Merged-By: mame <[email protected]>
Diffstat (limited to 'thread.c')
-rw-r--r-- | thread.c | 23 |
1 files changed, 18 insertions, 5 deletions
@@ -5746,7 +5746,15 @@ void rb_set_coverages(VALUE coverages, int mode, VALUE me2counter) { GET_VM()->coverages = coverages; + GET_VM()->me2counter = me2counter; GET_VM()->coverage_mode = mode; +} + +void +rb_resume_coverages() +{ + int mode = GET_VM()->coverage_mode; + VALUE me2counter = GET_VM()->me2counter; rb_add_event_hook2((rb_event_hook_func_t) update_line_coverage, RUBY_EVENT_COVERAGE_LINE, Qnil, RUBY_EVENT_HOOK_FLAG_SAFE | RUBY_EVENT_HOOK_FLAG_RAW_ARG); if (mode & COVERAGE_TARGET_BRANCHES) { rb_add_event_hook2((rb_event_hook_func_t) update_branch_coverage, RUBY_EVENT_COVERAGE_BRANCH, Qnil, RUBY_EVENT_HOOK_FLAG_SAFE | RUBY_EVENT_HOOK_FLAG_RAW_ARG); @@ -5756,13 +5764,9 @@ rb_set_coverages(VALUE coverages, int mode, VALUE me2counter) } } -/* Make coverage arrays empty so old covered files are no longer tracked. */ void -rb_reset_coverages(void) +rb_suspend_coverages() { - rb_clear_coverages(); - rb_iseq_remove_coverage_all(); - GET_VM()->coverages = Qfalse; rb_remove_event_hook((rb_event_hook_func_t) update_line_coverage); if (GET_VM()->coverage_mode & COVERAGE_TARGET_BRANCHES) { rb_remove_event_hook((rb_event_hook_func_t) update_branch_coverage); @@ -5772,6 +5776,15 @@ rb_reset_coverages(void) } } +/* Make coverage arrays empty so old covered files are no longer tracked. */ +void +rb_reset_coverages(void) +{ + rb_clear_coverages(); + rb_iseq_remove_coverage_all(); + GET_VM()->coverages = Qfalse; +} + VALUE rb_default_coverage(int n) { |