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

◆ EmitVariableAccess()

void System.Linq.Expressions.Compiler.CompilerScope.EmitVariableAccess ( LambdaCompiler lc,
ReadOnlyCollection< ParameterExpression > vars )
inlinepackage

Definition at line 292 of file CompilerScope.cs.

293 {
294 if (NearestHoistedLocals != null && vars.Count > 0)
295 {
297 foreach (ParameterExpression var in vars)
298 {
299 ulong num = 0uL;
300 HoistedLocals hoistedLocals = NearestHoistedLocals;
301 while (!hoistedLocals.Indexes.ContainsKey(var))
302 {
303 num++;
305 }
306 ulong item = (num << 32) | (uint)hoistedLocals.Indexes[var];
307 arrayBuilder.UncheckedAdd((long)item);
308 }
310 lc.EmitConstantArray(arrayBuilder.ToArray());
311 lc.IL.Emit(OpCodes.Call, CachedReflectionInfo.RuntimeOps_CreateRuntimeVariables_ObjectArray_Int64Array);
312 }
313 else
314 {
315 lc.IL.Emit(OpCodes.Call, CachedReflectionInfo.RuntimeOps_CreateRuntimeVariables);
316 }
317 }
void EmitGet(ParameterExpression variable)
readonly ParameterExpression SelfVariable
static readonly OpCode Call
Definition OpCodes.cs:83

References System.Reflection.Emit.OpCodes.Call, System.Collections.Generic.Dictionary< TKey, TValue >.ContainsKey(), System.Collections.Generic.Dictionary< TKey, TValue >.Count, System.Linq.Expressions.Compiler.CompilerScope.EmitGet(), System.item, System.Linq.Expressions.Compiler.CompilerScope.NearestHoistedLocals, System.Linq.Expressions.CachedReflectionInfo.RuntimeOps_CreateRuntimeVariables, System.Linq.Expressions.CachedReflectionInfo.RuntimeOps_CreateRuntimeVariables_ObjectArray_Int64Array, and System.Linq.Expressions.Compiler.HoistedLocals.SelfVariable.

Referenced by System.Linq.Expressions.Compiler.LambdaCompiler.EmitRuntimeVariablesExpression().