diff options
author | usa <usa@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2012-11-13 10:02:45 +0000 |
---|---|---|
committer | usa <usa@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2012-11-13 10:02:45 +0000 |
commit | ae2df330bc7662a50bea6385e53d49078592b07e (patch) | |
tree | 2ed43e3747edf8c02f2e1c19980b010127bac309 /ChangeLog | |
parent | 28a3dae8080985b4d6a9cb22d997b7f71c214051 (diff) |
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
Diffstat (limited to 'ChangeLog')
-rw-r--r-- | ChangeLog | 28 |
1 files changed, 28 insertions, 0 deletions
@@ -1,3 +1,31 @@ +Tue Nov 13 18:13:10 2012 Narihiro Nakamura <authornari@gmail.com> + + * 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] + Sat Nov 10 01:25:52 2012 Nobuyoshi Nakada <nobu@ruby-lang.org> * file.c (append_fspath): no need to do encoding trick here. |