X-Git-Url: http://wien.tomnetworks.com/gitweb/?a=blobdiff_plain;f=mono%2Fsgen%2Fsgen-gc.h;h=aefb07f23c5b6a99b9f3510a43d90c353f7a829d;hb=86c24e94279f56d0426924fbb533f14d2c9b41a0;hp=003c3a5fa1dfe4de3f53d3534c7473505c0e9df9;hpb=d817c0a1297ef818aea77250729fe9721e86c6e8;p=mono.git diff --git a/mono/sgen/sgen-gc.h b/mono/sgen/sgen-gc.h index 003c3a5fa1d..aefb07f23c5 100644 --- a/mono/sgen/sgen-gc.h +++ b/mono/sgen/sgen-gc.h @@ -407,17 +407,10 @@ void sgen_scan_area_with_callback (char *start, char *end, IterateObjectCallback struct _SgenThreadInfo { SgenClientThreadInfo client_info; - char **tlab_next_addr; - char **tlab_start_addr; - char **tlab_temp_end_addr; - char **tlab_real_end_addr; - -#ifndef HAVE_KW_THREAD char *tlab_start; char *tlab_next; char *tlab_temp_end; char *tlab_real_end; -#endif }; gboolean sgen_is_worker_thread (MonoNativeThreadId thread); @@ -557,6 +550,7 @@ typedef struct { GCObject* (*alloc_for_promotion) (GCVTable vtable, GCObject *obj, size_t objsize, gboolean has_references); SgenObjectOperations serial_ops; + SgenObjectOperations serial_ops_with_concurrent_major; void (*prepare_to_space) (char *to_space_bitmap, size_t space_bitmap_size); void (*clear_fragments) (void); @@ -605,7 +599,6 @@ typedef enum { ITERATE_OBJECTS_SWEEP = 1, ITERATE_OBJECTS_NON_PINNED = 2, ITERATE_OBJECTS_PINNED = 4, - ITERATE_OBJECTS_ALL = ITERATE_OBJECTS_NON_PINNED | ITERATE_OBJECTS_PINNED, ITERATE_OBJECTS_SWEEP_NON_PINNED = ITERATE_OBJECTS_SWEEP | ITERATE_OBJECTS_NON_PINNED, ITERATE_OBJECTS_SWEEP_PINNED = ITERATE_OBJECTS_SWEEP | ITERATE_OBJECTS_PINNED, ITERATE_OBJECTS_SWEEP_ALL = ITERATE_OBJECTS_SWEEP | ITERATE_OBJECTS_NON_PINNED | ITERATE_OBJECTS_PINNED @@ -660,7 +653,7 @@ struct _SgenMajorCollector { void (*sweep) (void); gboolean (*have_swept) (void); void (*finish_sweeping) (void); - void (*free_swept_blocks) (size_t allowance); + void (*free_swept_blocks) (size_t section_reserve); void (*check_scan_starts) (void); void (*dump_heap) (FILE *heap_dump_file); gint64 (*get_used_size) (void); @@ -813,8 +806,9 @@ void sgen_process_fin_stage_entries (void); gboolean sgen_have_pending_finalizers (void); void sgen_object_register_for_finalization (GCObject *obj, void *user_data); -int sgen_gather_finalizers_if (SgenObjectPredicateFunc predicate, void *user_data, GCObject **out_array, int out_size); +void sgen_finalize_if (SgenObjectPredicateFunc predicate, void *user_data); void sgen_remove_finalizers_if (SgenObjectPredicateFunc predicate, void *user_data, int generation); +void sgen_set_suspend_finalizers (void); void sgen_register_disappearing_link (GCObject *obj, void **link, gboolean track, gboolean in_gc); @@ -977,7 +971,7 @@ extern NurseryClearPolicy nursery_clear_policy; extern gboolean sgen_try_free_some_memory; extern mword total_promoted_size; extern mword total_allocated_major; - +extern volatile gboolean sgen_suspend_finalizers; extern MonoCoopMutex gc_mutex; /* Nursery helpers. */ @@ -1002,7 +996,6 @@ typedef enum { ATYPE_NUM } SgenAllocatorType; -void sgen_init_tlab_info (SgenThreadInfo* info); void sgen_clear_tlabs (void); GCObject* sgen_alloc_obj (GCVTable vtable, size_t size); @@ -1011,7 +1004,7 @@ GCObject* sgen_alloc_obj_mature (GCVTable vtable, size_t size); /* Debug support */ -void sgen_check_consistency (void); +void sgen_check_remset_consistency (void); void sgen_check_mod_union_consistency (void); void sgen_check_major_refs (void); void sgen_check_whole_heap (gboolean allow_missing_pinning);