Author: zoltan
Date: 2007-12-23 19:32:56 -0500 (Sun, 23 Dec 2007)
New Revision: 91848

Added:
   trunk/mono/mono/metadata/method-builder.h
Modified:
   trunk/mono/mono/metadata/ChangeLog
   trunk/mono/mono/metadata/boehm-gc.c
   trunk/mono/mono/metadata/marshal.h
   trunk/mono/mono/metadata/method-builder.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/ChangeLog
===================================================================
--- trunk/mono/mono/metadata/ChangeLog  2007-12-23 23:48:30 UTC (rev 91847)
+++ trunk/mono/mono/metadata/ChangeLog  2007-12-24 00:32:56 UTC (rev 91848)
@@ -1,5 +1,12 @@
 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.
+
        * marshal.c: Remove some code which is now in method-builder.c.
 
 2007-12-23  Zoltan Varga  <[EMAIL PROTECTED]>

Modified: trunk/mono/mono/metadata/boehm-gc.c
===================================================================
--- trunk/mono/mono/metadata/boehm-gc.c 2007-12-23 23:48:30 UTC (rev 91847)
+++ trunk/mono/mono/metadata/boehm-gc.c 2007-12-24 00:32:56 UTC (rev 91848)
@@ -10,7 +10,7 @@
 #include <mono/metadata/gc-internal.h>
 #include <mono/metadata/profiler-private.h>
 #include <mono/metadata/class-internals.h>
-#include <mono/metadata/marshal.h>
+#include <mono/metadata/method-builder.h>
 #include <mono/metadata/opcodes.h>
 #include <mono/utils/mono-logger.h>
 

Modified: trunk/mono/mono/metadata/marshal.h
===================================================================
--- trunk/mono/mono/metadata/marshal.h  2007-12-23 23:48:30 UTC (rev 91847)
+++ trunk/mono/mono/metadata/marshal.h  2007-12-24 00:32:56 UTC (rev 91848)
@@ -20,8 +20,6 @@
 
 G_BEGIN_DECLS
 
-typedef struct _MonoMethodBuilder MonoMethodBuilder;
-
 /* marshaling helper functions */
 
 void
@@ -93,107 +91,6 @@
 MonoMethod*
 mono_marshal_get_write_barrier (void) MONO_INTERNAL;
 
