Skip to content

Commit 1de62ba

Browse files
committed
Use ConvertArgument... AST node types in 2nd marshaller
1 parent 283308b commit 1de62ba

2 files changed

Lines changed: 6 additions & 13 deletions

File tree

src/Castle.Core/DynamicProxy/Generators/Emitters/SimpleAST/ConvertArgumentFromObjectExpression.cs

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -23,9 +23,8 @@ internal class ConvertArgumentFromObjectExpression : IExpression
2323
private readonly IExpression obj;
2424
private Type dereferencedArgumentType;
2525

26-
public ConvertArgumentFromObjectExpression(Reference obj, Type dereferencedArgumentType)
26+
public ConvertArgumentFromObjectExpression(IExpression obj, Type dereferencedArgumentType)
2727
{
28-
Debug.Assert(obj.Type == typeof(object));
2928
Debug.Assert(dereferencedArgumentType.IsByRef == false);
3029

3130
this.obj = obj;

src/Castle.Core/DynamicProxy/Generators/InvocationTypeGenerator.cs

Lines changed: 5 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -300,12 +300,12 @@ public void CopyOut(out IExpression[] arguments, out LocalReference?[] byRefArgu
300300
else
301301
#endif
302302
{
303-
dereferencedArgument = new ConvertExpression(
304-
dereferencedArgumentType,
303+
dereferencedArgument = new ConvertArgumentFromObjectExpression(
305304
new MethodInvocationExpression(
306305
ThisExpression.Instance,
307306
InvocationMethods.GetArgumentValue,
308-
new LiteralIntExpression(i)));
307+
new LiteralIntExpression(i)),
308+
dereferencedArgumentType);
309309
}
310310

311311
if (argumentType.IsByRef)
@@ -353,10 +353,7 @@ public void CopyIn(LocalReference?[] byRefArguments)
353353
ThisExpression.Instance,
354354
InvocationMethods.SetArgumentValue,
355355
new LiteralIntExpression(i),
356-
new ConvertExpression(
357-
typeof(object),
358-
localCopy.Type,
359-
localCopy)));
356+
new ConvertArgumentToObjectExpression(localCopy)));
360357
}
361358
}
362359
}
@@ -381,10 +378,7 @@ public void SetReturnValue(LocalReference returnValue)
381378
method.CodeBuilder.AddStatement(new MethodInvocationExpression(
382379
ThisExpression.Instance,
383380
InvocationMethods.SetReturnValue,
384-
new ConvertExpression(
385-
typeof(object),
386-
returnValue.Type,
387-
returnValue)));
381+
new ConvertArgumentToObjectExpression(returnValue)));
388382
}
389383
}
390384
}

0 commit comments

Comments
 (0)