* Author:
* Paolo Molaro (lupus@ximian.com)
*
- * (C) 2002 Ximian, Inc. http://www.ximian.com
- *
+ * Copyright 2002-2003 Ximian, Inc (http://www.ximian.com)
+ * Copyright 2004-2009 Novell, Inc (http://www.novell.com)
*/
#include "config.h"
image = mb->method->klass->image;
- mono_loader_lock ();
+ mono_loader_lock (); /*FIXME I think this lock can go.*/
if (mb->dynamic) {
method = mb->method;
+ mw = (MonoMethodWrapper*)method;
method->name = mb->name;
method->dynamic = TRUE;
- ((MonoMethodNormal *)method)->header = header = (MonoMethodHeader *)
- g_malloc0 (sizeof (MonoMethodHeader) + mb->locals * sizeof (MonoType *));
+ mw->header = header = (MonoMethodHeader *)
+ g_malloc0 (MONO_SIZEOF_METHOD_HEADER + mb->locals * sizeof (MonoType *));
header->code = mb->code;
method = mono_image_alloc0 (image, sizeof (MonoMethodWrapper));
memcpy (method, mb->method, sizeof (MonoMethodWrapper));
+ mw = (MonoMethodWrapper*) method;
if (mb->no_dup_name)
method->name = mb->name;
else
method->name = mono_image_strdup (image, mb->name);
- ((MonoMethodNormal *)method)->header = header = (MonoMethodHeader *)
- mono_image_alloc0 (image, sizeof (MonoMethodHeader) + mb->locals * sizeof (MonoType *));
+ mw->header = header = (MonoMethodHeader *)
+ mono_image_alloc0 (image, MONO_SIZEOF_METHOD_HEADER + mb->locals * sizeof (MonoType *));
header->code = mono_image_alloc (image, mb->pos);
memcpy ((char*)header->code, mb->code, mb->pos);
header->num_locals = mb->locals;
header->init_locals = TRUE;
- mw = (MonoMethodWrapper*) mb->method;
+ header->num_clauses = mb->num_clauses;
+ header->clauses = mb->clauses;
+
+ method->skip_visibility = mb->skip_visibility;
+
i = g_list_length (mw->method_data);
if (i) {
GList *tmp;
}
g_list_free (l);
- ((MonoMethodWrapper*)method)->method_data = data;
+ mw->method_data = data;
}
/*{
static int total_code = 0;
mono_mb_emit_byte (mb, CEE_ADD);
mono_mb_emit_stloc (mb, local);
}
+
+void
+mono_mb_set_clauses (MonoMethodBuilder *mb, int num_clauses, MonoExceptionClause *clauses)
+{
+ mb->num_clauses = num_clauses;
+ mb->clauses = clauses;
+}