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

◆ CompileMultiDimArrayAccess()

ByRefUpdater System.Linq.Expressions.Interpreter.LightCompiler.CompileMultiDimArrayAccess ( Expression array,
IArgumentProvider arguments,
int index )
inlineprivate

Definition at line 1769 of file LightCompiler.cs.

1770 {
1771 Compile(array);
1772 LocalDefinition value = _locals.DefineLocal(Expression.Parameter(array.Type), _instructions.Count);
1775 int argumentCount = arguments.ArgumentCount;
1776 LocalDefinition[] array2 = new LocalDefinition[argumentCount];
1777 for (int i = 0; i < argumentCount; i++)
1778 {
1779 Expression argument = arguments.GetArgument(i);
1781 LocalDefinition localDefinition = _locals.DefineLocal(Expression.Parameter(argument.Type), _instructions.Count);
1785 }
1787 return new IndexMethodByRefUpdater(value, array2, TypeUtils.GetArraySetMethod(array.Type), index);
1788 }
static MethodInfo GetArrayGetMethod(Type arrayType)
Definition TypeUtils.cs:769
static MethodInfo GetArraySetMethod(Type arrayType)
Definition TypeUtils.cs:775
void Compile(Expression expr, bool asVoid)
LocalDefinition DefineLocal(ParameterExpression variable, int start)

References System.Linq.Expressions.Interpreter.LightCompiler._instructions, System.Linq.Expressions.Interpreter.LightCompiler._locals, System.array, System.Linq.Expressions.Interpreter.LightCompiler.Compile(), System.Linq.Expressions.Interpreter.InstructionList.Count, System.Linq.Expressions.Interpreter.LocalVariables.DefineLocal(), System.Linq.Expressions.Interpreter.InstructionList.EmitCall(), System.Linq.Expressions.Interpreter.InstructionList.EmitDup(), System.Linq.Expressions.Interpreter.InstructionList.EmitStoreLocal(), System.Dynamic.Utils.TypeUtils.GetArrayGetMethod(), System.Dynamic.Utils.TypeUtils.GetArraySetMethod(), System.Linq.index, System.Linq.Expressions.Expression< TDelegate >.Parameter(), and System.value.

Referenced by System.Linq.Expressions.Interpreter.LightCompiler.CompileAddress().