projects
/
mono.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Add null check for target to optimized delegate constructor code path. Fixes case...
[mono.git]
/
mono
/
mini
/
mini-gc.c
diff --git
a/mono/mini/mini-gc.c
b/mono/mini/mini-gc.c
index 47265e1d10f50156070c8372ba7447619fb12436..3b5463e80fb1c16626c54ad26547553a3fbee682 100644
(file)
--- a/
mono/mini/mini-gc.c
+++ b/
mono/mini/mini-gc.c
@@
-1,11
+1,13
@@
-/*
- * mini-gc.c: GC interface for the mono JIT
+/**
+ * \file
+ * GC interface for the mono JIT
*
* Author:
* Zoltan Varga (vargaz@gmail.com)
*
* Copyright 2009 Novell, Inc (http://www.novell.com)
* Copyright 2011 Xamarin, Inc (http://www.xamarin.com)
*
* Author:
* Zoltan Varga (vargaz@gmail.com)
*
* Copyright 2009 Novell, Inc (http://www.novell.com)
* Copyright 2011 Xamarin, Inc (http://www.xamarin.com)
+ * Licensed under the MIT license. See LICENSE file in the project root for full license information.
*/
#include "config.h"
*/
#include "config.h"
@@
-649,7
+651,7
@@
thread_suspend_func (gpointer user_data, void *sigctx, MonoContext *ctx)
} else {
tls->unwind_state.valid = FALSE;
}
} else {
tls->unwind_state.valid = FALSE;
}
- tls->unwind_state.unwind_data [MONO_UNWIND_DATA_JIT_TLS] = mono_
native_tls_get_value (mono_jit_tls_id
);
+ tls->unwind_state.unwind_data [MONO_UNWIND_DATA_JIT_TLS] = mono_
tls_get_jit_tls (
);
tls->unwind_state.unwind_data [MONO_UNWIND_DATA_DOMAIN] = mono_domain_get ();
}
tls->unwind_state.unwind_data [MONO_UNWIND_DATA_DOMAIN] = mono_domain_get ();
}
@@
-923,8
+925,11
@@
conservative_pass (TlsData *tls, guint8 *stack_start, guint8 *stack_end)
* Debugging aid to control the number of frames scanned precisely
*/
if (!precise_frame_limit_inited) {
* Debugging aid to control the number of frames scanned precisely
*/
if (!precise_frame_limit_inited) {
- if (g_getenv ("MONO_PRECISE_COUNT"))
- precise_frame_limit = atoi (g_getenv ("MONO_PRECISE_COUNT"));
+ char *mono_precise_count = g_getenv ("MONO_PRECISE_COUNT");
+ if (mono_precise_count) {
+ precise_frame_limit = atoi (mono_precise_count);
+ g_free (mono_precise_count);
+ }
precise_frame_limit_inited = TRUE;
}
precise_frame_limit_inited = TRUE;
}
@@
-1279,10
+1284,13
@@
mini_gc_init_gc_map (MonoCompile *cfg)
static int precise_count;
precise_count ++;
static int precise_count;
precise_count ++;
- if (g_getenv ("MONO_GCMAP_COUNT")) {
- if (precise_count == atoi (g_getenv ("MONO_GCMAP_COUNT")))
+ char *mono_gcmap_count = g_getenv ("MONO_GCMAP_COUNT");
+ if (mono_gcmap_count) {
+ int count = atoi (mono_gcmap_count);
+ g_free (mono_gcmap_count);
+ if (precise_count == count)
printf ("LAST: %s\n", mono_method_full_name (cfg->method, TRUE));
printf ("LAST: %s\n", mono_method_full_name (cfg->method, TRUE));
- if (precise_count >
atoi (g_getenv ("MONO_GCMAP_COUNT"))
)
+ if (precise_count >
count
)
return;
}
}
return;
}
}
@@
-2502,6
+2510,7
@@
parse_debug_options (void)
exit (1);
}
g_strfreev (opts);
exit (1);
}
g_strfreev (opts);
+ g_free (env);
}
void
}
void