gint32 remote_stack_index;
gint32 hresult;
MonoString *source;
+ MonoObject *_data;
};
typedef struct {
gpointer end_stack; /* This is only used when running in the debugger. */
MonoBoolean thread_interrupt_requested;
guint8 apartment_state;
- gpointer unused5;
+ gssize small_id; /* A small, unique id, used for the hazard
+ pointer table. Should be changed to a
+ guint32 at the next corlib version bump. */
gpointer unused6;
gpointer unused7;
};
MonoReflectionMarshal* mono_reflection_marshal_from_marshal_spec (MonoDomain *domain, MonoClass *klass, MonoMarshalSpec *spec) MONO_INTERNAL;
gpointer
-mono_reflection_lookup_dynamic_token (MonoImage *image, guint32 token, MonoClass **handle_class) MONO_INTERNAL;
+mono_reflection_lookup_dynamic_token (MonoImage *image, guint32 token, MonoClass **handle_class, MonoGenericContext *context) MONO_INTERNAL;
gboolean
mono_reflection_call_is_assignable_to (MonoClass *klass, MonoClass *oklass) MONO_INTERNAL;
MonoObject*
mono_nullable_box (guint8 *buf, MonoClass *klass) MONO_INTERNAL;
+#define MONO_IMT_SIZE 19
+
+typedef struct _MonoImtBuilderEntry {
+ MonoMethod *method;
+ struct _MonoImtBuilderEntry *next;
+ int vtable_slot;
+ int children;
+} MonoImtBuilderEntry;
+
+typedef struct _MonoIMTCheckItem MonoIMTCheckItem;
+
+struct _MonoIMTCheckItem {
+ MonoMethod *method;
+ int check_target_idx;
+ int vtable_slot;
+ guint8 *jmp_code;
+ guint8 *code_target;
+ guint8 is_equals;
+ guint8 compare_done;
+ guint8 chunk_size;
+ guint8 short_branch;
+};
+
+typedef gpointer (*MonoImtThunkBuilder) (MonoVTable *vtable, MonoDomain *domain, MonoIMTCheckItem **imt_entries, int count);
+
+void
+mono_install_imt_thunk_builder (MonoImtThunkBuilder func) MONO_INTERNAL;
+
+guint32
+mono_method_get_imt_slot (MonoMethod *method) MONO_INTERNAL;
+
#endif /* __MONO_OBJECT_INTERNALS_H__ */