Terraria v1.4.4.9
Terraria source code documentation
Loading...
Searching...
No Matches

◆ CompileMethodCallExpression() [1/2]

void System.Linq.Expressions.Interpreter.LightCompiler.CompileMethodCallExpression ( Expression @ object,
MethodInfo method,
IArgumentProvider arguments )
inlineprivate

Definition at line 1590 of file LightCompiler.cs.

1591 {
1592 ParameterInfo[] parametersCached = method.GetParametersCached();
1593 List<ByRefUpdater> list = null;
1594 if (!method.IsStatic)
1595 {
1596 ByRefUpdater byRefUpdater = CompileAddress(@object, -1);
1597 if (byRefUpdater != null)
1598 {
1600 }
1601 }
1602 int i = 0;
1603 for (int argumentCount = arguments.ArgumentCount; i < argumentCount; i++)
1604 {
1605 Expression argument = arguments.GetArgument(i);
1606 if (parametersCached[i].ParameterType.IsByRef)
1607 {
1608 ByRefUpdater byRefUpdater2 = CompileAddress(argument, i);
1609 if (byRefUpdater2 != null)
1610 {
1611 if (list == null)
1612 {
1613 list = new List<ByRefUpdater>();
1614 }
1615 list.Add(byRefUpdater2);
1616 }
1617 }
1618 else
1619 {
1621 }
1622 }
1623 if (!method.IsStatic && @object.Type.IsNullableType())
1624 {
1626 return;
1627 }
1628 if (list == null)
1629 {
1631 return;
1632 }
1634 foreach (ByRefUpdater item in list)
1635 {
1636 item.UndefineTemps(_instructions, _locals);
1637 }
1638 }
void EmitByRefCall(MethodInfo method, ParameterInfo[] parameters, ByRefUpdater[] byrefArgs)
void EmitNullableCall(MethodInfo method, ParameterInfo[] parameters)
void Compile(Expression expr, bool asVoid)
ByRefUpdater CompileAddress(Expression node, int index)

References System.Linq.Expressions.Interpreter.LightCompiler._instructions, System.Linq.Expressions.Interpreter.LightCompiler._locals, System.Linq.Expressions.Interpreter.LightCompiler.Compile(), System.Linq.Expressions.Interpreter.LightCompiler.CompileAddress(), System.Linq.Expressions.Interpreter.InstructionList.EmitByRefCall(), System.Linq.Expressions.Interpreter.InstructionList.EmitCall(), System.Linq.Expressions.Interpreter.InstructionList.EmitNullableCall(), System.item, and System.list.