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

◆ EmitLambdaBody() [2/2]

void System.Linq.Expressions.Compiler.LambdaCompiler.EmitLambdaBody ( CompilerScope parent,
bool inlined,
CompilationFlags flags )
inlineprivate

Definition at line 2354 of file LambdaCompiler.cs.

2355 {
2356 _scope.Enter(this, parent);
2357 if (inlined)
2358 {
2359 for (int num = _lambda.ParameterCount - 1; num >= 0; num--)
2360 {
2362 }
2363 }
2364 flags = UpdateEmitExpressionStartFlag(flags, CompilationFlags.EmitExpressionStart);
2365 if (_lambda.ReturnType == typeof(void))
2366 {
2368 }
2369 else
2370 {
2371 EmitExpression(_lambda.Body, flags);
2372 }
2373 if (!inlined)
2374 {
2376 }
2377 _scope.Exit();
2378 foreach (LabelInfo value in _labelInfo.Values)
2379 {
2380 value.ValidateFinish();
2381 }
2382 }
void EmitSet(ParameterExpression variable)
CompilerScope Enter(LambdaCompiler lc, CompilerScope parent)
readonly Dictionary< LabelTarget, LabelInfo > _labelInfo
static CompilationFlags UpdateEmitExpressionStartFlag(CompilationFlags flags, CompilationFlags newValue)
ParameterExpression IParameterProvider. GetParameter(int index)
virtual void Emit(OpCode opcode)
static readonly OpCode Ret
Definition OpCodes.cs:87

References System.Linq.Expressions.Compiler.LambdaCompiler._ilg, System.Linq.Expressions.Compiler.LambdaCompiler._labelInfo, System.Linq.Expressions.Compiler.LambdaCompiler._lambda, System.Linq.Expressions.Compiler.LambdaCompiler._scope, System.Linq.Expressions.LambdaExpression.Body, System.Reflection.Emit.ILGenerator.Emit(), System.Linq.Expressions.Compiler.LambdaCompiler.EmitExpression(), System.Linq.Expressions.Compiler.LambdaCompiler.EmitExpressionAsVoid(), System.Linq.Expressions.Compiler.CompilerScope.EmitSet(), System.Linq.Expressions.Compiler.CompilerScope.Enter(), System.Linq.Expressions.Compiler.CompilerScope.Exit(), System.Linq.Expressions.LambdaExpression.GetParameter(), System.Linq.Expressions.LambdaExpression.ParameterCount, System.Reflection.Emit.OpCodes.Ret, System.Linq.Expressions.LambdaExpression.ReturnType, System.Linq.Expressions.Compiler.LambdaCompiler.UpdateEmitExpressionStartFlag(), System.value, and System.Collections.Generic.Dictionary< TKey, TValue >.Values.