vm.c: initialize defined_module_hash early

* vm.c (Init_BareVM): initialize defined_module_hash here,
  Init_top_self() is too late to register core classes/modules.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@43273 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
nobu 2013-10-13 11:59:27 +00:00
Родитель a7d04e536b
Коммит 15798b606e
3 изменённых файлов: 14 добавлений и 1 удалений

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

@ -1,5 +1,8 @@
2013-10-13 Nobuyoshi Nakada <nobu@ruby-lang.org>
* vm.c (Init_BareVM): initialize defined_module_hash here,
Init_top_self() is too late to register core classes/modules.
* compile.c (compile_array_): no hash to merge if it is empty.
* vm.c (m_core_hash_merge_kwd): just check keys if only one argument

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

@ -11,6 +11,16 @@ assert_equal 'C', %q( class C; end
C.new.class.name )
assert_equal 'Class', %q( class C; end
C.new.class.class )
assert_equal 'true', %q( Object.__send__(:remove_const, :TrueClass)
GC.start
true.inspect)
assert_equal 'false', %q( Object.__send__(:remove_const, :FalseClass)
GC.start
false.inspect)
assert_equal 'nil', %q( Object.__send__(:remove_const, :NilClass)
GC.start
nil.inspect)
# inherited class
assert_equal 'true', %q( class A; end

2
vm.c
Просмотреть файл

@ -2617,6 +2617,7 @@ Init_BareVM(void)
th->vm = vm;
th_init(th, 0);
ruby_thread_init_stack(th);
vm->defined_module_hash = rb_hash_new();
}
/* top self */
@ -2644,7 +2645,6 @@ Init_top_self(void)
/* initialize mark object array, hash */
vm->mark_object_ary = rb_ary_tmp_new(1);
vm->defined_module_hash = rb_hash_new();
}
VALUE *