int size;
int mono_defaults_size;
MonoDefaults *mono_defaults;
+ int type_size;
+ int array_type_size;
+ int klass_size;
+ int klass_instance_size_offset;
+ int klass_parent_offset;
+ int klass_token_offset;
int klass_field_offset;
int klass_methods_offset;
int klass_method_count_offset;
+ int klass_this_arg_offset;
+ int klass_byval_arg_offset;
+ int klass_generic_class_offset;
+ int klass_generic_container_offset;
int field_info_size;
};
#endif
+static int initialized = 0;
+
void
mono_debugger_lock (void)
{
+ g_assert (initialized);
EnterCriticalSection (&debugger_lock_mutex);
debugger_lock_level++;
}
void
mono_debugger_unlock (void)
{
+ g_assert (initialized);
if (debugger_lock_level == 1) {
if (must_reload_symtabs && mono_debugger_use_debugger) {
mono_debugger_event (MONO_DEBUGGER_EVENT_RELOAD_SYMTABS, 0, 0);
InitializeCriticalSection (&debugger_lock_mutex);
mono_debugger_use_debugger = use_debugger;
+ initialized = 1;
}
void
info->size = sizeof (MonoDebuggerMetadataInfo);
info->mono_defaults = &mono_defaults;
info->mono_defaults_size = sizeof (MonoDefaults);
+ info->type_size = sizeof (MonoType);
+ info->array_type_size = sizeof (MonoArrayType);
+ info->klass_size = sizeof (MonoClass);
+ info->klass_instance_size_offset = (guint8*)&klass.instance_size - (guint8*)&klass;
+ info->klass_parent_offset = (guint8*)&klass.parent - (guint8*)&klass;
+ info->klass_token_offset = (guint8*)&klass.type_token - (guint8*)&klass;
info->klass_field_offset = (guint8*)&klass.fields - (guint8*)&klass;
info->klass_methods_offset = (guint8*)&klass.methods - (guint8*)&klass;
info->klass_method_count_offset = (guint8*)&klass.method.count - (guint8*)&klass;
+ info->klass_this_arg_offset = (guint8*)&klass.this_arg - (guint8*)&klass;
+ info->klass_byval_arg_offset = (guint8*)&klass.byval_arg - (guint8*)&klass;
+ info->klass_generic_class_offset = (guint8*)&klass.generic_class - (guint8*)&klass;
+ info->klass_generic_container_offset = (guint8*)&klass.generic_container - (guint8*)&klass;
info->field_info_size = sizeof (MonoClassField);
}
must_reload_symtabs = TRUE;
}
-void
-mono_debugger_add_type (MonoDebugHandle *symfile, MonoClass *klass)
-{
-}
-
-void
-mono_debugger_add_method (MonoDebugMethodJitInfo *jit)
-{
-}
-
-MonoReflectionMethod *
-ves_icall_MonoDebugger_GetMethod (MonoReflectionAssembly *assembly, guint32 token)
-{
- MonoMethod *method;
-
- method = mono_get_method (mono_assembly_get_image (assembly->assembly), token, NULL);
-
- return mono_method_get_object (mono_domain_get (), method, NULL);
-}
-
-int
-ves_icall_MonoDebugger_GetMethodToken (MonoReflectionAssembly *assembly, MonoReflectionMethod *method)
-{
- return method->method->token;
-}
-
-MonoReflectionType *
-ves_icall_MonoDebugger_GetType (MonoReflectionAssembly *assembly, guint32 token)
-{
- MonoClass *klass;
-
- klass = mono_class_get (mono_assembly_get_image (assembly->assembly), token);
- if (!klass) {
- g_warning (G_STRLOC ": %x", token);
- return NULL;
- }
-
- return mono_type_get_object (mono_domain_get (), &klass->byval_arg);
-}
-
-MonoReflectionType *
-ves_icall_MonoDebugger_GetLocalTypeFromSignature (MonoReflectionAssembly *assembly, MonoArray *signature)
-{
- MonoDomain *domain;
- MonoImage *image;
- MonoType *type;
- const char *ptr;
- int len = 0;
-
- MONO_CHECK_ARG_NULL (assembly);
- MONO_CHECK_ARG_NULL (signature);
-
- domain = mono_domain_get();
- image = mono_assembly_get_image (assembly->assembly);
-
- ptr = mono_array_addr (signature, char, 0);
- g_assert (*ptr++ == 0x07);
- len = mono_metadata_decode_value (ptr, &ptr);
- g_assert (len == 1);
-
- type = mono_metadata_parse_type (image, MONO_PARSE_LOCAL, 0, ptr, &ptr);
-
- return mono_type_get_object (domain, type);
-}
-
void
mono_debugger_event (MonoDebuggerEvent event, guint64 data, guint64 arg)
{