X-Git-Url: http://wien.tomnetworks.com/gitweb/?a=blobdiff_plain;f=mono%2Fsgen%2Fsgen-gc.h;h=aefb07f23c5b6a99b9f3510a43d90c353f7a829d;hb=86c24e94279f56d0426924fbb533f14d2c9b41a0;hp=192c570f08b23c655bbb5d3dff83d131de14a7e6;hpb=64c693851228345fcd6b3df03f7c25845d2820b5;p=mono.git diff --git a/mono/sgen/sgen-gc.h b/mono/sgen/sgen-gc.h index 192c570f08b..aefb07f23c5 100644 --- a/mono/sgen/sgen-gc.h +++ b/mono/sgen/sgen-gc.h @@ -303,6 +303,8 @@ void sgen_check_section_scan_starts (GCMemSection *section); void sgen_conservatively_pin_objects_from (void **start, void **end, void *start_nursery, void *end_nursery, int pin_type); +gboolean sgen_gc_initialized (void); + /* Keep in sync with description_for_type() in sgen-internal.c! */ enum { INTERNAL_MEM_PIN_QUEUE, @@ -405,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); @@ -555,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); @@ -603,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 @@ -658,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); @@ -811,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); @@ -975,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. */ @@ -1000,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); @@ -1009,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);