1 write to _instructions
System.Linq.Expressions (1)
System\Linq\Expressions\Interpreter\LightCompiler.cs (1)
298
_instructions
= new InstructionList();
383 references to _instructions
System.Linq.Expressions (383)
System\Linq\Expressions\Interpreter\LightCompiler.cs (383)
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);
1367
_instructions
.EmitCall(expr.Method);
1369
_instructions
.MarkLabel(labEnd);
1374
BranchLabel computeRight =
_instructions
.MakeLabel();
1375
BranchLabel returnFalse =
_instructions
.MakeLabel();
1376
BranchLabel returnNull =
_instructions
.MakeLabel();
1377
BranchLabel returnValue =
_instructions
.MakeLabel();
1378
LocalDefinition result = _locals.DefineLocal(Expression.Parameter(node.Left.Type),
_instructions
.Count);
1379
LocalDefinition leftTemp = _locals.DefineLocal(Expression.Parameter(node.Left.Type),
_instructions
.Count);
1382
_instructions
.EmitStoreLocal(leftTemp.Index);
1384
_instructions
.EmitLoadLocal(leftTemp.Index);
1385
_instructions
.EmitLoad(null, typeof(object));
1386
_instructions
.EmitEqual(typeof(object));
1388
_instructions
.EmitBranchTrue(computeRight);
1390
_instructions
.EmitLoadLocal(leftTemp.Index);
1394
_instructions
.EmitBranchFalse(returnFalse);
1398
_instructions
.EmitBranchTrue(returnFalse);
1402
_instructions
.MarkLabel(computeRight);
1403
LocalDefinition rightTemp = _locals.DefineLocal(Expression.Parameter(node.Right.Type),
_instructions
.Count);
1405
_instructions
.EmitStoreLocal(rightTemp.Index);
1407
_instructions
.EmitLoadLocal(rightTemp.Index);
1408
_instructions
.EmitLoad(null, typeof(object));
1409
_instructions
.EmitEqual(typeof(object));
1410
_instructions
.EmitBranchTrue(returnNull);
1412
_instructions
.EmitLoadLocal(rightTemp.Index);
1415
_instructions
.EmitBranchFalse(returnFalse);
1419
_instructions
.EmitBranchTrue(returnFalse);
1423
_instructions
.EmitLoadLocal(leftTemp.Index);
1424
_instructions
.EmitLoad(null, typeof(object));
1425
_instructions
.EmitEqual(typeof(object));
1426
_instructions
.EmitBranchTrue(returnNull);
1429
_instructions
.EmitLoad(andAlso ? AstUtils.BoxedTrue : AstUtils.BoxedFalse, typeof(object));
1430
_instructions
.EmitStoreLocal(result.Index);
1431
_instructions
.EmitBranch(returnValue);
1434
_instructions
.MarkLabel(returnFalse);
1435
_instructions
.EmitLoad(andAlso ? AstUtils.BoxedFalse : AstUtils.BoxedTrue, typeof(object));
1436
_instructions
.EmitStoreLocal(result.Index);
1437
_instructions
.EmitBranch(returnValue);
1440
_instructions
.MarkLabel(returnNull);
1441
_instructions
.EmitLoad(null, typeof(object));
1442
_instructions
.EmitStoreLocal(result.Index);
1444
_instructions
.MarkLabel(returnValue);
1445
_instructions
.EmitLoadLocal(result.Index);
1447
_locals.UndefineLocal(leftTemp,
_instructions
.Count);
1448
_locals.UndefineLocal(rightTemp,
_instructions
.Count);
1449
_locals.UndefineLocal(result,
_instructions
.Count);
1454
BranchLabel elseLabel =
_instructions
.MakeLabel();
1455
BranchLabel endLabel =
_instructions
.MakeLabel();
1460
_instructions
.EmitBranchFalse(elseLabel);
1464
_instructions
.EmitBranchTrue(elseLabel);
1467
_instructions
.EmitBranch(endLabel, hasResult: false, hasValue: true);
1468
_instructions
.MarkLabel(elseLabel);
1469
_instructions
.EmitLoad(!andAlso);
1470
_instructions
.MarkLabel(endLabel);
1480
BranchLabel endOfFalse =
_instructions
.MakeLabel();
1481
_instructions
.EmitBranchTrue(endOfFalse);
1483
_instructions
.MarkLabel(endOfFalse);
1487
BranchLabel endOfTrue =
_instructions
.MakeLabel();
1488
_instructions
.EmitBranchFalse(endOfTrue);
1493
BranchLabel endOfFalse =
_instructions
.MakeLabel();
1494
_instructions
.EmitBranch(endOfFalse, false, !asVoid);
1495
_instructions
.MarkLabel(endOfTrue);
1497
_instructions
.MarkLabel(endOfFalse);
1501
_instructions
.MarkLabel(endOfTrue);
1514
_instructions
.MarkLabel(continueLabel.GetLabel(this));
1520
_instructions
.EmitBranch(continueLabel.GetLabel(this), node.Type != typeof(void), hasValue: false);
1522
_instructions
.MarkLabel(breakLabel.GetLabel(this));
1599
LocalDefinition temp = _locals.DefineLocal(Expression.Parameter(node.SwitchValue.Type),
_instructions
.Count);
1601
_instructions
.EmitStoreLocal(temp.Index);
1625
_locals.UndefineLocal(temp,
_instructions
.Count);
1635
int switchIndex =
_instructions
.Count;
1636
_instructions
.EmitIntSwitch(caseDict);
1646
_instructions
.EmitBranch(end.GetLabel(this), false, hasValue);
1652
int caseOffset =
_instructions
.Count - switchIndex;
1663
_instructions
.EmitBranch(end.GetLabel(this), false, hasValue);
1667
_instructions
.MarkLabel(end.GetLabel(this));
1677
int switchIndex =
_instructions
.Count;
1680
_instructions
.EmitStringSwitch(caseDict, nullCase);
1690
_instructions
.EmitBranch(end.GetLabel(this), false, hasValue);
1696
int caseOffset =
_instructions
.Count - switchIndex;
1717
_instructions
.EmitBranch(end.GetLabel(this), false, hasValue);
1721
_instructions
.MarkLabel(end.GetLabel(this));
1761
_instructions
.MarkLabel(label.GetLabel(this));
1774
_instructions
.EmitGoto(labelInfo.GetLabel(this),
1943
_instructions
.EmitRethrowVoid();
1947
_instructions
.EmitRethrow();
1955
_instructions
.EmitThrowVoid();
1959
_instructions
.EmitThrow();
1973
BranchLabel end =
_instructions
.MakeLabel();
1974
BranchLabel gotoEnd =
_instructions
.MakeLabel();
1975
int tryStart =
_instructions
.Count;
1980
startOfFinally =
_instructions
.MakeLabel();
1981
_instructions
.EmitEnterTryFinally(startOfFinally);
1985
_instructions
.EmitEnterTryCatch();
1989
var enterTryInstr =
_instructions
.GetInstruction(tryStart) as EnterTryCatchFinallyInstruction;
1997
int tryEnd =
_instructions
.Count;
2000
_instructions
.MarkLabel(gotoEnd);
2001
_instructions
.EmitGoto(end, hasValue, hasValue, hasValue);
2011
LocalDefinition local = _locals.DefineLocal(parameter,
_instructions
.Count);
2020
_instructions
.EmitEnterExceptionFilter();
2023
int filterLabel =
_instructions
.MarkRuntimeLabel();
2024
int filterStart =
_instructions
.Count;
2030
filter = new ExceptionFilter(filterLabel, filterStart,
_instructions
.Count);
2033
_instructions
.EmitLeaveExceptionFilter();
2043
_instructions
.EmitEnterExceptionHandlerNonVoid();
2047
_instructions
.EmitEnterExceptionHandlerVoid();
2051
int handlerLabel =
_instructions
.MarkRuntimeLabel();
2052
int handlerStart =
_instructions
.Count;
2060
_instructions
.EmitLeaveExceptionHandler(hasValue, gotoEnd);
2062
exHandlers.Add(new ExceptionHandler(handlerLabel, handlerStart,
_instructions
.Count, handler.Test, filter));
2065
_locals.UndefineLocal(local,
_instructions
.Count);
2074
_instructions
.MarkLabel(startOfFinally);
2075
_instructions
.EmitEnterFinally(startOfFinally);
2077
_instructions
.EmitLeaveFinally();
2081
startOfFinally.TargetIndex,
_instructions
.Count,
2092
_instructions
.MarkLabel(end);
2104
int tryStart =
_instructions
.Count;
2105
BranchLabel end =
_instructions
.MakeLabel();
2106
EnterTryFaultInstruction enterTryInstr =
_instructions
.EmitEnterTryFault(end);
2107
Debug.Assert(enterTryInstr ==
_instructions
.GetInstruction(tryStart));
2113
int tryEnd =
_instructions
.Count;
2117
_instructions
.EmitGoto(end, hasValue, hasValue, hasValue);
2122
BranchLabel startOfFault =
_instructions
.MakeLabel();
2123
_instructions
.MarkLabel(startOfFault);
2124
_instructions
.EmitEnterFault(startOfFault);
2126
_instructions
.EmitLeaveFault();
2127
enterTryInstr.SetTryHandler(new TryFaultHandler(tryStart, tryEnd, startOfFault.TargetIndex,
_instructions
.Count));
2130
_instructions
.MarkLabel(end);
2183
_instructions
.EmitNullableCall(method, parameters);
2189
_instructions
.EmitCall(method, parameters);
2193
_instructions
.EmitByRefCall(method, parameters, updaters.ToArray());
2197
updater.UndefineTemps(
_instructions
, _locals);
2205
LocalDefinition left = _locals.DefineLocal(Expression.Parameter(array.Type, nameof(array)),
_instructions
.Count);
2206
LocalDefinition right = _locals.DefineLocal(Expression.Parameter(index.Type, nameof(index)),
_instructions
.Count);
2208
_instructions
.EmitStoreLocal(left.Index);
2210
_instructions
.EmitStoreLocal(right.Index);
2212
_instructions
.EmitLoadLocal(left.Index);
2213
_instructions
.EmitLoadLocal(right.Index);
2214
_instructions
.EmitGetArrayItem();
2270
objTmp = _locals.DefineLocal(Expression.Parameter(indexNode.Object.Type),
_instructions
.Count);
2272
_instructions
.EmitDup();
2273
_instructions
.EmitStoreLocal(objTmp.GetValueOrDefault().Index);
2283
LocalDefinition argTmp = _locals.DefineLocal(Expression.Parameter(arg.Type),
_instructions
.Count);
2284
_instructions
.EmitDup();
2285
_instructions
.EmitStoreLocal(argTmp.Index);
2308
memberTemp = _locals.DefineLocal(Expression.Parameter(member.Expression.Type, "member"),
_instructions
.Count);
2310
_instructions
.EmitDup();
2311
_instructions
.EmitStoreLocal(memberTemp.GetValueOrDefault().Index);
2317
_instructions
.EmitLoadField(field);
2326
_instructions
.EmitCall(property.GetGetMethod(nonPublic: true)!);
2360
LocalDefinition objTmp = _locals.DefineLocal(Expression.Parameter(array.Type),
_instructions
.Count);
2361
_instructions
.EmitDup();
2362
_instructions
.EmitStoreLocal(objTmp.Index);
2371
LocalDefinition argTmp = _locals.DefineLocal(Expression.Parameter(arg.Type),
_instructions
.Count);
2372
_instructions
.EmitDup();
2373
_instructions
.EmitStoreLocal(argTmp.Index);
2378
_instructions
.EmitCall(TypeUtils.GetArrayGetMethod(array.Type));
2416
_instructions
.EmitByRefNew(node.Constructor, parameters, updaters.ToArray());
2420
_instructions
.EmitNew(node.Constructor, parameters);
2429
_instructions
.EmitLoad(value: null);
2433
_instructions
.EmitDefaultValue(type);
2452
_instructions
.EmitLoad(fi.GetValue(obj: null), fi.FieldType);
2463
_instructions
.EmitLoad(fi.GetValue(obj: null), fi.FieldType);
2467
_instructions
.EmitLoadField(fi);
2477
_instructions
.EmitLoadField(fi);
2502
_instructions
.EmitNullableCall(method, Array.Empty<ParameterInfo>());
2506
_instructions
.EmitCall(method);
2530
_instructions
.EmitNewArrayInit(elementType, rank);
2537
_instructions
.EmitNewArray(elementType);
2541
_instructions
.EmitNewArrayBounds(elementType, rank);
2549
int start =
_instructions
.Count;
2571
_instructions
.EmitNewRuntimeVariables(node.Variables.Count);
2588
_instructions
.EmitCreateDelegate(creator);
2617
BranchLabel leftNotNull =
_instructions
.MakeLabel();
2621
_instructions
.EmitCoalescingBranch(leftNotNull);
2622
_instructions
.EmitPop();
2628
end =
_instructions
.MakeLabel();
2629
_instructions
.EmitBranch(end);
2638
_instructions
.MarkLabel(leftNotNull);
2643
LocalDefinition local = _locals.DefineLocal(temp,
_instructions
.Count);
2644
_instructions
.EmitStoreLocal(local.Index);
2650
_locals.UndefineLocal(local,
_instructions
.Count);
2660
_instructions
.MarkLabel(end!);
2701
_instructions
.EmitDup();
2707
_instructions
.EmitCall(add);
2709
_instructions
.EmitPop();
2727
_instructions
.EmitDup();
2737
_instructions
.EmitDup();
2740
_instructions
.EmitPop();
2744
_instructions
.EmitDup();
2753
_instructions
.EmitPop();
2783
_instructions
.Emit(new QuoteInstruction(unary.Operand, mapping.Count > 0 ? mapping : null));
2894
_instructions
.Emit(NullCheckInstruction.Instance);
2906
_instructions
.EmitLoad(node.TypeOperand == typeof(void), typeof(bool));
2910
_instructions
.EmitLoad(node.TypeOperand.GetNonNullableType());
2911
_instructions
.EmitTypeEquals();
2918
_instructions
.EmitTypeAs(node.Type);
2939
_instructions
.EmitPop();
2942
_instructions
.EmitLoad(result == AnalyzeTypeIsResult.KnownTrue);
2948
_instructions
.EmitLoad(null);
2949
_instructions
.EmitNotEqual(typeof(object));
2954
_instructions
.EmitLoad(node.TypeOperand.GetNonNullableType());
2955
_instructions
.EmitTypeEquals();
2959
_instructions
.EmitTypeIs(node.TypeOperand);
2980
int startingStackDepth =
_instructions
.CurrentStackDepth;
3005
_instructions
.EmitPop();
3009
Debug.Assert(
_instructions
.CurrentStackDepth == startingStackDepth);
3027
int startingStackDepth =
_instructions
.CurrentStackDepth;
3099
Debug.Assert(
_instructions
.CurrentStackDepth == startingStackDepth + (expr.Type == typeof(void) ? 0 : 1),
3100
$"{
_instructions
.CurrentStackDepth} vs {startingStackDepth + (expr.Type == typeof(void) ? 0 : 1)} for {expr.NodeType}");