-/* method builder functions */
-
-MonoMethodBuilder *
-mono_mb_new (MonoClass *klass, const char *name, MonoWrapperType type) 
MONO_INTERNAL;
-
-MonoMethodBuilder *
-mono_mb_new_no_dup_name (MonoClass *klass, const char *name, MonoWrapperType 
type) MONO_INTERNAL;
-
-void
-mono_mb_free (MonoMethodBuilder *mb) MONO_INTERNAL;
-
-void
-mono_mb_patch_addr (MonoMethodBuilder *mb, int pos, int value) MONO_INTERNAL;
-
-void
-mono_mb_patch_addr_s (MonoMethodBuilder *mb, int pos, gint8 value) 
MONO_INTERNAL;
-
-void
-mono_mb_patch_branch (MonoMethodBuilder *mb, guint32 pos) MONO_INTERNAL;
-
-void
-mono_mb_patch_short_branch (MonoMethodBuilder *mb, guint32 pos) MONO_INTERNAL;
-
-int
-mono_mb_get_label (MonoMethodBuilder *mb) MONO_INTERNAL;
-
-guint32
-mono_mb_add_data (MonoMethodBuilder *mb, gpointer data) MONO_INTERNAL;
-
-void
-mono_mb_emit_ptr (MonoMethodBuilder *mb, gpointer ptr) MONO_INTERNAL;
-
-void
-mono_mb_emit_calli (MonoMethodBuilder *mb, MonoMethodSignature *sig) 
MONO_INTERNAL;
-
-void
-mono_mb_emit_native_call (MonoMethodBuilder *mb, MonoMethodSignature *sig, 
gpointer func) MONO_INTERNAL;
-
-void
-mono_mb_emit_managed_call (MonoMethodBuilder *mb, MonoMethod *method, 
MonoMethodSignature *opt_sig) MONO_INTERNAL;
-
-void
-mono_mb_emit_icall (MonoMethodBuilder *mb, gpointer func) MONO_INTERNAL;
-
-int
-mono_mb_add_local (MonoMethodBuilder *mb, MonoType *type) MONO_INTERNAL;
-
-MonoMethod *
-mono_mb_create_method (MonoMethodBuilder *mb, MonoMethodSignature *signature, 
int max_stack) MONO_INTERNAL;
-
-void
-mono_mb_emit_ldarg (MonoMethodBuilder *mb, guint argnum) MONO_INTERNAL;
-
-void
-mono_mb_emit_ldarg_addr (MonoMethodBuilder *mb, guint argnum) MONO_INTERNAL;
-
-void
-mono_mb_emit_ldloc (MonoMethodBuilder *mb, guint num) MONO_INTERNAL;
-
-void
-mono_mb_emit_ldloc_addr (MonoMethodBuilder *mb, guint locnum) MONO_INTERNAL;
-
-void
-mono_mb_emit_stloc (MonoMethodBuilder *mb, guint num) MONO_INTERNAL;
-
-void
-mono_mb_emit_exception (MonoMethodBuilder *mb, const char *exc_name, const 
char *msg) MONO_INTERNAL;
-
-void
-mono_mb_emit_exception_full (MonoMethodBuilder *mb, const char *exc_nspace, 
const char *exc_name, const char *msg) MONO_INTERNAL;
-
-void
-mono_mb_emit_icon (MonoMethodBuilder *mb, gint32 value) MONO_INTERNAL;
-
-guint32
-mono_mb_emit_branch (MonoMethodBuilder *mb, guint8 op) MONO_INTERNAL;
-
-guint32
-mono_mb_emit_short_branch (MonoMethodBuilder *mb, guint8 op) MONO_INTERNAL;
-
-void
-mono_mb_emit_add_to_local (MonoMethodBuilder *mb, guint16 local, gint32 incr) 
MONO_INTERNAL;
-
-void
-mono_mb_emit_ldflda (MonoMethodBuilder *mb, gint32 offset) MONO_INTERNAL;
-
-void
-mono_mb_emit_byte (MonoMethodBuilder *mb, guint8 op) MONO_INTERNAL;
-
-void
-mono_mb_emit_i2 (MonoMethodBuilder *mb, gint16 data) MONO_INTERNAL;
-
-void
-mono_mb_emit_i4 (MonoMethodBuilder *mb, gint32 data) MONO_INTERNAL;
-
-void
-mono_mb_emit_op (MonoMethodBuilder *mb, guint8 op, gpointer data) 
MONO_INTERNAL;
-
-void
-mono_mb_emit_ldstr (MonoMethodBuilder *mb, char *str) MONO_INTERNAL;
-
 guint
 mono_type_to_ldind (MonoType *type) MONO_INTERNAL;
 

Modified: trunk/mono/mono/metadata/method-builder.c
===================================================================
--- trunk/mono/mono/metadata/method-builder.c   2007-12-23 23:48:30 UTC (rev 
91847)
+++ trunk/mono/mono/metadata/method-builder.c   2007-12-24 00:32:56 UTC (rev 
91848)
@@ -9,22 +9,14 @@
  */
 
 #include "config.h"
-#include "object.h"
 #include "loader.h"
-#include "metadata/marshal.h"
-#include "metadata/tabledefs.h"
-#include "metadata/exception.h"
-#include "metadata/appdomain.h"
+#include "mono/metadata/method-builder.h"
+#include "mono/metadata/tabledefs.h"
+#include "mono/metadata/exception.h"
+#include "mono/metadata/appdomain.h"
 #include "mono/metadata/debug-helpers.h"
