1 write to _instructions
System.Linq.Expressions (1)
System\Linq\Expressions\Interpreter\LightCompiler.cs (1)
298
_instructions
= new InstructionList();
391 references to _instructions
System.Linq.Expressions (391)
System\Linq\Expressions\Interpreter\LightCompiler.cs (391)
307
public InstructionList Instructions =>
_instructions
;
318
_instructions
.EmitInitializeParameter(local.Index);
326
_instructions
.EmitPop();
329
Debug.Assert(
_instructions
.CurrentStackDepth == (node.ReturnType != typeof(void) ? 1 : 0));
341
return new Interpreter(lambdaName, _locals,
_instructions
.ToArray(), debugInfos);
347
_instructions
.EmitLoad(node.Value, node.Type);
361
_instructions
.EmitLoad(value: null);
368
_instructions
.EmitLoad(value);
372
_instructions
.EmitDefaultValue(type);
384
_locals.Box(expr,
_instructions
);
412
_instructions
.SetDebugCookie(variable.Name);
424
_instructions
.Emit(ValueTypeCopyInstruction.Instruction);
434
_instructions
.EmitLoadLocalFromClosure(local.Index);
438
_instructions
.EmitLoadLocalBoxed(local.Index);
442
_instructions
.EmitLoadLocal(local.Index);
457
_instructions
.EmitLoadLocalFromClosureBoxed(local.Index);
462
_instructions
.EmitLoadLocal(local.Index);
465
_instructions
.SetDebugCookie(variable.Name);
476
_instructions
.EmitStoreLocalToClosure(local.Index);
480
_instructions
.EmitAssignLocalToClosure(local.Index);
487
_instructions
.EmitStoreLocalBoxed(local.Index);
491
_instructions
.EmitAssignLocalBoxed(local.Index);
498
_instructions
.EmitStoreLocal(local.Index);
502
_instructions
.EmitAssignLocal(local.Index);
506
_instructions
.SetDebugCookie(variable.Name);
531
int start =
_instructions
.Count;
546
_instructions
.EmitInitializeLocal(local.Index, variable.Type);
547
_instructions
.SetDebugCookie(variable.Name);
566
_locals.UndefineLocal(local,
_instructions
.Count);
593
_instructions
.EmitCall(index.Indexer.GetGetMethod(nonPublic: true)!);
597
_instructions
.EmitCall(TypeUtils.GetArrayGetMethod(index.Object!.Type));
601
_instructions
.EmitGetArrayItem();
626
local = _locals.DefineLocal(Expression.Parameter(node.Right.Type),
_instructions
.Count);
627
_instructions
.EmitAssignLocal(local.Index);
632
_instructions
.EmitCall(index.Indexer.GetSetMethod(nonPublic: true)!);
636
_instructions
.EmitCall(TypeUtils.GetArraySetMethod(index.Object!.Type));
640
_instructions
.EmitSetArrayItem();
645
_instructions
.EmitLoadLocal(local.Index);
646
_locals.UndefineLocal(local,
_instructions
.Count);
674
int start =
_instructions
.Count;
678
_instructions
.EmitAssignLocal(local.Index);
679
_instructions
.EmitCall(method);
680
_instructions
.EmitLoadLocal(local.Index);
681
_locals.UndefineLocal(local,
_instructions
.Count);
685
_instructions
.EmitCall(method);
700
_instructions
.UnEmit(); // Undo having pushed the instance to the stack.
705
int start =
_instructions
.Count;
709
_instructions
.EmitAssignLocal(local.Index);
710
_instructions
.EmitStoreField(fi);
711
_instructions
.EmitLoadLocal(local.Index);
712
_locals.UndefineLocal(local,
_instructions
.Count);
716
_instructions
.EmitStoreField(fi);
767
BranchLabel end =
_instructions
.MakeLabel();
769
LocalDefinition leftTemp = _locals.DefineLocal(Expression.Parameter(node.Left.Type),
_instructions
.Count);
771
_instructions
.EmitStoreLocal(leftTemp.Index);
773
LocalDefinition rightTemp = _locals.DefineLocal(Expression.Parameter(node.Right.Type),
_instructions
.Count);
775
_instructions
.EmitStoreLocal(rightTemp.Index);
795
BranchLabel testRight =
_instructions
.MakeLabel();
796
BranchLabel callMethod =
_instructions
.MakeLabel();
798
_instructions
.EmitLoadLocal(leftTemp.Index);
799
_instructions
.EmitLoad(null, typeof(object));
800
_instructions
.EmitEqual(typeof(object));
801
_instructions
.EmitBranchFalse(testRight);
804
_instructions
.EmitLoadLocal(rightTemp.Index);
805
_instructions
.EmitLoad(null, typeof(object));
808
_instructions
.EmitEqual(typeof(object));
812
_instructions
.EmitNotEqual(typeof(object));
814
_instructions
.EmitBranch(end, hasResult: false, hasValue: true);
816
_instructions
.MarkLabel(testRight);
819
_instructions
.EmitLoadLocal(rightTemp.Index);
820
_instructions
.EmitLoad(null, typeof(object));
821
_instructions
.EmitEqual(typeof(object));
822
_instructions
.EmitBranchFalse(callMethod);
826
_instructions
.EmitLoad(
829
_instructions
.EmitBranch(end, hasResult: false, hasValue: true);
832
_instructions
.MarkLabel(callMethod);
833
_instructions
.EmitLoadLocal(leftTemp.Index);
834
_instructions
.EmitLoadLocal(rightTemp.Index);
835
_instructions
.EmitCall(node.Method);
838
BranchLabel loadDefault =
_instructions
.MakeLabel();
842
_instructions
.EmitLoadLocal(leftTemp.Index);
843
_instructions
.EmitLoad(null, typeof(object));
844
_instructions
.EmitEqual(typeof(object));
845
_instructions
.EmitBranchTrue(loadDefault);
850
_instructions
.EmitLoadLocal(rightTemp.Index);
851
_instructions
.EmitLoad(null, typeof(object));
852
_instructions
.EmitEqual(typeof(object));
853
_instructions
.EmitBranchTrue(loadDefault);
856
_instructions
.EmitLoadLocal(leftTemp.Index);
857
_instructions
.EmitLoadLocal(rightTemp.Index);
858
_instructions
.EmitCall(node.Method);
859
_instructions
.EmitBranch(end, hasResult: false, hasValue: true);
861
_instructions
.MarkLabel(loadDefault);
872
_instructions
.EmitLoad(AstUtils.BoxedFalse, typeof(object));
875
_instructions
.EmitLoad(null, typeof(object));
881
_instructions
.MarkLabel(end);
883
_locals.UndefineLocal(leftTemp,
_instructions
.Count);
884
_locals.UndefineLocal(rightTemp,
_instructions
.Count);
890
_instructions
.EmitCall(node.Method);
901
_instructions
.EmitGetArrayItem();
918
_instructions
.EmitExclusiveOr(node.Left.Type);
923
_instructions
.EmitOr(node.Left.Type);
928
_instructions
.EmitAnd(node.Left.Type);
949
_instructions
.EmitLeftShift(node.Left.Type);
954
_instructions
.EmitRightShift(node.Left.Type);
983
_instructions
.EmitEqual(left.Type, liftedToNull);
993
_instructions
.EmitNotEqual(left.Type, liftedToNull);
1007
case ExpressionType.LessThan:
_instructions
.EmitLessThan(left.Type, node.IsLiftedToNull); break;
1008
case ExpressionType.LessThanOrEqual:
_instructions
.EmitLessThanOrEqual(left.Type, node.IsLiftedToNull); break;
1009
case ExpressionType.GreaterThan:
_instructions
.EmitGreaterThan(left.Type, node.IsLiftedToNull); break;
1010
case ExpressionType.GreaterThanOrEqual:
_instructions
.EmitGreaterThanOrEqual(left.Type, node.IsLiftedToNull); break;
1022
case ExpressionType.Add:
_instructions
.EmitAdd(left.Type, @checked: false); break;
1023
case ExpressionType.AddChecked:
_instructions
.EmitAdd(left.Type, @checked: true); break;
1024
case ExpressionType.Subtract:
_instructions
.EmitSub(left.Type, @checked: false); break;
1025
case ExpressionType.SubtractChecked:
_instructions
.EmitSub(left.Type, @checked: true); break;
1026
case ExpressionType.Multiply:
_instructions
.EmitMul(left.Type, @checked: false); break;
1027
case ExpressionType.MultiplyChecked:
_instructions
.EmitMul(left.Type, @checked: true); break;
1028
case ExpressionType.Divide:
_instructions
.EmitDiv(left.Type); break;
1029
case ExpressionType.Modulo:
_instructions
.EmitModulo(left.Type); break;
1039
BranchLabel end =
_instructions
.MakeLabel();
1040
BranchLabel loadDefault =
_instructions
.MakeLabel();
1047
LocalDefinition opTemp = _locals.DefineLocal(Expression.Parameter(operandType),
_instructions
.Count);
1067
_instructions
.EmitStoreLocal(opTemp.Index);
1071
_instructions
.EmitLoadLocal(opTemp.Index);
1072
_instructions
.EmitLoad(null, typeof(object));
1073
_instructions
.EmitEqual(typeof(object));
1074
_instructions
.EmitBranchTrue(loadDefault);
1077
_instructions
.EmitLoadLocal(opTemp.Index);
1080
_instructions
.Emit(NullableMethodCallInstruction.CreateGetValue());
1085
_instructions
.EmitCall(method);
1089
_instructions
.EmitByRefCall(method, parameters, new[] { updater });
1090
updater.UndefineTemps(
_instructions
, _locals);
1093
_instructions
.EmitBranch(end, hasResult: false, hasValue: true);
1095
_instructions
.MarkLabel(loadDefault);
1096
_instructions
.EmitLoad(null, typeof(object));
1098
_instructions
.MarkLabel(end);
1100
_locals.UndefineLocal(opTemp,
_instructions
.Count);
1135
_instructions
.Emit(NullableMethodCallInstruction.CreateGetValue());
1170
_instructions
.Emit(NullableMethodCallInstruction.CreateGetValue());
1178
_instructions
.EmitConvertToUnderlying(to, isLiftedToNull);
1185
_instructions
.EmitNumericConvertChecked(from, to, isLiftedToNull);
1189
_instructions
.EmitNumericConvertUnchecked(from, to, isLiftedToNull);
1196
_instructions
.EmitCastToEnum(enumTypeTo);
1204
_instructions
.Emit(NullCheckInstruction.Instance);
1205
_instructions
.EmitCastReferenceToEnum(typeTo);
1216
_instructions
.EmitCast(typeTo);
1222
_instructions
.EmitNot(node.Operand.Type);
1246
_instructions
.EmitArrayLength();
1250
_instructions
.EmitNegateChecked(node.Type);
1254
_instructions
.EmitNegate(node.Type);
1258
_instructions
.EmitIncrement(node.Type);
1262
_instructions
.EmitDecrement(node.Type);
1282
BranchLabel notNull =
_instructions
.MakeLabel();
1283
BranchLabel computed =
_instructions
.MakeLabel();
1285
_instructions
.EmitCoalescingBranch(notNull);
1286
_instructions
.EmitBranch(computed);
1288
_instructions
.MarkLabel(notNull);
1289
_instructions
.EmitCall(node.Method!);
1291
_instructions
.MarkLabel(computed);
1295
_instructions
.EmitCall(node.Method!);
1304
BranchLabel notNull =
_instructions
.MakeLabel();
1305
BranchLabel computed =
_instructions
.MakeLabel();
1307
_instructions
.EmitCoalescingBranch(notNull);
1308
_instructions
.EmitBranch(computed);
1310
_instructions
.MarkLabel(notNull);
1311
_instructions
.EmitLoad(node.NodeType == ExpressionType.IsTrue);
1312
_instructions
.EmitEqual(typeof(bool));
1314
_instructions
.MarkLabel(computed);
1318
_instructions
.EmitLoad(node.NodeType == ExpressionType.IsTrue);
1319
_instructions
.EmitEqual(typeof(bool));
1355
BranchLabel labEnd =
_instructions
.MakeLabel();
1357
_instructions
.EmitDup();
1361
_instructions
.EmitCall(opTrue);
1362
_instructions
.EmitBranchTrue(labEnd);
1369
LocalDefinition leftTemp = _locals.DefineLocal(Expression.Parameter(expr.Left.Type),
_instructions
.Count);
1370
_instructions
.EmitStoreLocal(leftTemp.Index);
1376
LocalDefinition rightTemp = _locals.DefineLocal(Expression.Parameter(expr.Right.Type),
_instructions
.Count);
1377
_instructions
.EmitStoreLocal(rightTemp.Index);
1379
_instructions
.EmitLoadLocal(leftTemp.Index);
1380
_instructions
.EmitLoadLocal(rightTemp.Index);
1383
_instructions
.EmitCall(expr.Method);
1385
_locals.UndefineLocal(leftTemp,
_instructions
.Count);
1386
_locals.UndefineLocal(rightTemp,
_instructions
.Count);
1388
_instructions
.MarkLabel(labEnd);
1393
BranchLabel computeRight =
_instructions
.MakeLabel();
1394
BranchLabel returnFalse =
_instructions
.MakeLabel();
1395
BranchLabel returnNull =
_instructions
.MakeLabel();
1396
BranchLabel returnValue =
_instructions
.MakeLabel();
1397
LocalDefinition result = _locals.DefineLocal(Expression.Parameter(node.Left.Type),
_instructions
.Count);
1398
LocalDefinition leftTemp = _locals.DefineLocal(Expression.Parameter(node.Left.Type),
_instructions
.Count);
1401
_instructions
.EmitStoreLocal(leftTemp.Index);
1403
_instructions
.EmitLoadLocal(leftTemp.Index);
1404
_instructions
.EmitLoad(null, typeof(object));
1405
_instructions
.EmitEqual(typeof(object));
1407
_instructions
.EmitBranchTrue(computeRight);
1409
_instructions
.EmitLoadLocal(leftTemp.Index);
1413
_instructions
.EmitBranchFalse(returnFalse);
1417
_instructions
.EmitBranchTrue(returnFalse);
1421
_instructions
.MarkLabel(computeRight);
1422
LocalDefinition rightTemp = _locals.DefineLocal(Expression.Parameter(node.Right.Type),
_instructions
.Count);
1424
_instructions
.EmitStoreLocal(rightTemp.Index);
1426
_instructions
.EmitLoadLocal(rightTemp.Index);
1427
_instructions
.EmitLoad(null, typeof(object));
1428
_instructions
.EmitEqual(typeof(object));
1429
_instructions
.EmitBranchTrue(returnNull);
1431
_instructions
.EmitLoadLocal(rightTemp.Index);
1434
_instructions
.EmitBranchFalse(returnFalse);
1438
_instructions
.EmitBranchTrue(returnFalse);
1442
_instructions
.EmitLoadLocal(leftTemp.Index);
1443
_instructions
.EmitLoad(null, typeof(object));
1444
_instructions
.EmitEqual(typeof(object));
1445
_instructions
.EmitBranchTrue(returnNull);
1448
_instructions
.EmitLoad(andAlso ? AstUtils.BoxedTrue : AstUtils.BoxedFalse, typeof(object));
1449
_instructions
.EmitStoreLocal(result.Index);
1450
_instructions
.EmitBranch(returnValue);
1453
_instructions
.MarkLabel(returnFalse);
1454
_instructions
.EmitLoad(andAlso ? AstUtils.BoxedFalse : AstUtils.BoxedTrue, typeof(object));
1455
_instructions
.EmitStoreLocal(result.Index);
1456
_instructions
.EmitBranch(returnValue);
1459
_instructions
.MarkLabel(returnNull);
1460
_instructions
.EmitLoad(null, typeof(object));
1461
_instructions
.EmitStoreLocal(result.Index);
1463
_instructions
.MarkLabel(returnValue);
1464
_instructions
.EmitLoadLocal(result.Index);
1466
_locals.UndefineLocal(leftTemp,
_instructions
.Count);
1467
_locals.UndefineLocal(rightTemp,
_instructions
.Count);
1468
_locals.UndefineLocal(result,
_instructions
.Count);
1473
BranchLabel elseLabel =
_instructions
.MakeLabel();
1474
BranchLabel endLabel =
_instructions
.MakeLabel();
1479
_instructions
.EmitBranchFalse(elseLabel);
1483
_instructions
.EmitBranchTrue(elseLabel);
1486
_instructions
.EmitBranch(endLabel, hasResult: false, hasValue: true);
1487
_instructions
.MarkLabel(elseLabel);
1488
_instructions
.EmitLoad(!andAlso);
1489
_instructions
.MarkLabel(endLabel);
1499
BranchLabel endOfFalse =
_instructions
.MakeLabel();
1500
_instructions
.EmitBranchTrue(endOfFalse);
1502
_instructions
.MarkLabel(endOfFalse);
1506
BranchLabel endOfTrue =
_instructions
.MakeLabel();
1507
_instructions
.EmitBranchFalse(endOfTrue);
1512
BranchLabel endOfFalse =
_instructions
.MakeLabel();
1513
_instructions
.EmitBranch(endOfFalse, false, !asVoid);
1514
_instructions
.MarkLabel(endOfTrue);
1516
_instructions
.MarkLabel(endOfFalse);
1520
_instructions
.MarkLabel(endOfTrue);
1533
_instructions
.MarkLabel(continueLabel.GetLabel(this));
1539
_instructions
.EmitBranch(continueLabel.GetLabel(this), node.Type != typeof(void), hasValue: false);
1541
_instructions
.MarkLabel(breakLabel.GetLabel(this));
1618
LocalDefinition temp = _locals.DefineLocal(Expression.Parameter(node.SwitchValue.Type),
_instructions
.Count);
1620
_instructions
.EmitStoreLocal(temp.Index);
1644
_locals.UndefineLocal(temp,
_instructions
.Count);
1654
int switchIndex =
_instructions
.Count;
1655
_instructions
.EmitIntSwitch(caseDict);
1665
_instructions
.EmitBranch(end.GetLabel(this), false, hasValue);
1671
int caseOffset =
_instructions
.Count - switchIndex;
1682
_instructions
.EmitBranch(end.GetLabel(this), false, hasValue);
1686
_instructions
.MarkLabel(end.GetLabel(this));
1696
int switchIndex =
_instructions
.Count;
1699
_instructions
.EmitStringSwitch(caseDict, nullCase);
1709
_instructions
.EmitBranch(end.GetLabel(this), false, hasValue);
1715
int caseOffset =
_instructions
.Count - switchIndex;
1736
_instructions
.EmitBranch(end.GetLabel(this), false, hasValue);
1740
_instructions
.MarkLabel(end.GetLabel(this));
1780
_instructions
.MarkLabel(label.GetLabel(this));
1793
_instructions
.EmitGoto(labelInfo.GetLabel(this),
1962
_instructions
.EmitRethrowVoid();
1966
_instructions
.EmitRethrow();
1974
_instructions
.EmitThrowVoid();
1978
_instructions
.EmitThrow();
1992
BranchLabel end =
_instructions
.MakeLabel();
1993
BranchLabel gotoEnd =
_instructions
.MakeLabel();
1994
int tryStart =
_instructions
.Count;
1999
startOfFinally =
_instructions
.MakeLabel();
2000
_instructions
.EmitEnterTryFinally(startOfFinally);
2004
_instructions
.EmitEnterTryCatch();
2008
var enterTryInstr =
_instructions
.GetInstruction(tryStart) as EnterTryCatchFinallyInstruction;
2016
int tryEnd =
_instructions
.Count;
2019
_instructions
.MarkLabel(gotoEnd);
2020
_instructions
.EmitGoto(end, hasValue, hasValue, hasValue);
2030
LocalDefinition local = _locals.DefineLocal(parameter,
_instructions
.Count);
2039
_instructions
.EmitEnterExceptionFilter();
2042
int filterLabel =
_instructions
.MarkRuntimeLabel();
2043
int filterStart =
_instructions
.Count;
2049
filter = new ExceptionFilter(filterLabel, filterStart,
_instructions
.Count);
2052
_instructions
.EmitLeaveExceptionFilter();
2062
_instructions
.EmitEnterExceptionHandlerNonVoid();
2066
_instructions
.EmitEnterExceptionHandlerVoid();
2070
int handlerLabel =
_instructions
.MarkRuntimeLabel();
2071
int handlerStart =
_instructions
.Count;
2079
_instructions
.EmitLeaveExceptionHandler(hasValue, gotoEnd);
2081
exHandlers.Add(new ExceptionHandler(handlerLabel, handlerStart,
_instructions
.Count, handler.Test, filter));
2084
_locals.UndefineLocal(local,
_instructions
.Count);
2093
_instructions
.MarkLabel(startOfFinally);
2094
_instructions
.EmitEnterFinally(startOfFinally);
2096
_instructions
.EmitLeaveFinally();
2100
startOfFinally.TargetIndex,
_instructions
.Count,
2111
_instructions
.MarkLabel(end);
2123
int tryStart =
_instructions
.Count;
2124
BranchLabel end =
_instructions
.MakeLabel();
2125
EnterTryFaultInstruction enterTryInstr =
_instructions
.EmitEnterTryFault(end);
2126
Debug.Assert(enterTryInstr ==
_instructions
.GetInstruction(tryStart));
2132
int tryEnd =
_instructions
.Count;
2136
_instructions
.EmitGoto(end, hasValue, hasValue, hasValue);
2141
BranchLabel startOfFault =
_instructions
.MakeLabel();
2142
_instructions
.MarkLabel(startOfFault);
2143
_instructions
.EmitEnterFault(startOfFault);
2145
_instructions
.EmitLeaveFault();
2146
enterTryInstr.SetTryHandler(new TryFaultHandler(tryStart, tryEnd, startOfFault.TargetIndex,
_instructions
.Count));
2149
_instructions
.MarkLabel(end);
2202
_instructions
.EmitNullableCall(method, parameters);
2208
_instructions
.EmitCall(method, parameters);
2212
_instructions
.EmitByRefCall(method, parameters, updaters.ToArray());
2216
updater.UndefineTemps(
_instructions
, _locals);
2224
LocalDefinition left = _locals.DefineLocal(Expression.Parameter(array.Type, nameof(array)),
_instructions
.Count);
2225
LocalDefinition right = _locals.DefineLocal(Expression.Parameter(index.Type, nameof(index)),
_instructions
.Count);
2227
_instructions
.EmitStoreLocal(left.Index);
2229
_instructions
.EmitStoreLocal(right.Index);
2231
_instructions
.EmitLoadLocal(left.Index);
2232
_instructions
.EmitLoadLocal(right.Index);
2233
_instructions
.EmitGetArrayItem();
2289
objTmp = _locals.DefineLocal(Expression.Parameter(indexNode.Object.Type),
_instructions
.Count);
2291
_instructions
.EmitDup();
2292
_instructions
.EmitStoreLocal(objTmp.GetValueOrDefault().Index);
2302
LocalDefinition argTmp = _locals.DefineLocal(Expression.Parameter(arg.Type),
_instructions
.Count);
2303
_instructions
.EmitDup();
2304
_instructions
.EmitStoreLocal(argTmp.Index);
2327
memberTemp = _locals.DefineLocal(Expression.Parameter(member.Expression.Type, "member"),
_instructions
.Count);
2329
_instructions
.EmitDup();
2330
_instructions
.EmitStoreLocal(memberTemp.GetValueOrDefault().Index);
2336
_instructions
.EmitLoadField(field);
2345
_instructions
.EmitCall(property.GetGetMethod(nonPublic: true)!);
2379
LocalDefinition objTmp = _locals.DefineLocal(Expression.Parameter(array.Type),
_instructions
.Count);
2380
_instructions
.EmitDup();
2381
_instructions
.EmitStoreLocal(objTmp.Index);
2390
LocalDefinition argTmp = _locals.DefineLocal(Expression.Parameter(arg.Type),
_instructions
.Count);
2391
_instructions
.EmitDup();
2392
_instructions
.EmitStoreLocal(argTmp.Index);
2397
_instructions
.EmitCall(TypeUtils.GetArrayGetMethod(array.Type));
2435
_instructions
.EmitByRefNew(node.Constructor, parameters, updaters.ToArray());
2439
_instructions
.EmitNew(node.Constructor, parameters);
2448
_instructions
.EmitLoad(value: null);
2452
_instructions
.EmitDefaultValue(type);
2471
_instructions
.EmitLoad(fi.GetValue(obj: null), fi.FieldType);
2482
_instructions
.EmitLoad(fi.GetValue(obj: null), fi.FieldType);
2486
_instructions
.EmitLoadField(fi);
2496
_instructions
.EmitLoadField(fi);
2521
_instructions
.EmitNullableCall(method, Array.Empty<ParameterInfo>());
2525
_instructions
.EmitCall(method);
2549
_instructions
.EmitNewArrayInit(elementType, rank);
2556
_instructions
.EmitNewArray(elementType);
2560
_instructions
.EmitNewArrayBounds(elementType, rank);
2568
int start =
_instructions
.Count;
2590
_instructions
.EmitNewRuntimeVariables(node.Variables.Count);
2607
_instructions
.EmitCreateDelegate(creator);
2636
BranchLabel leftNotNull =
_instructions
.MakeLabel();
2640
_instructions
.EmitCoalescingBranch(leftNotNull);
2641
_instructions
.EmitPop();
2647
end =
_instructions
.MakeLabel();
2648
_instructions
.EmitBranch(end);
2657
_instructions
.MarkLabel(leftNotNull);
2662
LocalDefinition local = _locals.DefineLocal(temp,
_instructions
.Count);
2663
_instructions
.EmitStoreLocal(local.Index);
2669
_locals.UndefineLocal(local,
_instructions
.Count);
2679
_instructions
.MarkLabel(end!);
2720
_instructions
.EmitDup();
2726
_instructions
.EmitCall(add);
2728
_instructions
.EmitPop();
2746
_instructions
.EmitDup();
2756
_instructions
.EmitDup();
2759
_instructions
.EmitPop();
2763
_instructions
.EmitDup();
2772
_instructions
.EmitPop();
2802
_instructions
.Emit(new QuoteInstruction(unary.Operand, mapping.Count > 0 ? mapping : null));
2913
_instructions
.Emit(NullCheckInstruction.Instance);
2925
_instructions
.EmitLoad(node.TypeOperand == typeof(void), typeof(bool));
2929
_instructions
.EmitLoad(node.TypeOperand.GetNonNullableType());
2930
_instructions
.EmitTypeEquals();
2937
_instructions
.EmitTypeAs(node.Type);
2958
_instructions
.EmitPop();
2961
_instructions
.EmitLoad(result == AnalyzeTypeIsResult.KnownTrue);
2967
_instructions
.EmitLoad(null);
2968
_instructions
.EmitNotEqual(typeof(object));
2973
_instructions
.EmitLoad(node.TypeOperand.GetNonNullableType());
2974
_instructions
.EmitTypeEquals();
2978
_instructions
.EmitTypeIs(node.TypeOperand);
2999
int startingStackDepth =
_instructions
.CurrentStackDepth;
3024
_instructions
.EmitPop();
3028
Debug.Assert(
_instructions
.CurrentStackDepth == startingStackDepth);
3046
int startingStackDepth =
_instructions
.CurrentStackDepth;
3118
Debug.Assert(
_instructions
.CurrentStackDepth == startingStackDepth + (expr.Type == typeof(void) ? 0 : 1),
3119
$"{
_instructions
.CurrentStackDepth} vs {startingStackDepth + (expr.Type == typeof(void) ? 0 : 1)} for {expr.NodeType}");