diff options
author | ko1 <ko1@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2013-08-12 06:19:15 +0000 |
---|---|---|
committer | ko1 <ko1@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2013-08-12 06:19:15 +0000 |
commit | 9af743fe0e8c7aa7a25a6805a64d499aab3032af (patch) | |
tree | 0269c09d852781b6f518a912ca9d82c4e9605411 /test | |
parent | 7f0a26e2718246c0c171df648e020fc1df873d0b (diff) | |
download | ruby-9af743fe0e8c7aa7a25a6805a64d499aab3032af.tar.gz |
* class.c (rb_prepend_module): make T_ICLASS object shady because
this T_ICLASS object seems to share method table with other class
objects. It was causes WB miss.
TODO: need to know the data structure.
* test/ruby/test_module.rb: add a test for WB miss.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@42534 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'test')
-rw-r--r-- | test/ruby/test_module.rb | 16 |
1 files changed, 16 insertions, 0 deletions
diff --git a/test/ruby/test_module.rb b/test/ruby/test_module.rb index 361a6fe993..b0a33c8609 100644 --- a/test/ruby/test_module.rb +++ b/test/ruby/test_module.rb @@ -1760,4 +1760,20 @@ class TestModule < Test::Unit::TestCase self.#{method} INPUT end + + def test_prepend_gc + assert_separately [], %{ + module Foo + end + class Object + prepend Foo + end + GC.start # make created T_ICLASS old (or remembered shady) + class Object # add methods into T_ICLASS (need WB if it is old) + def foo; end + attr_reader :bar + end + 1_000_000.times{''} # cause GC + } + end end |