* gc.c (garbage_collect, gc_marks): move the location of

clear and restore rb_objspace_t::mark_func_data
  from garbage_collect() to gc_marks().



git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@37309 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
ko1 2012-10-24 01:39:45 +00:00
Родитель 6cbd18d7ef
Коммит aab12ec054
2 изменённых файлов: 12 добавлений и 7 удалений

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

@ -1,3 +1,9 @@
Wed Oct 24 10:33:09 2012 Koichi Sasada <ko1@atdot.net>
* gc.c (garbage_collect, gc_marks): move the location of
clear and restore rb_objspace_t::mark_func_data
from garbage_collect() to gc_marks().
Wed Oct 24 10:17:45 2012 Koichi Sasada <ko1@atdot.net>
* ext/objspace/objspace.c (Init_objspace): add a new method

13
gc.c
Просмотреть файл

@ -2914,6 +2914,10 @@ gc_marks(rb_objspace_t *objspace)
{
struct gc_list *list;
rb_thread_t *th = GET_THREAD();
struct mark_func_data_struct *prev_mark_func_data;
prev_mark_func_data = objspace->mark_func_data;
objspace->mark_func_data = 0;
gc_prof_mark_timer_start(objspace);
@ -2951,6 +2955,8 @@ gc_marks(rb_objspace_t *objspace)
gc_mark_stacked_objects(objspace);
gc_prof_mark_timer_stop(objspace);
objspace->mark_func_data = prev_mark_func_data;
}
/* GC */
@ -3020,8 +3026,6 @@ rb_gc_unregister_address(VALUE *addr)
static int
garbage_collect(rb_objspace_t *objspace)
{
struct mark_func_data_struct *prev_mark_func_data;
if (GC_NOTIFY) printf("start garbage_collect()\n");
if (!heaps) {
@ -3033,9 +3037,6 @@ garbage_collect(rb_objspace_t *objspace)
gc_prof_timer_start(objspace);
prev_mark_func_data = objspace->mark_func_data;
objspace->mark_func_data = 0;
rest_sweep(objspace);
during_gc++;
@ -3045,8 +3046,6 @@ garbage_collect(rb_objspace_t *objspace)
gc_sweep(objspace);
gc_prof_sweep_timer_stop(objspace);
objspace->mark_func_data = prev_mark_func_data;
gc_prof_timer_stop(objspace, Qtrue);
if (GC_NOTIFY) printf("end garbage_collect()\n");
return TRUE;