probe gc__weak__update (uintptr_t ref_addr, uintptr_t old_addr, uintptr_t new_addr, uintptr_t size, char *ns_name, char *class_name, int track);
probe gc__global__remset__add (uintptr_t ref_addr, uintptr_t obj_addr, uintptr_t size, char *ns_name, char *class_name);
+ probe gc__obj__cemented (uintptr_t addr, uintptr_t size, char *ns_name, char *class_name);
};
#pragma D attributes Evolving/Evolving/Common provider mono provider
return TRUE;
++hash [i].count;
-#ifdef SGEN_BINARY_PROTOCOL
if (hash [i].count == SGEN_CEMENT_THRESHOLD) {
+ if (G_UNLIKELY (MONO_GC_OBJ_CEMENTED_ENABLED())) {
+ MonoVTable *vt = (MonoVTable*)SGEN_LOAD_VTABLE (obj);
+ MONO_GC_OBJ_CEMENTED ((mword)obj, sgen_safe_object_get_size ((MonoObject*)obj),
+ vt->klass->name_space, vt->klass->name);
+ }
+#ifdef SGEN_BINARY_PROTOCOL
binary_protocol_cement (obj, (gpointer)SGEN_LOAD_VTABLE (obj),
sgen_safe_object_get_size ((MonoObject*)obj));
- }
#endif
+ }
return FALSE;
}
#define MONO_GC_GLOBAL_REMSET_ADD(ref_addr,obj_addr,size,ns_name,class_name)
#define MONO_GC_GLOBAL_REMSET_ADD_ENABLED() (0)
+#define MONO_GC_OBJ_CEMENTED(addr,size,ns_name,class_name)
+#define MONO_GC_OBJ_CEMENTED_ENABLED() (0)
+
#endif
#endif