[llvm] Fix a crash in JIT mode. (#34766)
authormonojenkins <jo.shields+jenkins@xamarin.com>
Thu, 9 Apr 2020 21:07:33 +0000 (17:07 -0400)
committerGitHub <noreply@github.com>
Thu, 9 Apr 2020 21:07:33 +0000 (17:07 -0400)
Co-authored-by: vargaz <vargaz@users.noreply.github.com>
src/mono/mono/eglib/gptrarray.c
src/mono/mono/mini/aot-runtime.h
src/mono/mono/mini/mini-llvm.c

index d18d3e8..09ea774 100644 (file)
@@ -40,10 +40,9 @@ typedef struct _GPtrArrayPriv {
 static void 
 g_ptr_array_grow(GPtrArrayPriv *array, guint length)
 {
+       g_assert (array);
        guint new_length = array->len + length;
 
-       g_return_if_fail(array != NULL);
-
        if(new_length <= array->size) {
                return;
        }
@@ -84,8 +83,8 @@ gpointer *
 g_ptr_array_free(GPtrArray *array, gboolean free_seg)
 {
        gpointer *data = NULL;
-       
-       g_return_val_if_fail(array != NULL, NULL);
+
+       g_assert (array);
 
        if(free_seg) {
                g_free(array->pdata);
@@ -101,7 +100,7 @@ g_ptr_array_free(GPtrArray *array, gboolean free_seg)
 void
 g_ptr_array_set_size(GPtrArray *array, gint length)
 {
-       g_return_if_fail(array != NULL);
+       g_assert (array);
 
        if((size_t)length > array->len) {
                g_ptr_array_grow((GPtrArrayPriv *)array, length);
@@ -115,7 +114,7 @@ g_ptr_array_set_size(GPtrArray *array, gint length)
 void
 g_ptr_array_add(GPtrArray *array, gpointer data)
 {
-       g_return_if_fail(array != NULL);
+       g_assert (array);
        g_ptr_array_grow((GPtrArrayPriv *)array, 1);
        array->pdata[array->len++] = data;
 }
@@ -124,8 +123,8 @@ gpointer
 g_ptr_array_remove_index(GPtrArray *array, guint index)
 {
        gpointer removed_node;
-       
-       g_return_val_if_fail(array != NULL, NULL);
+
+       g_assert (array);
        g_return_val_if_fail(index < array->len, NULL);
 
        removed_node = array->pdata[index];
@@ -146,7 +145,7 @@ g_ptr_array_remove_index_fast(GPtrArray *array, guint index)
 {
        gpointer removed_node;
 
-       g_return_val_if_fail(array != NULL, NULL);
+       g_assert (array);
        g_return_val_if_fail(index < array->len, NULL);
 
        removed_node = array->pdata[index];
@@ -167,7 +166,7 @@ g_ptr_array_remove(GPtrArray *array, gpointer data)
 {
        guint i;
 
-       g_return_val_if_fail(array != NULL, FALSE);
+       g_assert (array);
 
        for(i = 0; i < array->len; i++) {
                if(array->pdata[i] == data) {
@@ -184,7 +183,7 @@ g_ptr_array_remove_fast(GPtrArray *array, gpointer data)
 {
        guint i;
 
-       g_return_val_if_fail(array != NULL, FALSE);
+       g_assert (array);
 
        for(i = 0; i < array->len; i++) {
                if(array->pdata[i] == data) {
@@ -213,14 +212,14 @@ g_ptr_array_foreach(GPtrArray *array, GFunc func, gpointer user_data)
 void
 g_ptr_array_sort(GPtrArray *array, GCompareFunc compare)
 {
-       g_return_if_fail(array != NULL);
+       g_assert (array);
        mono_qsort (array->pdata, array->len, sizeof(gpointer), compare);
 }
 
 void
 g_ptr_array_sort_with_data (GPtrArray *array, GCompareDataFunc compare, gpointer user_data)
 {
-       g_return_if_fail (array != NULL);
+       g_assert (array);
        
        g_qsort_with_data (array->pdata, array->len, sizeof (gpointer), compare, user_data);
 }
index 57dd480..c8b2f1c 100644 (file)
@@ -11,7 +11,7 @@
 #include "mini.h"
 
 /* Version number of the AOT file format */
-#define MONO_AOT_FILE_VERSION 176
+#define MONO_AOT_FILE_VERSION 177
 
 #define MONO_AOT_TRAMP_PAGE_SIZE 16384
 
index 25208f9..664582a 100644 (file)
@@ -9853,7 +9853,8 @@ after_codegen_1:
                mono_llvm_add_func_attr (method, LLVM_ATTR_NO_INLINE);
 
 after_codegen:
-       g_ptr_array_add (ctx->module->cfgs, cfg);
+       if (cfg->compile_aot)
+               g_ptr_array_add (ctx->module->cfgs, cfg);
        if (cfg->llvm_only) {
                /*
                 * Add the contents of ctx->callsite_list to module->callsite_list.