X-Git-Url: http://wien.tomnetworks.com/gitweb/?a=blobdiff_plain;f=mono%2Fsgen%2Fsgen-client.h;h=4cf9f003d5584bb55b5c7ab30f9170661647c3f7;hb=ef0ddf45c3081e799edcb4e95770186514b80cf1;hp=505edbdc3fb940b9660e905f332f0024d7447382;hpb=736ffe64c5a43fa61697ef88948c91540d02d71d;p=mono.git diff --git a/mono/sgen/sgen-client.h b/mono/sgen/sgen-client.h index 505edbdc3fb..4cf9f003d55 100644 --- a/mono/sgen/sgen-client.h +++ b/mono/sgen/sgen-client.h @@ -3,18 +3,7 @@ * * Copyright (C) 2014 Xamarin Inc * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Library General Public - * License 2.0 as published by the Free Software Foundation; - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Library General Public License for more details. - * - * You should have received a copy of the GNU Library General Public - * License 2.0 along with this library; if not, write to the Free - * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + * Licensed under the MIT license. See LICENSE file in the project root for full license information. */ #include "mono/sgen/sgen-pointer-queue.h" @@ -29,7 +18,7 @@ void sgen_client_init (void); * The slow path for getting an object's size. We're passing in the vtable because we've * already fetched it. */ -mword sgen_client_slow_object_get_size (GCVTable *vtable, GCObject* o); +mword sgen_client_slow_object_get_size (GCVTable vtable, GCObject* o); /* * Fill the given range with a dummy object. If the range is too short to be filled with an @@ -87,12 +76,25 @@ gboolean sgen_client_mark_ephemerons (ScanCopyContext ctx); */ void sgen_client_clear_unreachable_ephemerons (ScanCopyContext ctx); +/* + * May return NULL. Must be an aligned pointer. + */ +gpointer sgen_client_default_metadata (void); +gpointer sgen_client_metadata_for_object (GCObject *obj); + +/* + * No action required. + */ +void sgen_client_gchandle_created (int handle_type, GCObject *obj, guint32 handle); +void sgen_client_gchandle_destroyed (int handle_type, guint32 handle); +void sgen_client_ensure_weak_gchandles_accessible (void); + /* * This is called for objects that are larger than one card. If it's possible to scan only * parts of the object based on which cards are marked, do so and return TRUE. Otherwise, * return FALSE. */ -gboolean sgen_client_cardtable_scan_object (char *obj, mword block_obj_size, guint8 *cards, gboolean mod_union, ScanCopyContext ctx); +gboolean sgen_client_cardtable_scan_object (GCObject *obj, mword block_obj_size, guint8 *cards, ScanCopyContext ctx); /* * Called after nursery objects have been pinned. No action is necessary. @@ -114,7 +116,7 @@ void sgen_client_collecting_major_3 (SgenPointerQueue *fin_ready_queue, SgenPoin /* * Called after a LOS object has been pinned. No action is necessary. */ -void sgen_client_pinned_los_object (char *obj); +void sgen_client_pinned_los_object (GCObject *obj); /* * Called for every degraded allocation. No action is necessary. @@ -127,14 +129,6 @@ void sgen_client_degraded_allocation (size_t size); */ void sgen_client_total_allocated_heap_changed (size_t allocated_heap_size); -/* - * Called when an object allocation fails. The suggested action is to abort the program. - * - * FIXME: Don't we want to return a BOOL here that indicates whether to retry the - * allocation? - */ -void sgen_client_out_of_memory (size_t size); - /* * If the client has registered any internal memory types, this must return a string * describing the given type. Only used for debugging. @@ -144,9 +138,9 @@ const char* sgen_client_description_for_internal_mem_type (int type); /* * Only used for debugging. `sgen_client_vtable_get_namespace()` may return NULL. */ -gboolean sgen_client_vtable_is_inited (GCVTable *vtable); -const char* sgen_client_vtable_get_namespace (GCVTable *vtable); -const char* sgen_client_vtable_get_name (GCVTable *vtable); +gboolean sgen_client_vtable_is_inited (GCVTable vtable); +const char* sgen_client_vtable_get_namespace (GCVTable vtable); +const char* sgen_client_vtable_get_name (GCVTable vtable); /* * Called before starting collections. The world is already stopped. No action is @@ -272,8 +266,6 @@ void sgen_client_describe_invalid_pointer (GCObject *ptr); #define BEGIN_PROTOCOL_ENTRY_HEAVY6(method,t1,f1,t2,f2,t3,f3,t4,f4,t5,f5,t6,f6) \ void sgen_client_ ## method (t1 f1, t2 f2, t3 f3, t4 f4, t5 f5, t6 f6); -#define FLUSH() - #define DEFAULT_PRINT() #define CUSTOM_PRINT(_) @@ -282,6 +274,7 @@ void sgen_client_describe_invalid_pointer (GCObject *ptr); #define IS_VTABLE_MATCH(_) #define END_PROTOCOL_ENTRY +#define END_PROTOCOL_ENTRY_FLUSH #define END_PROTOCOL_ENTRY_HEAVY #include "sgen-protocol-def.h"