Originally submitted here: https://github.com/ruby/ruby/pull/1456
This exposes Coverage.result in a slightly more writeable way and allows coverage analysis to reset to a baseline in a safe way.
Note, I wasn't able to figure out how to invalidate the cached pointers in the VM bytecode, so this does
rb_ary_replace across all the arrays instead. I'd love to see this improved so it were cleaner.
This is ongoing work to improve the current state of code coverage analysis. I'll be giving a talk on this at rubyconf 2016.
I should also add, this applies cleanly to (at least) 2.3 as well.