Author: zoltan
Date: 2007-12-23 19:33:18 -0500 (Sun, 23 Dec 2007)
New Revision: 91849
Modified:
trunk/mono/mono/metadata/Makefile.am
trunk/mono/mono/metadata/marshal.c
Log:
2007-12-24 Zoltan Varga <[EMAIL PROTECTED]>
* method-builder.h: New file, moved the mono_mb_ declarations here from
marshal.h.
* boehm-gc.c marshal.c: Include method-builder.h.
* marshal.c: Use mono_mb_emit_branch_label () in a few places.
Modified: trunk/mono/mono/metadata/Makefile.am
===================================================================
--- trunk/mono/mono/metadata/Makefile.am 2007-12-24 00:32:56 UTC (rev
91848)
+++ trunk/mono/mono/metadata/Makefile.am 2007-12-24 00:33:18 UTC (rev
91849)
@@ -53,6 +53,7 @@
sgen-gc.h \
gc.c \
gc-internal.h \
+ method-builder.h \
method-builder.c \
marshal.c \
marshal.h \
Modified: trunk/mono/mono/metadata/marshal.c
===================================================================
--- trunk/mono/mono/metadata/marshal.c 2007-12-24 00:32:56 UTC (rev 91848)
+++ trunk/mono/mono/metadata/marshal.c 2007-12-24 00:33:18 UTC (rev 91849)
@@ -12,6 +12,7 @@
#include "object.h"
#include "loader.h"
#include "metadata/marshal.h"
+#include "metadata/method-builder.h"
#include "metadata/tabledefs.h"
#include "metadata/exception.h"
#include "metadata/appdomain.h"
@@ -46,17 +47,6 @@
};
#undef OPDEF
-struct _MonoMethodBuilder {
- MonoMethod *method;
- char *name;
- GList *locals_list;
- int locals;
- gboolean dynamic;
- gboolean no_dup_name;
- guint32 code_size, pos;
- unsigned char *code;
-};
-
struct _MonoRemotingMethods {
MonoMethod *invoke;
MonoMethod *invoke_with_check;
@@ -1199,9 +1189,7 @@
mono_mb_emit_byte (mb, MONO_CUSTOM_PREFIX);
mono_mb_emit_byte (mb, CEE_MONO_CLASSCONST);
mono_mb_emit_i4 (mb, mono_mb_add_data (mb,
mono_defaults.transparent_proxy_class));
- mono_mb_emit_byte (mb, branch_code);
- pos = mb->pos;
- mono_mb_emit_i4 (mb, 0);
+ pos = mono_mb_emit_branch (mb, branch_code);
return pos;
}
@@ -1214,9 +1202,7 @@
mono_mb_emit_ldflda (mb, G_STRUCT_OFFSET (MonoRealProxy,
target_domain_id));
mono_mb_emit_byte (mb, CEE_LDIND_I4);
mono_mb_emit_icon (mb, -1);
- mono_mb_emit_byte (mb, branch_code);
- pos = mb->pos;
- mono_mb_emit_i4 (mb, 0);
+ pos = mono_mb_emit_branch (mb, branch_code);
return pos;
}
@@ -1455,8 +1441,7 @@
/* Loop footer */
mono_mb_emit_add_to_local (mb, index_var, 1);
- mono_mb_emit_byte (mb, CEE_BR);
- mono_mb_emit_i4 (mb, label2 - (mb->pos + 4));
+ mono_mb_emit_branch_label (mb, CEE_BR, label2);
mono_mb_patch_branch (mb, label3);
@@ -1883,8 +1868,7 @@
/* Loop footer */
mono_mb_emit_add_to_local (mb, index_var, 1);
- mono_mb_emit_byte (mb, CEE_BR);
- mono_mb_emit_i4 (mb, label2 - (mb->pos + 4));
+ mono_mb_emit_branch_label (mb, CEE_BR, label2);
mono_mb_patch_branch (mb, label3);
@@ -3765,7 +3749,7 @@
/* Main exception catch */
main_clause->flags = MONO_EXCEPTION_CLAUSE_NONE;
- main_clause->try_len = mb->pos - main_clause->try_offset;
+ main_clause->try_len = mono_mb_get_pos (mb) - main_clause->try_offset;
main_clause->data.catch_class = mono_defaults.object_class;
/* handler code */
@@ -3776,7 +3760,7 @@
mono_mb_emit_ldloc (mb, loc_serialized_exc);
mono_mb_emit_byte (mb, CEE_STIND_REF);
mono_mb_emit_branch (mb, CEE_LEAVE);
- main_clause->handler_len = mb->pos - main_clause->handler_offset;
+ main_clause->handler_len = mono_mb_get_pos (mb) -
main_clause->handler_offset;
/* end catch */
mono_mb_patch_branch (mb, pos_leave);
@@ -4779,7 +4763,7 @@
mono_mb_patch_short_branch (mb, posna);
mono_mb_emit_branch (mb, CEE_LEAVE);
- clause->handler_len = mb->pos - clause->handler_offset;
+ clause->handler_len = mono_mb_get_pos (mb) - clause->handler_offset;
/* return result */
mono_mb_patch_branch (mb, pos);
@@ -7286,8 +7270,7 @@
mono_mb_emit_add_to_local (mb, index_var, 1);
mono_mb_emit_add_to_local (mb, dest_ptr, esize);
- mono_mb_emit_byte (mb, CEE_BR);
- mono_mb_emit_i4 (mb, label2 - (mb->pos + 4));
+ mono_mb_emit_branch_label (mb, CEE_BR, label2);
mono_mb_patch_branch (mb, label3);
@@ -7412,8 +7395,7 @@
mono_mb_emit_add_to_local (mb, index_var, 1);
mono_mb_emit_add_to_local (mb, src_ptr, esize);
- mono_mb_emit_byte (mb, CEE_BR);
- mono_mb_emit_i4 (mb, label2 - (mb->pos + 4));
+ mono_mb_emit_branch_label (mb, CEE_BR, label2);
mono_mb_patch_branch (mb, label1);
mono_mb_patch_branch (mb, label3);
@@ -7603,8 +7585,7 @@
mono_mb_emit_add_to_local (mb, index_var, 1);
mono_mb_emit_add_to_local (mb, src_ptr, esize);
- mono_mb_emit_byte (mb, CEE_BR);
- mono_mb_emit_i4 (mb, label2 - (mb->pos + 4));
+ mono_mb_emit_branch_label (mb, CEE_BR, label2);
mono_mb_patch_branch (mb, label1);
mono_mb_patch_branch (mb, label3);
@@ -7724,8 +7705,7 @@
mono_mb_emit_add_to_local (mb, index_var, 1);
mono_mb_emit_add_to_local (mb, dest_ptr, esize);
- mono_mb_emit_byte (mb, CEE_BR);
- mono_mb_emit_i4 (mb, label2 - (mb->pos + 4));
+ mono_mb_emit_branch_label (mb, CEE_BR, label2);
mono_mb_patch_branch (mb, label1);
mono_mb_patch_branch (mb, label3);
@@ -7820,8 +7800,7 @@
mono_mb_emit_add_to_local (mb, index_var, 1);
mono_mb_emit_add_to_local (mb, dest, esize);
- mono_mb_emit_byte (mb, CEE_BR);
- mono_mb_emit_i4 (mb, label2 - (mb->pos + 4));
+ mono_mb_emit_branch_label (mb, CEE_BR, label2);
mono_mb_patch_branch (mb, label3);
mono_mb_patch_branch (mb, label1);
@@ -9200,7 +9179,7 @@
pos = mono_mb_emit_branch (mb, CEE_LEAVE);
- clause->try_len = mb->pos - clause->try_offset;
+ clause->try_len = mono_mb_get_pos (mb) - clause->try_offset;
clause->handler_offset = mono_mb_get_label (mb);
/* Call Monitor::Exit() */
@@ -9209,7 +9188,7 @@
mono_mb_emit_managed_call (mb, exit_method, NULL);
mono_mb_emit_byte (mb, CEE_ENDFINALLY);
- clause->handler_len = mb->pos - clause->handler_offset;
+ clause->handler_len = mono_mb_get_pos (mb) - clause->handler_offset;
mono_mb_patch_branch (mb, pos);
if (!MONO_TYPE_IS_VOID (sig->ret))
@@ -11493,7 +11472,7 @@
/* Main exception catch */
main_clause->flags = MONO_EXCEPTION_CLAUSE_NONE;
- main_clause->try_len = mb->pos - main_clause->try_offset;
+ main_clause->try_len = mono_mb_get_pos (mb) -
main_clause->try_offset;
main_clause->data.catch_class = mono_defaults.object_class;
/* handler code */
@@ -11501,7 +11480,7 @@
mono_mb_emit_managed_call (mb, get_hr_for_exception, NULL);
mono_mb_emit_stloc (mb, hr);
mono_mb_emit_branch (mb, CEE_LEAVE);
- main_clause->handler_len = mb->pos -
main_clause->handler_offset;
+ main_clause->handler_len = mono_mb_get_pos (mb) -
main_clause->handler_offset;
/* end catch */
mono_mb_patch_branch (mb, pos_leave);
_______________________________________________
Mono-patches maillist - [email protected]
http://lists.ximian.com/mailman/listinfo/mono-patches