You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{IsValueType:true,IsPrimitive:true,Definition:null or {Size:>8}})
63
+
if(v.method.ReturnTypeContextis{IsValueType:true,Definition:null or {Size:>8}}rt&&rt.IsWasmPrimitive())//TODO Check - I think this IsWasmPrimitive check is inverted but I just ported what it was
65
64
parameters.Insert(0,"out");
66
65
67
66
parameters.Add("methodInfo");// Only for some methods...?
{IsValueType:true,IsPrimitive:false,Definition:null or {Size:<0 or >8}}=>"vi",//Large or Generic Struct returns have a void return type, but the actual return value is the first parameter.
33
-
{IsValueType:true,IsPrimitive:false,Definition.Size:>4}=>"j",//Medium structs are returned as longs
34
-
{IsValueType:true,IsPrimitive:false,Definition.Size:<=4}=>"i",//Small structs are returned as ints
{IsValueType:true,Definition:null or {Size:<0 or >8}}=>"vi",//Large or Generic Struct returns have a void return type, but the actual return value is the first parameter.
36
+
{IsValueType:true,Definition.Size:>4}=>"j",//Medium structs are returned as longs
37
+
{IsValueType:true,Definition.Size:<=4}=>"i",//Small structs are returned as ints
return$"{returnTypeSignature}{instanceParam}{string.Join("",definition.Parameters!.Select(p =>GetSignatureLetter(p.ParameterTypeContext,p.IsRef)))}i";//Add an extra i on the end for the method info param
_ whentypeis{IsValueType:true,IsPrimitive:false,IsEnumType:false,Definition.Size:<=8 and >0}=>"j",//TODO check - value types < 16 bytes (including base object header which is irrelevant here) are passed directly as long?
74
+
_ when!type.IsWasmPrimitive()&&typeis{IsValueType:true,IsEnumType:false,Definition.Size:<=8 and >0}=>"j",//TODO check - value types < 16 bytes (including base object header which is irrelevant here) are passed directly as long?
0 commit comments