summaryrefslogtreecommitdiff
path: root/include/ruby/ruby.h
diff options
context:
space:
mode:
authorYusuke Endoh <mame@ruby-lang.org>2020-05-21 13:16:42 +0900
committerYusuke Endoh <mame@ruby-lang.org>2020-05-21 13:27:26 +0900
commit3eb3f7bb8c3da4d3e71246ad011c580b6ad68d78 (patch)
treed587f4e25b76592de3c2d97b13e6955b2d394e4f /include/ruby/ruby.h
parent6f167da65b799435f94af3c5d39a80968e284f44 (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