2002-07-05 Radek Doulik <rodo@ximian.com>
authorRadek Doulik <rodo@mono-cvs.ximian.com>
Sat, 6 Jul 2002 01:41:14 +0000 (01:41 -0000)
committerRadek Doulik <rodo@mono-cvs.ximian.com>
Sat, 6 Jul 2002 01:41:14 +0000 (01:41 -0000)
* ppc/tramp.c: removed magic hack

svn path=/trunk/mono/; revision=5614

mono/arch/ChangeLog
mono/arch/ppc/tramp.c

index 4f98ea1a1644e9e758d44693ea70bd0953bd8c7c..becdf94b2264fb5eba01f5ac37dfc77ee4585743 100644 (file)
@@ -1,3 +1,6 @@
+2002-07-05  Radek Doulik  <rodo@ximian.com>
+
+       * ppc/tramp.c: removed magic hack
 
 Tue Jun 18 10:21:56 CEST 2002 Paolo Molaro <lupus@ximian.com>
 
index 72d5530ad40f1221e5d9fde4cdbf286d5944a7ca..eb0fd3a14848c6919b5fbe20f4e7635c1a55512b 100644 (file)
@@ -603,12 +603,13 @@ void *
 mono_create_method_pointer (MonoMethod *method)
 {
        MonoMethodSignature *sig;
+       MonoJitInfo *ji;
        guint8 *p, *code_buffer;
        guint i, code_size, stack_size, stackval_arg_pos, local_pos, local_start, reg_param, stack_param;
        guint32 simpletype;
 
-       code_size = 512;
-       stack_size = 512;
+       code_size = 1024;
+       stack_size = 1024;
        stack_param = 0;
 
        sig = method->signature;
@@ -617,14 +618,6 @@ mono_create_method_pointer (MonoMethod *method)
 
        DEBUG (printf ("\nDelegate [start emiting] %s\n", method->name));
 
-       /* jump after header which consist of "Mono" + method ptr */
-       ppc_b (p, 3);
-       *p = 'M'; p ++;
-       *p = 'o'; p ++;
-       *p = 'n'; p ++;
-       *p = 'o'; p ++;
-       *(void **) p = method; p += 4;
-
        /* prolog */
        ppc_stwu (p, ppc_r1, -stack_size, ppc_r1);     /* sp      <--- sp - stack_size, sp[0] <---- sp save sp, alloc stack */
        ppc_mflr (p, ppc_r0);                          /* r0      <--- LR */
@@ -798,20 +791,12 @@ mono_create_method_pointer (MonoMethod *method)
 
        DEBUG (printf ("Delegate [end emiting]\n"));
 
-       return (MonoPIFunc) code_buffer;
-}
+       ji = g_new0 (MonoJitInfo, 1);
+       ji->method = method;
+       ji->code_size = p - code_buffer;
+       ji->code_start = code_buffer;
 
+       mono_jit_info_table_add (mono_root_domain, ji);
 
-/*
- * mono_create_method_pointer () will insert a pointer to the MonoMethod
- * so that the interp can easily get at the data: this function will retrieve 
- * the method from the code stream.
- */
-MonoMethod*
-mono_method_pointer_get (void *code)
-{
-       unsigned char *c = code;
-       if (c [4] != 'M' || c [5] != 'o' || c [6] != 'n' || c [7] != 'o')
-               return NULL;
-       return *(MonoMethod**)(c + 8);
+       return ji->code_start;
 }