if (! ((domain != target_domain) && !info->domain_neutral)) {
MonoVTable *vtable;
- mono_jit_stats.methods_lookups++;
+ InterlockedIncrement (&mono_jit_stats.methods_lookups);
vtable = mono_class_vtable_full (domain, method->klass, error);
if (!is_ok (error))
return NULL;
if (info) {
/* We can't use a domain specific method in another domain */
if (! ((domain != target_domain) && !info->domain_neutral)) {
- mono_jit_stats.methods_lookups++;
+ InterlockedIncrement (&mono_jit_stats.methods_lookups);
if (ji)
*ji = info;
return info->code_start;
void
mini_init_delegate (MonoDelegate *del)
{
- if (mono_llvm_only)
- del->extra_arg = mini_get_delegate_arg (del->method, del->method_ptr);
#ifdef ENABLE_INTERPRETER
if (mono_use_interpreter)
mono_interp_init_delegate (del);
+ else
#endif
+ if (mono_llvm_only)
+ del->extra_arg = mini_get_delegate_arg (del->method, del->method_ptr);
}
char*
MonoJitStats mono_jit_stats = {0};
/**
- * Counters of mono_stats can be read without locking here.
+ * Counters of mono_stats and mono_jit_stats can be read without locking here.
* MONO_NO_SANITIZE_THREAD tells Clang's ThreadSanitizer to hide all reports of these (known) races.
*/
MONO_NO_SANITIZE_THREAD
{
if (mono_jit_stats.enabled) {
g_print ("Mono Jit statistics\n");
- g_print ("Max code size ratio: %.2f (%s)\n", mono_jit_stats.max_code_size_ratio/100.0,
+ g_print ("Max code size ratio: %.2f (%s)\n", mono_jit_stats.max_code_size_ratio / 100.0,
mono_jit_stats.max_ratio_method);
- g_print ("Biggest method: %ld (%s)\n", mono_jit_stats.biggest_method_size,
+ g_print ("Biggest method: %" G_GINT32_FORMAT " (%s)\n", mono_jit_stats.biggest_method_size,
mono_jit_stats.biggest_method);
g_print ("Delegates created: %" G_GINT32_FORMAT "\n", mono_stats.delegate_creations);