[netcore] Implement Assembly.GetExecutingAssembly with stack mark parameter (mono...
authorFilip Navara <filip.navara@gmail.com>
Thu, 11 Apr 2019 08:31:22 +0000 (10:31 +0200)
committerZoltan Varga <vargaz@gmail.com>
Thu, 11 Apr 2019 08:31:22 +0000 (04:31 -0400)
* Implement Assembly.GetExecutingAssembly with stack mark parameter

* Address PR feedback

Commit migrated from https://github.com/mono/mono/commit/8ba5a5201f0a7aeb35d33709186ddfa0eb4d9d68

src/mono/mono/metadata/icall-def.h
src/mono/mono/metadata/icall.c

index e28167c..55247bf 100644 (file)
@@ -618,7 +618,7 @@ ICALL_TYPE(ASSEM, "System.Reflection.Assembly", ASSEM_2)
 #if ENABLE_NETCORE
 HANDLES(ASSEM_2, "GetCallingAssembly", ves_icall_System_Reflection_Assembly_GetCallingAssembly, MonoReflectionAssembly, 0, ())
 HANDLES(ASSEM_3, "GetEntryAssembly", ves_icall_System_Reflection_Assembly_GetEntryAssembly, MonoReflectionAssembly, 0, ())
-HANDLES(ASSEM_4, "GetExecutingAssembly", ves_icall_System_Reflection_Assembly_GetExecutingAssembly, MonoReflectionAssembly, 0, ())
+HANDLES(ASSEM_4, "GetExecutingAssembly", ves_icall_System_Reflection_Assembly_GetExecutingAssembly, MonoReflectionAssembly, 1, (MonoStackCrawlMark_ptr))
 HANDLES(ASSEM_5, "InternalGetAssemblyName", ves_icall_System_Reflection_Assembly_InternalGetAssemblyName, void, 3, (MonoString, MonoAssemblyName_ref, MonoStringOut))
 HANDLES(ASSEM_6, "InternalGetType", ves_icall_System_Reflection_Assembly_InternalGetType, MonoReflectionType, 5, (MonoReflectionAssembly, MonoReflectionModule, MonoString, MonoBoolean, MonoBoolean))
 HANDLES(ASSEM_7, "InternalLoad", ves_icall_System_Reflection_Assembly_InternalLoad, MonoReflectionAssembly, 3, (MonoString, MonoStackCrawlMark_ptr, gpointer))
index f2e0bdd..d1ee083 100644 (file)
@@ -5526,6 +5526,16 @@ ves_icall_System_Reflection_RuntimeMethodInfo_GetMethodBodyInternal (MonoMethod
        return mono_method_body_get_object_handle (mono_domain_get (), method, error);
 }
 
+#if ENABLE_NETCORE
+MonoReflectionAssemblyHandle
+ves_icall_System_Reflection_Assembly_GetExecutingAssembly (MonoStackCrawlMark *stack_mark, MonoError *error)
+{
+       MonoAssembly *assembly;
+       assembly = mono_runtime_get_caller_from_stack_mark (stack_mark);
+       g_assert (assembly);
+       return mono_assembly_get_object_handle (mono_domain_get (), assembly, error);
+}
+#else
 MonoReflectionAssemblyHandle
 ves_icall_System_Reflection_Assembly_GetExecutingAssembly (MonoError *error)
 {
@@ -5536,7 +5546,7 @@ ves_icall_System_Reflection_Assembly_GetExecutingAssembly (MonoError *error)
        g_assert (dest);
        return mono_assembly_get_object_handle (mono_domain_get (), m_class_get_image (dest->klass)->assembly, error);
 }
-
+#endif
 
 MonoReflectionAssemblyHandle
 ves_icall_System_Reflection_Assembly_GetEntryAssembly (MonoError *error)