var s1 = new FpStruct () { a = 1, b = 1, c = 10 };
return pass_hfa_on_stack (s1, s1, s1);
}
+
+ public static int test_0_get_current_method () {
+ var m = MethodBase.GetCurrentMethod ();
+#if __MOBILE__
+ var m2 = typeof (AotTests).GetMethod ("test_0_get_current_method");
+#else
+ var m2 = typeof (Tests).GetMethod ("test_0_get_current_method");
+#endif
+ return m == m2 ? 0 : 1;
+ }
}
return (MonoObject*)mono_assembly_get_object (mono_domain_get (), image->assembly);
}
+MonoObject*
+mono_get_method_object (MonoMethod *method)
+{
+ return (MonoObject*)mono_method_get_object (mono_domain_get (), method, method->klass);
+}
+
double
mono_ckfinite (double d)
{
MonoObject* mono_get_assembly_object (MonoImage *image);
+MonoObject* mono_get_method_object (MonoMethod *method);
+
double mono_ckfinite (double d);
void mono_llvmonly_set_calling_assembly (MonoImage *image);
ins = mono_emit_jit_icall (cfg, mono_llvmonly_get_calling_assembly, NULL);
return ins;
}
+ } else if (cmethod->klass->image == mono_defaults.corlib &&
+ (strcmp (cmethod->klass->name_space, "System.Reflection") == 0) &&
+ (strcmp (cmethod->klass->name, "MethodBase") == 0)) {
+ if (cfg->llvm_only && !cfg->gshared && !strcmp (cmethod->name, "GetCurrentMethod")) {
+ /* No stack walks are currently available, so implement this as an intrinsic */
+ MonoInst *method_ins;
+
+ EMIT_NEW_AOTCONST (cfg, method_ins, MONO_PATCH_INFO_METHODCONST, cfg->method);
+ ins = mono_emit_jit_icall (cfg, mono_get_method_object, &method_ins);
+ return ins;
+ }
} else if (cmethod->klass == mono_defaults.math_class) {
/*
* There is general branchless code for Min/Max, but it does not work for
register_icall (mono_init_delegate, "mono_init_delegate", "void object object ptr", TRUE);
register_icall (mono_init_delegate_virtual, "mono_init_delegate_virtual", "void object object ptr", TRUE);
register_icall (mono_get_assembly_object, "mono_get_assembly_object", "object ptr", TRUE);
+ register_icall (mono_get_method_object, "mono_get_method_object", "object ptr", TRUE);
#ifdef TARGET_IOS
register_icall (pthread_getspecific, "pthread_getspecific", "ptr ptr", TRUE);