+GList*
+g_list_prepend_image (MonoImage *image, GList *list, gpointer data)
+{
+ GList *new_list;
+
+ new_list = mono_image_alloc (image, sizeof (GList));
+ new_list->data = data;
+ new_list->prev = list ? list->prev : NULL;
+ new_list->next = list;
+
+ if (new_list->prev)
+ new_list->prev->next = new_list;
+ if (list)
+ list->prev = new_list;
+
+ return new_list;
+}
+
+GSList*
+g_slist_append_image (MonoImage *image, GSList *list, gpointer data)
+{
+ GSList *new_list;
+
+ new_list = mono_image_alloc (image, sizeof (GSList));
+ new_list->data = data;
+ new_list->next = NULL;
+
+ return g_slist_concat (list, new_list);
+}
+
+void
+mono_image_lock (MonoImage *image)
+{
+ mono_locks_acquire (&image->lock, ImageDataLock);
+}
+
+void
+mono_image_unlock (MonoImage *image)
+{
+ mono_locks_release (&image->lock, ImageDataLock);
+}
+
+
+/**
+ * mono_image_property_lookup:
+ *
+ * Lookup a property on @image. Used to store very rare fields of MonoClass and MonoMethod.
+ *
+ * LOCKING: Takes the image lock
+ */
+gpointer
+mono_image_property_lookup (MonoImage *image, gpointer subject, guint32 property)
+{
+ gpointer res;
+
+ mono_image_lock (image);
+ res = mono_property_hash_lookup (image->property_hash, subject, property);
+ mono_image_unlock (image);
+
+ return res;
+}
+
+/**
+ * mono_image_property_insert:
+ *
+ * Insert a new property @property with value @value on @subject in @image. Used to store very rare fields of MonoClass and MonoMethod.
+ *
+ * LOCKING: Takes the image lock
+ */
+void
+mono_image_property_insert (MonoImage *image, gpointer subject, guint32 property, gpointer value)
+{
+ mono_image_lock (image);
+ mono_property_hash_insert (image->property_hash, subject, property, value);
+ mono_image_unlock (image);
+}
+
+/**
+ * mono_image_property_remove:
+ *
+ * Remove all properties associated with @subject in @image. Used to store very rare fields of MonoClass and MonoMethod.
+ *
+ * LOCKING: Takes the image lock
+ */
+void
+mono_image_property_remove (MonoImage *image, gpointer subject)
+{
+ mono_image_lock (image);
+ mono_property_hash_remove_object (image->property_hash, subject);
+ mono_image_unlock (image);
+}