#define HIDE_POINTER(p,t) ((gpointer)(~((size_t)(p)|((t)?1:0))))
#define REVEAL_POINTER(p) ((gpointer)((~(size_t)(p))&~3L))
-#ifdef SGEN_ALIGN_NURSERY
#define SGEN_PTR_IN_NURSERY(p,bits,start,end) (((mword)(p) & ~((1 << (bits)) - 1)) == (mword)(start))
-#else
-#define SGEN_PTR_IN_NURSERY(p,bits,start,end) ((char*)(p) >= (start) && (char*)(p) < (end))
-#endif
#ifdef USER_CONFIG
/* good sizes are 512KB-1MB: larger ones increase a lot memzeroing time */
#define DEFAULT_NURSERY_SIZE (sgen_nursery_size)
extern size_t sgen_nursery_size;
-#ifdef SGEN_ALIGN_NURSERY
/* The number of trailing 0 bits in DEFAULT_NURSERY_SIZE */
#define DEFAULT_NURSERY_BITS (sgen_nursery_bits)
extern int sgen_nursery_bits;
-#endif
#else
#define DEFAULT_NURSERY_SIZE (4*1024*1024)
-#ifdef SGEN_ALIGN_NURSERY
#define DEFAULT_NURSERY_BITS 22
-#endif
-
-#endif
-#ifndef SGEN_ALIGN_NURSERY
-#define DEFAULT_NURSERY_BITS -1
#endif
extern char *sgen_nursery_start;
void (*free_pinned_object) (char *obj, size_t size);
void (*iterate_objects) (IterateObjectsFlags flags, IterateObjectCallbackFunc callback, void *data);
void (*free_non_pinned_object) (char *obj, size_t size);
- void (*find_pin_queue_start_ends) (SgenGrayQueue *queue);
void (*pin_objects) (SgenGrayQueue *queue);
void (*pin_major_object) (char *obj, SgenGrayQueue *queue);
void (*scan_card_table) (gboolean mod_union, SgenGrayQueue *queue);
SgenMajorCollector* sgen_get_major_collector (void);
-typedef struct _SgenRemeberedSet {
+typedef struct _SgenRememberedSet {
void (*wbarrier_set_field) (MonoObject *obj, gpointer field_ptr, MonoObject* value);
void (*wbarrier_set_arrayref) (MonoArray *arr, gpointer slot_ptr, MonoObject* value);
void (*wbarrier_arrayref_copy) (gpointer dest_ptr, gpointer src_ptr, int count);
void (*wbarrier_generic_nostore) (gpointer ptr);
void (*record_pointer) (gpointer ptr);
- void (*finish_scan_remsets) (void *start_nursery, void *end_nursery, SgenGrayQueue *queue);
+ void (*scan_remsets) (SgenGrayQueue *queue);
- void (*prepare_for_major_collection) (void);
+ void (*clear_cards) (void);
void (*finish_minor_collection) (void);
gboolean (*find_address) (char *addr);
gboolean (*find_address_with_cards) (char *cards_start, guint8 *cards, char *addr);
-} SgenRemeberedSet;
+} SgenRememberedSet;
-SgenRemeberedSet *sgen_get_remset (void);
+SgenRememberedSet *sgen_get_remset (void);
static mword /*__attribute__((noinline)) not sure if this hint is a good idea*/
slow_object_get_size (MonoVTable *vtable, MonoObject* o)
};
void sgen_pin_object (void *object, SgenGrayQueue *queue);
-void sgen_parallel_pin_or_update (void **ptr, void *obj, MonoVTable *vt, SgenGrayQueue *queue);
void sgen_set_pinned_from_failed_allocation (mword objsize);
void sgen_ensure_free_space (size_t size);
void sgen_check_nursery_objects_pinned (gboolean pinned);
void sgen_scan_for_registered_roots_in_domain (MonoDomain *domain, int root_type);
void sgen_check_for_xdomain_refs (void);
+char* sgen_find_object_for_ptr (char *ptr);
void mono_gc_scan_for_specific_ref (MonoObject *key, gboolean precise);