/*
- * console-io.c: ConsoleDriver internal calls
+ * debug-helpers.c:
*
* Author:
* Mono Project (http://www.mono-project.com)
#include "mono/metadata/opcodes.h"
#include "mono/metadata/metadata-internals.h"
#include "mono/metadata/class-internals.h"
+#include "mono/metadata/object-internals.h"
#include "mono/metadata/mono-endian.h"
#include "mono/metadata/debug-helpers.h"
#include "mono/metadata/tabledefs.h"
case MONO_TYPE_VAR:
case MONO_TYPE_MVAR:
if (type->data.generic_param) {
- MonoGenericParamInfo *info = mono_generic_param_info (type->data.generic_param);
- if (info)
- g_string_append (res, info->name);
+ const char *name = mono_generic_param_name (type->data.generic_param);
+ if (name)
+ g_string_append (res, name);
else
g_string_append_printf (res, "%s%d", type->type == MONO_TYPE_VAR ? "!" : "!!", mono_generic_param_num (type->data.generic_param));
} else {
g_free (class_nspace);
return NULL;
}
- *method_name++ = 0;
/* allow two :: to separate the method name */
- if (*method_name == ':')
- method_name++;
+ if (method_name != class_nspace && method_name [-1] == ':')
+ method_name [-1] = 0;
+ *method_name++ = 0;
class_name = strrchr (class_nspace, '.');
if (class_name) {
*class_name++ = 0;
gboolean
mono_method_desc_full_match (MonoMethodDesc *desc, MonoMethod *method)
{
+ if (!desc->klass)
+ return FALSE;
if (!match_class (desc, strlen (desc->klass), method->klass))
return FALSE;
mono_method_desc_search_in_image (MonoMethodDesc *desc, MonoImage *image)
{
MonoClass *klass;
- const MonoTableInfo *tdef;
const MonoTableInfo *methods;
MonoMethod *method;
int i;
return mono_method_desc_search_in_class (desc, klass);
}
- tdef = mono_image_get_table_info (image, MONO_TABLE_TYPEDEF);
+ /* FIXME: Is this call necessary? We don't use its result. */
+ mono_image_get_table_info (image, MONO_TABLE_TYPEDEF);
methods = mono_image_get_table_info (image, MONO_TABLE_METHOD);
for (i = 0; i < mono_table_info_get_rows (methods); ++i) {
guint32 token = mono_metadata_decode_row_col (methods, i, MONO_METHOD_NAME);
size_t len2;
char *blob2 = NULL;
- if (!method->klass->image->dynamic) {
+ if (!image_is_dynamic (method->klass->image) && !method_is_dynamic (method)) {
token = read32 (ip);
blob = mono_metadata_user_string (method->klass->image, mono_metadata_token_index (token));
if (dh->newline)
g_string_append (str, dh->newline);
+ mono_metadata_free_mh (header);
return ip;
}
MonoArray *array = (MonoArray*)obj;
sep = print_name_space (klass);
g_print ("%s%s", sep, klass->name);
- g_print (" at %p, rank: %d, length: %d\n", obj, klass->rank, mono_array_length (array));
+ g_print (" at %p, rank: %d, length: %d\n", obj, klass->rank, (int)mono_array_length (array));
} else {
sep = print_name_space (klass);
g_print ("%s%s", sep, klass->name);
if (!vtable)
return;
- if (!(addr = vtable->data))
+ if (!(addr = mono_vtable_get_static_field_data (vtable)))
return;
for (p = klass; p != NULL; p = p->parent) {
}
}
}
-