mirror of
https://github.com/ruby/ruby.git
synced 2022-11-09 12:17:21 -05:00
* gc.c (gc_mark_roots): should mark the VM object itself to mark
singleton class of the VM object. Before this patch, we only set mark bit for the VM object and invoke mark function separately. [Bug #12583] * test/ruby/test_gc.rb: add a test. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@55663 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
parent
d42e547ab1
commit
d7eb7bbcce
3 changed files with 18 additions and 1 deletions
10
ChangeLog
10
ChangeLog
|
@ -1,3 +1,13 @@
|
|||
Wed Jul 13 16:08:08 2016 Koichi Sasada <ko1@atdot.net>
|
||||
|
||||
* gc.c (gc_mark_roots): should mark the VM object itself to mark
|
||||
singleton class of the VM object.
|
||||
Before this patch, we only set mark bit for the VM object and
|
||||
invoke mark function separately.
|
||||
[Bug #12583]
|
||||
|
||||
* test/ruby/test_gc.rb: add a test.
|
||||
|
||||
Wed Jul 13 15:59:59 2016 NAKAMURA Usaku <usa@ruby-lang.org>
|
||||
|
||||
* math.c (_USE_MATH_DEFINES): it must be set before including internal.h
|
||||
|
|
2
gc.c
2
gc.c
|
@ -4694,7 +4694,7 @@ gc_mark_roots(rb_objspace_t *objspace, const char **categoryp)
|
|||
MARK_CHECKPOINT("vm");
|
||||
SET_STACK_END;
|
||||
rb_vm_mark(th->vm);
|
||||
if (th->vm->self) gc_mark_set(objspace, th->vm->self);
|
||||
if (th->vm->self) gc_mark(objspace, th->vm->self);
|
||||
|
||||
MARK_CHECKPOINT("finalizers");
|
||||
mark_tbl(objspace, finalizer_table);
|
||||
|
|
|
@ -390,4 +390,11 @@ class TestGc < Test::Unit::TestCase
|
|||
GC.enable unless disabled
|
||||
end
|
||||
end
|
||||
|
||||
def test_vm_object
|
||||
assert_normal_exit <<-'end', '[Bug #12583]'
|
||||
ObjectSpace.each_object{|o| o.singleton_class rescue 0}
|
||||
ObjectSpace.each_object{|o| case o when Module then o.instance_methods end}
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
Loading…
Reference in a new issue