-#include "mono/metadata/threadpool.h"
-#include "mono/metadata/threads.h"
-#include "mono/metadata/monitor.h"
 #include "mono/metadata/metadata-internals.h"
 #include "mono/metadata/domain-internals.h"
-#include "mono/metadata/gc-internal.h"
-#include "mono/metadata/threads-types.h"
-#include "mono/metadata/string-icalls.h"
-#include <mono/os/gc_wrapper.h>
 #include <string.h>
 #include <errno.h>
 
@@ -39,17 +31,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;
-};
-
 #ifdef DEBUG_RUNTIME_CODE
 static char*
 indenter (MonoDisHelper *dh, MonoMethod *method, guint32 ip_offset)
@@ -423,6 +404,12 @@
        return mb->pos;
 }
 
+int
+mono_mb_get_pos (MonoMethodBuilder *mb)
+{
+       return mb->pos;
+}
+
 guint32
 mono_mb_emit_branch (MonoMethodBuilder *mb, guint8 op)
 {
@@ -445,6 +432,13 @@
 }
 
 void
+mono_mb_emit_branch_label (MonoMethodBuilder *mb, guint8 op, guint32 label)
+{
+       mono_mb_emit_byte (mb, op);
+       mono_mb_emit_i4 (mb, label - (mb->pos + 4));
+}
+
+void
 mono_mb_patch_branch (MonoMethodBuilder *mb, guint32 pos)
 {
        mono_mb_patch_addr (mb, pos, mb->pos - (pos + 4));

Added: trunk/mono/mono/metadata/method-builder.h
===================================================================
--- trunk/mono/mono/metadata/method-builder.h   2007-12-23 23:48:30 UTC (rev 
91847)
+++ trunk/mono/mono/metadata/method-builder.h   2007-12-24 00:32:56 UTC (rev 
91848)
@@ -0,0 +1,141 @@
+/*
+ * method-builder.h: Functions for creating IL methods at runtime.
+ * 
+ * Author:
+ *   Paolo Molaro ([EMAIL PROTECTED])
+ *
+ * (C) 2002 Ximian, Inc.  http://www.ximian.com
+ *
+ */
+
+#ifndef __MONO_METHOD_BUILDER_H__
+#define __MONO_METHOD_BUILDER_H__
+
+#include <mono/metadata/class.h>
+#include <mono/metadata/object-internals.h>
+#include <mono/metadata/class-internals.h>
+#include <mono/metadata/opcodes.h>
+#include <mono/metadata/reflection.h>
+
+G_BEGIN_DECLS
+
+typedef struct _MonoMethodBuilder {
+       MonoMethod *method;
+       char *name;
+       GList *locals_list;
+       int locals;
+       gboolean dynamic;
+       gboolean no_dup_name;
+       guint32 code_size, pos;
+       unsigned char *code;
+} MonoMethodBuilder;
+
+MonoMethodBuilder *
+mono_mb_new (MonoClass *klass, const char *name, MonoWrapperType type) 
MONO_INTERNAL;
+
+MonoMethodBuilder *
+mono_mb_new_no_dup_name (MonoClass *klass, const char *name, MonoWrapperType 
type) MONO_INTERNAL;
+
+void
+mono_mb_free (MonoMethodBuilder *mb) MONO_INTERNAL;
+
+void
+mono_mb_patch_addr (MonoMethodBuilder *mb, int pos, int value) MONO_INTERNAL;
+
+void
+mono_mb_patch_addr_s (MonoMethodBuilder *mb, int pos, gint8 value) 
MONO_INTERNAL;
+
+void
+mono_mb_patch_branch (MonoMethodBuilder *mb, guint32 pos) MONO_INTERNAL;
+
+void
+mono_mb_patch_short_branch (MonoMethodBuilder *mb, guint32 pos) MONO_INTERNAL;
+
+int
+mono_mb_get_label (MonoMethodBuilder *mb) MONO_INTERNAL;
+
+int
+mono_mb_get_pos (MonoMethodBuilder *mb) MONO_INTERNAL;
+
+guint32
+mono_mb_add_data (MonoMethodBuilder *mb, gpointer data) MONO_INTERNAL;
+
+void
+mono_mb_emit_ptr (MonoMethodBuilder *mb, gpointer ptr) MONO_INTERNAL;
+
+void
+mono_mb_emit_calli (MonoMethodBuilder *mb, MonoMethodSignature *sig) 
MONO_INTERNAL;
+
+void
+mono_mb_emit_native_call (MonoMethodBuilder *mb, MonoMethodSignature *sig, 
gpointer func) MONO_INTERNAL;
+
+void
+mono_mb_emit_managed_call (MonoMethodBuilder *mb, MonoMethod *method, 
MonoMethodSignature *opt_sig) MONO_INTERNAL;
+
+void
+mono_mb_emit_icall (MonoMethodBuilder *mb, gpointer func) MONO_INTERNAL;
+
+int
+mono_mb_add_local (MonoMethodBuilder *mb, MonoType *type) MONO_INTERNAL;
+
+MonoMethod *
+mono_mb_create_method (MonoMethodBuilder *mb, MonoMethodSignature *signature, 
int max_stack) MONO_INTERNAL;
+
+void
+mono_mb_emit_ldarg (MonoMethodBuilder *mb, guint argnum) MONO_INTERNAL;
+
+void
+mono_mb_emit_ldarg_addr (MonoMethodBuilder *mb, guint argnum) MONO_INTERNAL;
+
+void
+mono_mb_emit_ldloc (MonoMethodBuilder *mb, guint num) MONO_INTERNAL;
+
+void
+mono_mb_emit_ldloc_addr (MonoMethodBuilder *mb, guint locnum) MONO_INTERNAL;
+
+void
+mono_mb_emit_stloc (MonoMethodBuilder *mb, guint num) MONO_INTERNAL;
+
+void
+mono_mb_emit_exception (MonoMethodBuilder *mb, const char *exc_name, const 
char *msg) MONO_INTERNAL;
+
+void
+mono_mb_emit_exception_full (MonoMethodBuilder *mb, const char *exc_nspace, 
const char *exc_name, const char *msg) MONO_INTERNAL;
+
+void
+mono_mb_emit_icon (MonoMethodBuilder *mb, gint32 value) MONO_INTERNAL;
+
+guint32
+mono_mb_emit_branch (MonoMethodBuilder *mb, guint8 op) MONO_INTERNAL;
+
+guint32
+mono_mb_emit_short_branch (MonoMethodBuilder *mb, guint8 op) MONO_INTERNAL;
+
+void
+mono_mb_emit_branch_label (MonoMethodBuilder *mb, guint8 op, guint32 label) 
MONO_INTERNAL;
+
+void
+mono_mb_emit_add_to_local (MonoMethodBuilder *mb, guint16 local, gint32 incr) 
MONO_INTERNAL;
+
+void
+mono_mb_emit_ldflda (MonoMethodBuilder *mb, gint32 offset) MONO_INTERNAL;
+
+void
+mono_mb_emit_byte (MonoMethodBuilder *mb, guint8 op) MONO_INTERNAL;
+
+void
+mono_mb_emit_i2 (MonoMethodBuilder *mb, gint16 data) MONO_INTERNAL;
+
+void
+mono_mb_emit_i4 (MonoMethodBuilder *mb, gint32 data) MONO_INTERNAL;
+
+void
+mono_mb_emit_op (MonoMethodBuilder *mb, guint8 op, gpointer data) 
MONO_INTERNAL;
+
+void
+mono_mb_emit_ldstr (MonoMethodBuilder *mb, char *str) MONO_INTERNAL;
+
+G_END_DECLS
+
+#endif /* __MONO_METHOD_BUILDER_H__ */
+

_______________________________________________
Mono-patches maillist  -  [email protected]
http://lists.ximian.com/mailman/listinfo/mono-patches

Reply via email to