2010-05-06 Rodrigo Kumpera <rkumpera@novell.com>
commitd899a91f85d2ea971515d8a92c2c18d72e35324e
authorRodrigo Kumpera <kumpera@gmail.com>
Thu, 6 May 2010 20:16:36 +0000 (6 20:16 -0000)
committerRodrigo Kumpera <kumpera@gmail.com>
Thu, 6 May 2010 20:16:36 +0000 (6 20:16 -0000)
tree96b99b7a1f77a5c2bbdd0ed9f0bb60f4c85828c0
parent37e3554032c5860ea3f8e9b0ca9889d36c4634a7
2010-05-06 Rodrigo Kumpera  <rkumpera@novell.com>

* gc-internal.h: Add new functions required for ephemeron support.

* gc.c: Implement ves_icall_System_GC_register_ephemeron_array.

* icall-def.h: Add GC::register_ephemeron_array.

* object.c (compute_class_bitmap): sys.rt.cs.Ephemeronis an opaque type
under sgen. Its fields must not be marked.

* sgen-gc.c (mono_gc_clear_domain): Call cleanup function for ephemerons.

* sgen-gc.c (finish_gray_stack): Mark all reachable ephemerons before
handling finalizable objects. Clean dead ones after all finalizable
handling.

* sgen-gc.c (dump_heap): Add new kind of internal memory.

* sgen-gc.c (null_ephemerons_for_domain): Remove from the list ephemeron
arrays from the dead domain.

* sgen-gc.c (clear_unreachable_ephemerons): Clear dead ephemerons entries.

* sgen-gc.c (mark_ephemerons_in_range): Mark/Copy all ephemeron values
whose keys are reachable.

* sgen-gc.c (mono_gc_ephemeron_array_add): Register the array into the
list of live ephemeron arrays.

svn path=/trunk/mono/; revision=156847
mono/metadata/ChangeLog
mono/metadata/gc-internal.h
mono/metadata/gc.c
mono/metadata/icall-def.h
mono/metadata/object.c
mono/metadata/sgen-gc.c