From ae2df330bc7662a50bea6385e53d49078592b07e Mon Sep 17 00:00:00 2001 From: usa Date: Tue, 13 Nov 2012 10:02:45 +0000 Subject: merged revision(s) 37075,37076,37082,37083,37088: [Backport #7123] * gc.c: Use the non-recursive marking instead of recursion. The recursion marking of CRuby needs checking stack overflow and the fail-safe system, but these systems not good at partial points, for example, marking deep tree structures. [ruby-dev:46184] [Feature #7095] * configure.in (GC_MARK_STACKFRAME_WORD): removed. It's used by checking stack overflow of marking. * win32/Makefile.sub (GC_MARK_STACKFRAME_WORD): ditto. * gc.c (free_stack_chunks): it is used only when per-VM object space is enabled. * gc.c (rb_objspace_call_finalizer): mark self-referencing finalizers before run finalizers, to fix SEGV from btest on 32bit. * gc.c (gc_mark_stacked_objects): extract from gc_marks(). * gc.c (rb_objspace_call_finalizer): call gc_mark_stacked_objects at suitable point. * gc.c (init_heap): call init_mark_stack before to allocate altstack. This change avoid the stack overflow at the signal handler on 32bit, but I don't understand reason... [Feature #7095] git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_1_9_3@37648 b2dd03c8-39d4-4d8f-98ff-823fe69b080e --- win32/Makefile.sub | 1 - 1 file changed, 1 deletion(-) (limited to 'win32') diff --git a/win32/Makefile.sub b/win32/Makefile.sub index ce354ca3e4..e064b132e5 100644 --- a/win32/Makefile.sub +++ b/win32/Makefile.sub @@ -595,7 +595,6 @@ $(CONFIG_H): $(MKFILES) $(srcdir)/win32/Makefile.sub $(win_srcdir)/Makefile.sub #define GETGROUPS_T int #define RETSIGTYPE void #define TYPEOF_TIMEVAL_TV_SEC long -#define GC_MARK_STACKFRAME_WORD 30 #define HAVE_ALLOCA 1 #define HAVE_DUP2 1 #define HAVE_MEMCMP 1 -- cgit v1.2.3