* gc.c (rb_objspace_call_finalizer): call gc_mark_stacked_objects
at suitable point. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@37083 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
parent
6aa2aabd8b
commit
2f9f17ac98
@ -1,3 +1,8 @@
|
|||||||
|
Thu Oct 4 17:24:51 2012 Narihiro Nakamura <authornari@gmail.com>
|
||||||
|
|
||||||
|
* gc.c (rb_objspace_call_finalizer): call gc_mark_stacked_objects
|
||||||
|
at suitable point.
|
||||||
|
|
||||||
Thu Oct 4 16:31:29 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
|
Thu Oct 4 16:31:29 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
|
||||||
|
|
||||||
* gc.c (rb_objspace_call_finalizer): mark self-referencing finalizers
|
* gc.c (rb_objspace_call_finalizer): mark self-referencing finalizers
|
||||||
|
4
gc.c
4
gc.c
@ -1484,9 +1484,6 @@ rb_objspace_call_finalizer(rb_objspace_t *objspace)
|
|||||||
RVALUE *final_list = 0;
|
RVALUE *final_list = 0;
|
||||||
size_t i;
|
size_t i;
|
||||||
|
|
||||||
mark_tbl(objspace, finalizer_table);
|
|
||||||
gc_mark_stacked_objects(objspace);
|
|
||||||
|
|
||||||
/* run finalizers */
|
/* run finalizers */
|
||||||
rest_sweep(objspace);
|
rest_sweep(objspace);
|
||||||
|
|
||||||
@ -1497,6 +1494,7 @@ rb_objspace_call_finalizer(rb_objspace_t *objspace)
|
|||||||
/* because mark will not be removed */
|
/* because mark will not be removed */
|
||||||
finalize_deferred(objspace);
|
finalize_deferred(objspace);
|
||||||
mark_tbl(objspace, finalizer_table);
|
mark_tbl(objspace, finalizer_table);
|
||||||
|
gc_mark_stacked_objects(objspace);
|
||||||
st_foreach(finalizer_table, chain_finalized_object,
|
st_foreach(finalizer_table, chain_finalized_object,
|
||||||
(st_data_t)&deferred_final_list);
|
(st_data_t)&deferred_final_list);
|
||||||
} while (deferred_final_list);
|
} while (deferred_final_list);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user