2004-09-28 Zoltan Varga <vargaz@freemail.hu>
authorZoltan Varga <vargaz@gmail.com>
Mon, 27 Sep 2004 22:36:24 +0000 (22:36 -0000)
committerZoltan Varga <vargaz@gmail.com>
Mon, 27 Sep 2004 22:36:24 +0000 (22:36 -0000)
* driver.c mini.h trace.c: Move the setting of the main assembly into
a separate function called mono_trace_set_assembly () and call it after
actually loading the main assembly. Fixes #66872.

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

mono/mini/ChangeLog
mono/mini/driver.c
mono/mini/mini.h
mono/mini/trace.c

index 0844db29367861f423f42ce08971161b6d5ee188..687a48f5f8004f19612f2753884806c3f7e53028 100644 (file)
@@ -1,3 +1,9 @@
+2004-09-28  Zoltan Varga  <vargaz@freemail.hu>
+
+       * driver.c mini.h trace.c: Move the setting of the main assembly into
+       a separate function called mono_trace_set_assembly () and call it after
+       actually loading the main assembly. Fixes #66872.
+
 2004-09-25  Zoltan Varga  <vargaz@freemail.hu>
 
        * mini-amd64.h mini-amd64.c tramp-amd64.c: Allocate trampoline memory
index adac0bcd0eaa20492c8365a175d75a9dadefaa94..147324298c1792eb163cdd703e6895fa8e81bf28 100644 (file)
@@ -732,7 +732,7 @@ mono_main (int argc, char* argv[])
                 * Need to call this before mini_init () so we can trace methods 
                 * compiled there too.
                 */
-               mono_jit_trace_calls = mono_trace_parse_options (assembly, trace_options);
+               mono_jit_trace_calls = mono_trace_parse_options (trace_options);
                if (mono_jit_trace_calls == NULL)
                        exit (1);
        }
@@ -800,6 +800,9 @@ mono_main (int argc, char* argv[])
                return 2;
        }
 
+       if (trace_options != NULL)
+               mono_trace_set_assembly (assembly);
+
        if (enable_debugging)
                mono_debug_init_2 (assembly);
 
index e88cae992de8f5dfaf4e291d7d0eea084baf1225..f88da45ba28692157dd299ce1c9a673273bdd220 100644 (file)
@@ -834,7 +834,8 @@ void      mono_debug_add_icall_wrapper          (MonoMethod *method, MonoJitICal
 
 
 /* Tracing */
-MonoTraceSpec *mono_trace_parse_options         (MonoAssembly *assembly, char *options);
+MonoTraceSpec *mono_trace_parse_options         (char *options);
+void           mono_trace_set_assembly          (MonoAssembly *assembly);
 gboolean       mono_trace_eval                  (MonoMethod *method);
 
 extern void
index 732f75edf7baa9af4ed9f70352ad12b95e90ca94..b91d0db528d476a925a32e1de8049fe329356325 100644 (file)
@@ -33,7 +33,7 @@ mono_trace_eval (MonoMethod *method)
                case MONO_TRACEOP_ALL:
                        inc = 1; break;
                case MONO_TRACEOP_PROGRAM:
-                       if (method->klass->image == mono_assembly_get_image (trace_spec.assembly))
+                       if (trace_spec.assembly && (method->klass->image == mono_assembly_get_image (trace_spec.assembly)))
                                inc = 1; break;
                case MONO_TRACEOP_METHOD:
                        if (mono_method_desc_match ((MonoMethodDesc *) op->data, method))
@@ -201,15 +201,13 @@ get_spec (int *last)
 }
 
 MonoTraceSpec *
-mono_trace_parse_options (MonoAssembly *assembly, char *options)
+mono_trace_parse_options (char *options)
 {
        char *p = options;
        int size = 1;
        int last_used;
        int token;
        
-       trace_spec.assembly = assembly;
-       
        if (*p == 0){
                trace_spec.len = 1;
                trace_spec.ops = g_new0 (MonoTraceOperation, 1);
@@ -237,6 +235,12 @@ mono_trace_parse_options (MonoAssembly *assembly, char *options)
        return &trace_spec;
 }
 
+void
+mono_trace_set_assembly (MonoAssembly *assembly)
+{
+       trace_spec.assembly = assembly;
+}
+
 static int indent_level = 0;
 
 static void indent (int diff) {