* vm_method.c (rb_method_entry_make): fix WB miss.

Note that rb_method_entry_t::klass is not constified.
  We may  constify this field.
* test/ruby/test_alias.rb: add a test.



git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@44234 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
ko1 2013-12-16 07:46:48 +00:00
Родитель c3405de433
Коммит d8eb7f3c0d
3 изменённых файлов: 22 добавлений и 1 удалений

Просмотреть файл

@ -1,3 +1,11 @@
Mon Dec 16 16:40:35 2013 Koichi Sasada <ko1@atdot.net>
* vm_method.c (rb_method_entry_make): fix WB miss.
Note that rb_method_entry_t::klass is not constified.
We may constify this field.
* test/ruby/test_alias.rb: add a test.
Mon Dec 16 14:14:22 2013 Koichi Sasada <ko1@atdot.net>
* gc.c: use gc_verify_internal_consistency() instead of

Просмотреть файл

@ -1,4 +1,5 @@
require 'test/unit'
require_relative 'envutils'
class TestAlias < Test::Unit::TestCase
class Alias0
@ -119,4 +120,16 @@ class TestAlias < Test::Unit::TestCase
def test_super_in_aliased_module_method # fails in 1.8
assert_equal([:Base, :M], SuperInAliasedModuleMethod::Derived.new.bar)
end
def test_alias
assert_normal_exit %q{
require 'stringio'
GC.verify_internal_consistency
GC.start
class StringIO
alias_method :read_nonblock, :sysread
end
GC.verify_internal_consistency
}
end
end

Просмотреть файл

@ -322,7 +322,7 @@ rb_method_entry_make(VALUE klass, ID mid, rb_method_type_t type,
me->flag = NOEX_WITH_SAFE(noex);
me->mark = 0;
me->called_id = mid;
me->klass = defined_class;
OBJ_WRITE(klass, &me->klass, defined_class);
me->def = def;
if (def) {