[runtime] It's spring cleaning in MonoInternalThread. Remove 8 (yes, eight) unused...
[mono.git] / mono / metadata / sgen-bridge.h
index 1d7189e089f6bb67c74611b3aa84bf0926b09780..2a658f7870f091b8198a00074a614cb4a11d250f 100644 (file)
 MONO_BEGIN_DECLS
 
 enum {
-       SGEN_BRIDGE_VERSION = 2
+       SGEN_BRIDGE_VERSION = 4
 };
        
+typedef enum {
+       /* Instances of this class should be scanned when computing the transitive dependency among bridges. E.g. List<object>*/
+       GC_BRIDGE_TRANSPARENT_CLASS,
+       /* Instances of this class should not be scanned when computing the transitive dependency among bridges. E.g. String*/
+       GC_BRIDGE_OPAQUE_CLASS,
+       /* Instances of this class should be bridged and have their dependency computed. */
+       GC_BRIDGE_TRANSPARENT_BRIDGE_CLASS,
+       /* Instances of this class should be bridged but no dependencies should not be calculated. */
+       GC_BRIDGE_OPAQUE_BRIDGE_CLASS,
+} MonoGCBridgeObjectKind;
+
 typedef struct {
+       mono_bool is_alive;     /* to be set by the cross reference callback */
        int num_objs;
        MonoObject *objs [MONO_ZERO_LEN_ARRAY];
 } MonoGCBridgeSCC;
@@ -44,14 +56,14 @@ typedef struct {
 
 typedef struct {
        int bridge_version;
-       mono_bool (*is_bridge_class) (MonoClass *class);
+       MonoGCBridgeObjectKind (*bridge_class_kind) (MonoClass *klass);
        mono_bool (*is_bridge_object) (MonoObject *object);
        void (*cross_references) (int num_sccs, MonoGCBridgeSCC **sccs, int num_xrefs, MonoGCBridgeXRef *xrefs);
 } MonoGCBridgeCallbacks;
 
-void mono_gc_register_bridge_callbacks (MonoGCBridgeCallbacks *callbacks);
+MONO_API void mono_gc_register_bridge_callbacks (MonoGCBridgeCallbacks *callbacks);
 
-void mono_gc_wait_for_bridge_processing (void);
+MONO_API void mono_gc_wait_for_bridge_processing (void);
 
 MONO_END_DECLS