diff options
| author | Yusuke Endoh <mame@ruby-lang.org> | 2020-05-21 13:16:42 +0900 |
|---|---|---|
| committer | Yusuke Endoh <mame@ruby-lang.org> | 2020-05-21 13:27:26 +0900 |
| commit | 3eb3f7bb8c3da4d3e71246ad011c580b6ad68d78 (patch) | |
| tree | d587f4e25b76592de3c2d97b13e6955b2d394e4f /include/ruby/ruby.h | |
| parent | 6f167da65b799435f94af3c5d39a80968e284f44 (diff) | |
test/ruby/test_optimization.rb: Proc creation test should count :T_DATA
instead of :TOTAL of ObjectSpace.count_objects.
This test had failed very occasionally:
https://rubyci.org/logs/rubyci.s3.amazonaws.com/centos8/ruby-master/log/20200521T033004Z.fail.html.gz
```
1) Failure:
TestRubyOptimization#test_block_parameter_should_not_create_objects [/home/chkbuild/chkbuild/tmp/build/20200521T033004Z/ruby/test/ruby/test_optimization.rb:713]:
<0> expected but was
<407>.
```
This test of lazy proc creation checks if no object is created during a
method call. However, calling a method itself increases the count of
objects because method cache is now an object (T_MEMO).
The reason why this test rarely fails is because the test was buggy; it
checked the count of :TOTAL, but :TOTAL count changes only when the GC
heap is expanded. Creating one object rarely causes heap expansion.
The test must have checked not only :TOTAL but also the count of :FREE.
Instead, this change more directly checks :T_DATA. Note that a Proc
object is T_DATA.
Diffstat (limited to 'include/ruby/ruby.h')
0 files changed, 0 insertions, 0 deletions
