Project

General

Profile

« Previous | Next » 

Revision 4c9d6d80

Added by ko1 (Koichi Sasada) over 11 years ago

  • gc.c: change RGENGC_CHECK_MODE (>= 2) logic.
    Basically, make an object graph of all of living objects before and
    after marking and check status.
    [Before marking: check WB sanity]
    If there is a non-old object obj' pointed from old object (parent') then parent' or obj' should be remembered.
    [After marking: check marking miss]
    Traversible objects with the object graph should be marked.
    (However, this alert about objects pointed by machine context
    can be false positive. We only display alert.)
    [Implementation memo]
    objspace_allrefs() creates an object graph.
    The object graph is represented by st_table, key is object (VALUE)
    and value is referring objects. Referring objects are stored by
    "struct reflist".
  • gc.c (init_mark_stack): do not use push_mark_stack_chunk() at init.
    This pre-allocation causes failure on is_mark_stask_empty()
    without any pushing.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@43744 b2dd03c8-39d4-4d8f-98ff-823fe69b080e