merges r20460 from trunk into ruby_1_9_1.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_1_9_1@20498 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
merges r20460 from trunk into ruby_1_9_1.
not access internal union directly. [ruby-list:45670]
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_1_9_1@20498 b2dd03c8-39d4-4d8f-98ff-823fe69b080e