harmony-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Vera Volynets (JIRA)" <j...@apache.org>
Subject [jira] Updated: (HARMONY-881) DRLVM GC heap verification infrastructure
Date Fri, 14 Jul 2006 17:11:16 GMT
     [ http://issues.apache.org/jira/browse/HARMONY-881?page=all ]

Vera Volynets updated HARMONY-881:

    Attachment: 0001-Add-function-to-gc-interface.txt

Add funtion gc_add_finalizable_root_set_entry() to gc interface.

It's needed for separate enumeration
of finalizable roots in gc_debug mode.
Because some finalizable objects can be unreachable
after GC gc_debug won't work properly.
So it counts number of strongly live objects
and finalizable ones separatly.

 vm/gc/src/gc_for_vm.cpp                   |   13 +++++++++++++
 vm/include/jit_import_rt.h                |    3 +++
 vm/include/open/gc.h                      |    5 +++++
 vm/vmcore/src/gc/dll_gc.cpp               |    2 ++
 vm/vmcore/src/gc/root_set_enum_common.cpp |   21 +++++++++++++++++++++
 vm/vmcore/src/init/finalize.cpp           |    2 +-
 6 files changed, 45 insertions(+), 1 deletions(-)

> DRLVM GC heap verification infrastructure
> -----------------------------------------
>                 Key: HARMONY-881
>                 URL: http://issues.apache.org/jira/browse/HARMONY-881
>             Project: Harmony
>          Issue Type: New Feature
>          Components: Contributions
>            Reporter: Vera Volynets
>         Attachments: 0001-Add-function-to-gc-interface.txt
> *************   GC heap verification infrastructure   *************** 
> Hi,
> I have been working on implementing GC heap verification infrastructure for Stop-The-World
> This infrastructure is intended be used with any stop-the-world GC implementation, conforming
to the GC-VM interface (described in gc.h and vm_gc.h), with only a minor GC-VM interface
> It works on Windows and Linux ia32 platforms.
> *Description*
> GC heap verification infrastructure is a small module which is hijacked into GC-VM interface.
> The main idea is to substitute GC interface function so that necessary information can
be easily collected.
> Everybody who is interested in GC development and debugging is invited
> to try it, modify files and add their own functionality.
> At this moment GC heap verification infrastructure verifies that the structure of object
reference graph stays exactly the same during collection. Therefore, the number of strongly
reachable live objects and live bytes before and after GC should stay unchanged.
> The verification is performed in two phases:
> 1) On the start of Stop-The-World phase, all enumerated roots to GC by VM are cached
by GC heap verification infrastructure and heap is traversed, constructing heap "fingerprint",
recording the order of the objects and counting their number and size.   
> 2) After actual garbage collection is complete, before resuming user threads, the heap
is traced once again and the heap structure is verified. 
> *Patch contents*
> This is an individual contribution, and it was prepared according to the requirements
of Apache cleanroom process; the size of two files all in all is about 30kb (161 and 585 lines).

> -Patch Add-function-to-gc-interface.txt
> It adds function gc_add_finalizable_root_set_entry() for separate counting of finalizable
objects because the GC may not preserve ordering of finalizable objects, and thus the heap
structure can be changed.
> -Patch Checks-correctness-of-gc-work.txt
> The heart of this patch is file gc_debug.cpp.
> The tracing of heap starts with debug_gc_trace_heap() function.
> *Users guide*
> The debugging mode is off by default, and has no impact on the GC performance.. 
> - To turn on GC Debug infrastructure use VM with -Dvm.verify.gc=true option in command
> - To see debug information build VM in debug mode, BUILD_CFG=debug, and use logger in
usual way.
> When enabled, the verification heap trace takes quite a bit of time (two times for each
collection: before and after actual collection), GC pauses increase by 1.5-2 times (from 1406ms
to 2515ms) when running Eclipse on DRLVM built in debug configuration.   
> To apply patch: 
> patch -p1 < 000*.txt

This message is automatically generated by JIRA.
If you think it was sent incorrectly contact one of the administrators: http://issues.apache.org/jira/secure/Administrators.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira


View raw message