diff options
author | nagachika <nagachika@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2016-08-16 04:29:37 +0000 |
---|---|---|
committer | nagachika <nagachika@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2016-08-16 04:29:37 +0000 |
commit | 7f7360a885974e64f27cad05f27f87eaf595caa8 (patch) | |
tree | afb5b977dc00b0ef60905e4dd86ac970813b0659 | |
parent | 2f0555c3a116b130eaa724842b014a31306f41de (diff) |
merge revision(s) 55663: [Backport #12583]
* 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/branches/ruby_2_3@55919 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
-rw-r--r-- | ChangeLog | 10 | ||||
-rw-r--r-- | gc.c | 2 | ||||
-rw-r--r-- | test/ruby/test_gc.rb | 7 | ||||
-rw-r--r-- | version.h | 2 |
4 files changed, 19 insertions, 2 deletions
@@ -1,3 +1,13 @@ +Tue Aug 16 12:27:48 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. + Tue Aug 16 12:01:35 2016 Naohisa Goto <ngotogenome@gmail.com> * ext/digest/md5/md5ossl.h: Remove excess semicolons. @@ -4642,7 +4642,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); diff --git a/test/ruby/test_gc.rb b/test/ruby/test_gc.rb index 0e3ae4bc42..51b17c6f82 100644 --- a/test/ruby/test_gc.rb +++ b/test/ruby/test_gc.rb @@ -397,4 +397,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 @@ -1,6 +1,6 @@ #define RUBY_VERSION "2.3.2" #define RUBY_RELEASE_DATE "2016-08-16" -#define RUBY_PATCHLEVEL 166 +#define RUBY_PATCHLEVEL 167 #define RUBY_RELEASE_YEAR 2016 #define RUBY_RELEASE_MONTH 8 |