Skip to content
  • U.Nakamura's avatar
    ae2df330
    merged revision(s) 37075,37076,37082,37083,37088: [Backport #7123] · ae2df330
    U.Nakamura authored
    * 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
    ae2df330
    merged revision(s) 37075,37076,37082,37083,37088: [Backport #7123]
    U.Nakamura authored
    * 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
Loading