On 11.05.11 11:29, Martin Daeumler wrote: > I'm diving into the Full-AOT code of Mono 2.6.1 and I want to know > the meaning of several MonoMethod attributes and how these methods > are called, please. The Full-AOT code skips the AOT compilation of > methods with the flags: > > METHOD_ATTRIBUTE_ABSTRACT > METHOD_ATTRIBUTE_PINVOKE_IMPL > > and methods with the implementation flags > > METHOD_IMPL_ATTRIBUTE_RUNTIME > METHOD_IMPL_ATTRIBUTE_INTERNAL_CALL > > Skipping abstract methods is clear. PInvoke and internal call > methods are called through wrappers, aren't they? But I don't > know the difference between both types.
Hello, I learned that PInvoke and Internal Call methods are quite the same. Internal Calls are internal PInvokes that are used to implement some C# methods as C functions within the system library. These internal calls are registered in "mono/metadata/icall_def.h" and they are called through a wrapper that is generated in "mono_marshal_get_native_wrapper()". I was confused by internal JIT calls that are called by a wrapper generated in "mono_icall_get_wrapper_full()". As I can see, all methods with the attribute "METHOD_IMPL_ATTRIBUTE_RUNTIME" are delegates. That is, they are initialized at runtime? Do they need a special wrapper to be called? With kind regards, Martin Däumler _______________________________________________ Mono-devel-list mailing list [email protected] http://lists.ximian.com/mailman/listinfo/mono-devel-list
