Hi Jonathan,

On 22.09.2016 22:22, Jonathan Mitchell wrote:
I am trying to upgrade some method invoke based code to used thunks.

The comments for mono_method_get_unmanaged_thunk() say:

 * LIMITATIONS
 *
 * Value type arguments and return values are treated as they were objects:
 *
 * C#: public static Rectangle Intersect (Rectangle a, Rectangle b);
 * C:  typedef MonoObject* (*Intersect)(MonoObject*, MonoObject*, 
MonoException**);
 *
 * Arguments must be properly boxed upon trunk's invocation, while return
 * values must be unboxed.

However it seems that primitive value types are returned unboxed while non 
primitive value types are not.
Does the same apply for thunk parameters?
Are primitive value parameters based by value and non primitive value 
parameters as a boxed reference?

The limitation only applies to "complex" value types:

(type.IsValueType && !type.IsPrimitive) == true

Robert


_______________________________________________
Mono-list maillist  -  Mono-list@lists.dot.net
http://lists.dot.net/mailman/listinfo/mono-list

Reply via email to