Merge pull request #811 from criteo/16334-ConcurrentBag
[mono.git] / mono / metadata / mono-debug.c
index 0391408b6d3586c229b0d15edc1ea03b2cf786de..6eff0ecbda320d6a165b4be0582e800fa2fdc057 100644 (file)
@@ -198,7 +198,10 @@ lookup_data_table (MonoDomain *domain)
        MonoDebugDataTable *table;
 
        table = g_hash_table_lookup (data_table_hash, domain);
-       g_assert (table);
+       if (!table) {
+               g_error ("lookup_data_table () failed for %p\n", domain);
+               g_assert (table);
+       }
        return table;
 }
 
@@ -649,6 +652,12 @@ mono_debug_add_method (MonoMethod *method, MonoDebugMethodJitInfo *jit, MonoDoma
        for (i = 0; i < jit->num_locals; i++)
                write_variable (&jit->locals [i], ptr, &ptr);
 
+       *ptr++ = jit->gsharedvt_info_var ? 1 : 0;
+       if (jit->gsharedvt_info_var) {
+               write_variable (jit->gsharedvt_info_var, ptr, &ptr);
+               write_variable (jit->gsharedvt_locals_var, ptr, &ptr);
+       }
+
        size = ptr - oldptr;
        g_assert (size < max_size);
        total_size = size + sizeof (MonoDebugMethodAddress);
@@ -824,6 +833,8 @@ mono_debug_free_method_jit_info (MonoDebugMethodJitInfo *jit)
        g_free (jit->this_var);
        g_free (jit->params);
        g_free (jit->locals);
+       g_free (jit->gsharedvt_info_var);
+       g_free (jit->gsharedvt_locals_var);
        g_free (jit);
 }
 
@@ -868,6 +879,13 @@ mono_debug_read_method (MonoDebugMethodAddress *address)
        for (i = 0; i < jit->num_locals; i++)
                read_variable (&jit->locals [i], ptr, &ptr);
 
+       if (*ptr++) {
+               jit->gsharedvt_info_var = g_new0 (MonoDebugVarInfo, 1);
+               jit->gsharedvt_locals_var = g_new0 (MonoDebugVarInfo, 1);
+               read_variable (jit->gsharedvt_info_var, ptr, &ptr);
+               read_variable (jit->gsharedvt_locals_var, ptr, &ptr);
+       }
+
        return jit;
 }