[profiler] Add an image pointer field to assembly load events.
authorAlex Rønne Petersen <alexrp@xamarin.com>
Sun, 18 Jun 2017 03:45:58 +0000 (05:45 +0200)
committerAlex Rønne Petersen <alexrp@xamarin.com>
Mon, 19 Jun 2017 22:31:14 +0000 (00:31 +0200)
mono/profiler/log.c
mono/profiler/mprof-report.c

index 7a04f7620a5c42de7a950aaa4937c69567a51fc2..223bdb008b1af4f51152f211dc78d04a0a206868 100644 (file)
@@ -1847,17 +1847,20 @@ assembly_loaded (MonoProfiler *prof, MonoAssembly *assembly, int result)
 
        char *name = mono_stringify_assembly_name (mono_assembly_get_name (assembly));
        int nlen = strlen (name) + 1;
+       MonoImage *image = mono_assembly_get_image (assembly);
 
        ENTER_LOG (&assembly_loads_ctr, logbuffer,
                EVENT_SIZE /* event */ +
                BYTE_SIZE /* type */ +
                LEB128_SIZE /* assembly */ +
+               LEB128_SIZE /* image */ +
                nlen /* name */
        );
 
        emit_event (logbuffer, TYPE_END_LOAD | TYPE_METADATA);
        emit_byte (logbuffer, TYPE_ASSEMBLY);
        emit_ptr (logbuffer, assembly);
+       emit_ptr (logbuffer, image);
        memcpy (logbuffer->cursor, name, nlen);
        logbuffer->cursor += nlen;
 
@@ -1871,17 +1874,20 @@ assembly_unloaded (MonoProfiler *prof, MonoAssembly *assembly)
 {
        char *name = mono_stringify_assembly_name (mono_assembly_get_name (assembly));
        int nlen = strlen (name) + 1;
+       MonoImage *image = mono_assembly_get_image (assembly);
 
        ENTER_LOG (&assembly_unloads_ctr, logbuffer,
                EVENT_SIZE /* event */ +
                BYTE_SIZE /* type */ +
                LEB128_SIZE /* assembly */ +
+               LEB128_SIZE /* image */ +
                nlen /* name */
        );
 
        emit_event (logbuffer, TYPE_END_UNLOAD | TYPE_METADATA);
        emit_byte (logbuffer, TYPE_ASSEMBLY);
        emit_ptr (logbuffer, assembly);
+       emit_ptr (logbuffer, image);
        memcpy (logbuffer->cursor, name, nlen);
        logbuffer->cursor += nlen;
 
index eab9d32a00ef87ba154eb8e99cda6c1244d8263b..407da0637593c9de276661d97b62bda7165716d1 100644 (file)
@@ -2494,6 +2494,8 @@ decode_buffer (ProfContext *ctx)
                                while (*p) p++;
                                p++;
                        } else if (mtype == TYPE_ASSEMBLY) {
+                               if (ctx->data_version > 13)
+                                       decode_sleb128 (p, &p); // image
                                if (ctx->data_version < 13)
                                        decode_uleb128 (p, &p); /* flags */
                                if (debug)