1 write to _builder
Microsoft.CodeAnalysis.CSharp (1)
CodeGen\CodeGenerator.cs (1)
104
_builder
= builder;
529 references to _builder
Microsoft.CodeAnalysis.CSharp (529)
CodeGen\CodeGenerator.cs (24)
195
result =
_builder
.LocalSlotManager.DeclareLocal(
243
asyncCatchHandlerOffset = _diagnostics.HasAnyErrors() ? -1 :
_builder
.GetILOffsetFromMarker(_asyncCatchHandlerOffset);
262
int yieldOffset =
_builder
.GetILOffsetFromMarker(yieldPoints[i]);
263
int resumeOffset =
_builder
.GetILOffsetFromMarker(resumePoints[i]);
291
_builder
.DefineInitialHiddenSequencePoint();
308
_builder
.Realize();
325
_builder
.MarkLabel(s_returnLabel);
349
_builder
.EmitLocalLoad(LazyReturnTemp);
350
_builder
.EmitRet(false);
354
_builder
.EmitRet(true);
362
_builder
.EmitToken(symbol, syntaxNode);
373
_builder
.EmitToken(methodRef, syntaxNode, encodeAsRawDefinitionToken ? Cci.MetadataWriter.RawTokenEncoding.RowId : 0);
379
_builder
.EmitToken(fieldRef, syntaxNode);
384
_builder
.EmitToken(_module.Translate(symbol).Signature, syntaxNode);
413
_builder
.EmitOpCode(ILOpCode.Nop);
436
_builder
.EmitOpCode(ILOpCode.Nop);
445
ArrayBuilder<RawSequencePoint> sequencePoints =
_builder
.SeqPointsOpt;
484
_builder
.EmitConstantValue(ConstantValue.Create(true), syntaxNode);
485
_builder
.EmitBranch(ILOpCode.Brtrue, label);
487
_builder
.EmitOpCode(ILOpCode.Nop);
488
_builder
.MarkLabel(label);
502
_builder
.SetInitialDebugDocument(_methodBodySyntaxOpt.SyntaxTree);
509
_builder
.DefineHiddenSequencePoint();
522
_builder
.DefineSequencePoint(syntaxTree, span);
CodeGen\EmitAddress.cs (27)
76
_builder
.EmitLoadArgumentOpcode(0);
80
_builder
.EmitLoadArgumentAddrOpcode(0);
137
_builder
.EmitLocalAddress(temp); // ldloca temp
138
_builder
.EmitOpCode(ILOpCode.Dup); // dup
139
_builder
.EmitOpCode(ILOpCode.Initobj); // initobj <type>
229
_builder
.EmitBranch(ILOpCode.Br, doneLabel);
232
_builder
.AdjustStack(-1);
234
_builder
.MarkLabel(consequenceLabel);
237
_builder
.MarkLabel(doneLabel);
252
_builder
.EmitBranch(ILOpCode.Brtrue, whenValueTypeLabel);
256
_builder
.EmitBranch(ILOpCode.Br, doneLabel);
257
_builder
.AdjustStack(-1);
259
_builder
.MarkLabel(whenValueTypeLabel);
263
_builder
.MarkLabel(doneLabel);
293
_builder
.EmitLocalAddress(GetLocal(localAccess));
309
_builder
.EmitOpCode(ILOpCode.Dup);
323
_builder
.EmitOpCode(ILOpCode.Refanyval);
338
_builder
.EmitLocalStore(value);
339
_builder
.EmitLocalAddress(value);
406
_builder
.EmitOpCode(ILOpCode.Readonly);
411
_builder
.EmitOpCode(ILOpCode.Ldelema);
417
_builder
.EmitArrayElementAddress(_module.Translate((ArrayTypeSymbol)arrayAccess.Expression.Type),
464
_builder
.EmitOpCode(ILOpCode.Ldsflda);
488
_builder
.EmitLoadArgumentAddrOpcode(slot);
492
_builder
.EmitLoadArgumentOpcode(slot);
564
_builder
.EmitOpCode(field.RefKind == RefKind.None ? ILOpCode.Ldflda : ILOpCode.Ldfld);
587
_builder
.EmitOpCode(ILOpCode.Ldflda);
CodeGen\EmitArrayInitializer.cs (43)
58
_builder
.EmitArrayBlockInitializer(data, inits.Syntax);
90
_builder
.EmitOpCode(ILOpCode.Dup);
91
_builder
.EmitIntConstant(i);
193
_builder
.EmitOpCode(ILOpCode.Dup);
200
_builder
.EmitIntConstant(row.Index);
204
_builder
.EmitIntConstant(i);
555
var field =
_builder
.module.GetFieldForData(data, alignment: 1, wrappedExpression.Syntax, _diagnostics.DiagnosticBag);
556
_builder
.EmitOpCode(ILOpCode.Ldsflda);
557
_builder
.EmitToken(field, wrappedExpression.Syntax);
559
_builder
.EmitIntConstant(lengthForConstructor);
564
_builder
.EmitOpCode(ILOpCode.Call, stackAdjustment: -3);
570
_builder
.EmitOpCode(ILOpCode.Newobj, stackAdjustment: -1);
616
var field =
_builder
.module.GetFieldForData(data, alignment: (ushort)specialElementType.SizeInBytes(), wrappedExpression.Syntax, _diagnostics.DiagnosticBag);
617
_builder
.EmitOpCode(ILOpCode.Ldtoken);
618
_builder
.EmitToken(field, wrappedExpression.Syntax);
619
_builder
.EmitOpCode(ILOpCode.Call, stackAdjustment: 0);
649
var cachingField =
_builder
.module.GetArrayCachingFieldForData(data, _module.Translate(arrayType), wrappedExpression.Syntax, _diagnostics.DiagnosticBag);
654
_builder
.EmitOpCode(ILOpCode.Ldsfld);
655
_builder
.EmitToken(cachingField, wrappedExpression.Syntax);
656
_builder
.EmitOpCode(ILOpCode.Dup);
657
_builder
.EmitBranch(ILOpCode.Brtrue, arrayNotNullLabel);
662
_builder
.EmitOpCode(ILOpCode.Pop);
663
_builder
.EmitIntConstant(elementCount);
664
_builder
.EmitOpCode(ILOpCode.Newarr);
666
_builder
.EmitArrayBlockInitializer(data, wrappedExpression.Syntax);
667
_builder
.EmitOpCode(ILOpCode.Dup);
668
_builder
.EmitOpCode(ILOpCode.Stsfld);
669
_builder
.EmitToken(cachingField, wrappedExpression.Syntax);
673
_builder
.MarkLabel(arrayNotNullLabel);
674
_builder
.EmitOpCode(ILOpCode.Newobj, 0);
707
Cci.IFieldReference cachingField =
_builder
.module.GetArrayCachingFieldForConstants(constants, _module.Translate(arrayType),
714
_builder
.EmitOpCode(ILOpCode.Ldsfld);
715
_builder
.EmitToken(cachingField, arrayCreation.Syntax);
716
_builder
.EmitOpCode(ILOpCode.Dup);
717
_builder
.EmitBranch(ILOpCode.Brtrue, arrayNotNullLabel);
721
_builder
.EmitOpCode(ILOpCode.Pop);
723
_builder
.EmitOpCode(ILOpCode.Dup);
724
_builder
.EmitOpCode(ILOpCode.Stsfld);
725
_builder
.EmitToken(cachingField, arrayCreation.Syntax);
729
_builder
.MarkLabel(arrayNotNullLabel);
734
_builder
.EmitOpCode(ILOpCode.Call, stackAdjustment: -2);
740
_builder
.EmitOpCode(ILOpCode.Newobj, stackAdjustment: 0);
760
_builder
.EmitOpCode(ILOpCode.Initobj);
CodeGen\EmitConversion.cs (16)
48
_builder
.EmitIntConstant(0);
49
_builder
.EmitOpCode(ILOpCode.Conv_u);
85
_builder
.EmitOpCode(ILOpCode.Call, stackAdjustment: 0);
168
_builder
.EmitNumericConversion(fromPredefTypeKind, toPredefTypeKind, conversion.Checked);
174
_builder
.EmitOpCode(ILOpCode.Conv_u);
253
_builder
.EmitNumericConversion(fromPredefTypeKind, toPredefTypeKind, conversion.Checked);
273
_builder
.EmitOpCode(ILOpCode.Unbox_any);
305
_builder
.EmitOpCode(ILOpCode.Castclass);
310
_builder
.EmitOpCode(ILOpCode.Unbox_any);
339
_builder
.EmitNumericConversion(fromPredefTypeKind, toPredefTypeKind, conversion.Checked);
358
_builder
.EmitNullConstant();
367
_builder
.EmitOpCode(ILOpCode.Constrained);
388
_builder
.EmitOpCode(ILOpCode.Dup);
389
_builder
.EmitOpCode(ILOpCode.Ldvirtftn);
396
_builder
.EmitOpCode(ILOpCode.Ldftn);
402
_builder
.EmitOpCode(ILOpCode.Newobj, -1); // pop 2 args and push delegate object
CodeGen\EmitExpression.cs (202)
177
_builder
.EmitOpCode(ILOpCode.Ldarg_0);
386
_builder
.EmitBranch(ILOpCode.Brtrue, whenValueTypeLabel);
389
_builder
.EmitBranch(ILOpCode.Br, doneLabel);
393
_builder
.AdjustStack(-1);
396
_builder
.MarkLabel(whenValueTypeLabel);
399
_builder
.MarkLabel(doneLabel);
470
_builder
.EmitBranch(ILOpCode.Brtrue, whenNotNullLabel);
474
_builder
.EmitLocalStore(cloneTemp);
475
_builder
.EmitLocalAddress(cloneTemp);
476
_builder
.EmitLocalLoad(cloneTemp);
487
_builder
.EmitOpCode(ILOpCode.Dup);
499
_builder
.EmitOpCode(ILOpCode.Dup);
520
_builder
.EmitOpCode(ILOpCode.Call, stackAdjustment: 0);
524
_builder
.EmitBranch(ILOpCode.Brtrue, whenNotNullLabel);
536
_builder
.EmitOpCode(ILOpCode.Pop);
549
_builder
.EmitBranch(ILOpCode.Br, doneLabel);
557
_builder
.AdjustStack(+1);
565
_builder
.AdjustStack(-1);
568
_builder
.MarkLabel(whenNotNullLabel);
581
_builder
.MarkLabel(doneLabel);
676
_builder
.EmitOpCode(ILOpCode.Mkrefany);
688
_builder
.EmitOpCode(ILOpCode.Refanytype);
689
_builder
.EmitOpCode(ILOpCode.Call, stackAdjustment: 0);
698
_builder
.EmitOpCode(ILOpCode.Arglist);
768
_builder
.EmitOpCode(ILOpCode.Conv_u);
792
_builder
.EmitOpCode(ILOpCode.Dup);
797
_builder
.EmitOpCode(ILOpCode.Dup);
819
_builder
.EmitOpCode(ILOpCode.Ldarg_0);
884
_builder
.OpenLocalScope();
899
_builder
.CloseLocalScope();
918
_builder
.OpenLocalScope();
939
_builder
.CloseLocalScope();
1034
_builder
.EmitOpCode(ILOpCode.Ldelem_i1);
1039
_builder
.EmitOpCode(ILOpCode.Ldelem_u1);
1043
_builder
.EmitOpCode(ILOpCode.Ldelem_i2);
1048
_builder
.EmitOpCode(ILOpCode.Ldelem_u2);
1052
_builder
.EmitOpCode(ILOpCode.Ldelem_i4);
1056
_builder
.EmitOpCode(ILOpCode.Ldelem_u4);
1061
_builder
.EmitOpCode(ILOpCode.Ldelem_i8);
1068
_builder
.EmitOpCode(ILOpCode.Ldelem_i);
1072
_builder
.EmitOpCode(ILOpCode.Ldelem_r4);
1076
_builder
.EmitOpCode(ILOpCode.Ldelem_r8);
1082
_builder
.EmitOpCode(ILOpCode.Ldelem_ref);
1088
_builder
.EmitOpCode(ILOpCode.Ldelem);
1096
_builder
.EmitOpCode(ILOpCode.Readonly);
1099
_builder
.EmitOpCode(ILOpCode.Ldelema);
1109
_builder
.EmitArrayElementLoad(_module.Translate((ArrayTypeSymbol)arrayAccess.Expression.Type), arrayAccess.Expression.Syntax);
1125
_builder
.EmitOpCode(ILOpCode.Pop);
1173
_builder
.EmitOpCode(ILOpCode.Volatile);
1175
_builder
.EmitOpCode(ILOpCode.Ldsfld);
1199
_builder
.EmitOpCode(ILOpCode.Volatile);
1202
_builder
.EmitOpCode(ILOpCode.Ldfld);
1248
_builder
.EmitOpCode(ILOpCode.Unbox);
1262
_builder
.EmitOpCode(ILOpCode.Ldflda);
1414
_builder
.EmitLocalLoad(definition);
1445
_builder
.EmitLoadArgumentOpcode(slot);
1467
_builder
.EmitOpCode(ILOpCode.Ldind_i1);
1472
_builder
.EmitOpCode(ILOpCode.Ldind_u1);
1476
_builder
.EmitOpCode(ILOpCode.Ldind_i2);
1481
_builder
.EmitOpCode(ILOpCode.Ldind_u2);
1485
_builder
.EmitOpCode(ILOpCode.Ldind_i4);
1489
_builder
.EmitOpCode(ILOpCode.Ldind_u4);
1494
_builder
.EmitOpCode(ILOpCode.Ldind_i8);
1501
_builder
.EmitOpCode(ILOpCode.Ldind_i);
1505
_builder
.EmitOpCode(ILOpCode.Ldind_r4);
1509
_builder
.EmitOpCode(ILOpCode.Ldind_r8);
1515
_builder
.EmitOpCode(ILOpCode.Ldind_ref);
1519
_builder
.EmitOpCode(ILOpCode.Ldobj);
1674
_builder
.EmitOpCode(ILOpCode.Initobj); // initobj <MyStruct>
1688
var countBefore =
_builder
.LocalSlotManager.StartScopeOfTrackingAddressedLocals();
1692
_builder
.LocalSlotManager.EndScopeOfTrackingAddressedLocals(countBefore,
1704
_builder
.EmitOpCode(ILOpCode.Constrained);
1708
_builder
.EmitOpCode(ILOpCode.Call, stackBehavior);
1724
var countBefore =
_builder
.LocalSlotManager.StartScopeOfTrackingAddressedLocals();
1792
_builder
.LocalSlotManager.EndScopeOfTrackingAddressedLocals(countBefore, MightEscapeTemporaryRefs(call, used: true));
1794
countBefore =
_builder
.LocalSlotManager.StartScopeOfTrackingAddressedLocals();
1831
_builder
.EmitLocalStore(tempOpt);
1832
_builder
.EmitLocalAddress(tempOpt);
1857
_builder
.LocalSlotManager.EndScopeOfTrackingAddressedLocals(countBefore, MightEscapeTemporaryRefs(call, used: useKind != UseKind.Unused));
2050
_builder
.EmitOpCode(ILOpCode.Call, stackBehavior);
2054
_builder
.EmitOpCode(ILOpCode.Callvirt, stackBehavior);
2058
_builder
.EmitOpCode(ILOpCode.Constrained);
2060
_builder
.EmitOpCode(ILOpCode.Callvirt, stackBehavior);
2105
_builder
.EmitBranch(ILOpCode.Brtrue, whenNotNullLabel);
2112
_builder
.EmitLocalStore(tempOpt);
2113
_builder
.EmitLocalAddress(tempOpt);
2117
_builder
.MarkLabel(whenNotNullLabel);
2382
_builder
.EmitOpCode(ILOpCode.Conv_ovf_i);
2386
_builder
.EmitOpCode(ILOpCode.Conv_ovf_i_un);
2405
_builder
.EmitOpCode(ILOpCode.Ldlen);
2419
_builder
.EmitNumericConversion(typeFrom, typeTo, @checked: false);
2432
_builder
.EmitOpCode(ILOpCode.Newarr);
2437
_builder
.EmitArrayCreation(_module.Translate(arrayType), expression.Syntax);
2502
var countBefore =
_builder
.LocalSlotManager.StartScopeOfTrackingAddressedLocals();
2506
_builder
.LocalSlotManager.EndScopeOfTrackingAddressedLocals(countBefore,
2510
_builder
.EmitOpCode(ILOpCode.Newobj, stackAdjustment);
2734
_builder
.EmitOpCode(ILOpCode.Initobj); // initobj <MyStruct>
2765
var countBefore =
_builder
.LocalSlotManager.StartScopeOfTrackingAddressedLocals();
2769
_builder
.LocalSlotManager.EndScopeOfTrackingAddressedLocals(countBefore,
2774
_builder
.EmitOpCode(ILOpCode.Call, stackAdjustment);
2797
if (local != null && !
_builder
.PossiblyDefinedOutsideOfTry(GetLocal(local)))
2867
_builder
.EmitLoadArgumentOpcode(ParameterSlot(left));
2901
_builder
.EmitLocalLoad(localDefinition);
3096
_builder
.EmitOpCode(ILOpCode.Dup);
3122
_builder
.EmitLocalStore(temp);
3159
_builder
.EmitLocalStore(GetLocal(local));
3241
_builder
.EmitLocalAddress(temp);
3245
_builder
.EmitLocalLoad(temp);
3260
_builder
.EmitOpCode(ILOpCode.Stobj);
3272
_builder
.EmitArrayElementStore(_module.Translate(arrayType), syntaxNode);
3294
_builder
.EmitOpCode(ILOpCode.Stelem_i1);
3300
_builder
.EmitOpCode(ILOpCode.Stelem_i2);
3305
_builder
.EmitOpCode(ILOpCode.Stelem_i4);
3310
_builder
.EmitOpCode(ILOpCode.Stelem_i8);
3317
_builder
.EmitOpCode(ILOpCode.Stelem_i);
3321
_builder
.EmitOpCode(ILOpCode.Stelem_r4);
3325
_builder
.EmitOpCode(ILOpCode.Stelem_r8);
3331
_builder
.EmitOpCode(ILOpCode.Stelem_ref);
3335
_builder
.EmitOpCode(ILOpCode.Stelem);
3348
_builder
.EmitOpCode(ILOpCode.Volatile);
3359
_builder
.EmitOpCode(field.IsStatic ? ILOpCode.Stsfld : ILOpCode.Stfld);
3375
_builder
.EmitStoreArgumentOpcode(slot);
3392
_builder
.EmitOpCode(ILOpCode.Stind_i1);
3398
_builder
.EmitOpCode(ILOpCode.Stind_i2);
3403
_builder
.EmitOpCode(ILOpCode.Stind_i4);
3408
_builder
.EmitOpCode(ILOpCode.Stind_i8);
3415
_builder
.EmitOpCode(ILOpCode.Stind_i);
3419
_builder
.EmitOpCode(ILOpCode.Stind_r4);
3423
_builder
.EmitOpCode(ILOpCode.Stind_r8);
3429
_builder
.EmitOpCode(ILOpCode.Stind_ref);
3433
_builder
.EmitOpCode(ILOpCode.Stobj);
3444
_builder
.EmitOpCode(ILOpCode.Pop);
3460
_builder
.EmitOpCode(ILOpCode.Isinst);
3465
_builder
.EmitOpCode(ILOpCode.Ldnull);
3466
_builder
.EmitOpCode(ILOpCode.Cgt_un);
3489
_builder
.EmitOpCode(ILOpCode.Isinst);
3494
_builder
.EmitOpCode(ILOpCode.Unbox_any);
3510
_builder
.EmitConstantValue(constantValue, syntaxNode);
3518
_builder
.EmitOpCode(ILOpCode.Ldc_i4_0);
3519
_builder
.EmitOpCode(ILOpCode.Conv_u);
3523
_builder
.EmitOpCode(ILOpCode.Ldc_i4_0);
3524
_builder
.EmitOpCode(ILOpCode.Conv_i);
3559
_builder
.EmitConstantValue(constantValue, syntaxNode);
3568
_builder
.EmitLocalAddress(temp); // ldloca temp
3569
_builder
.EmitOpCode(ILOpCode.Initobj); // initobj <MyStruct>
3571
_builder
.EmitLocalLoad(temp); // ldloc temp
3578
_builder
.EmitOpCode(ILOpCode.Call, stackAdjustment: 0); //argument off, return value on
3587
_builder
.EmitOpCode(ILOpCode.Ldtoken);
3595
_builder
.EmitOpCode(ILOpCode.Sizeof);
3603
_builder
.EmitOpCode(ILOpCode.Ldtoken);
3623
_builder
.EmitIntConstant(GetLocal(node.Local).SlotIndex);
3637
_builder
.EmitIntConstant(node.Parameter.Ordinal);
3650
_builder
.EmitOpCode(ILOpCode.Ldtoken);
3651
_builder
.EmitToken(fieldRef, syntax, Cci.MetadataWriter.RawTokenEncoding.LiftedVariableId);
3657
_builder
.EmitOpCode(ILOpCode.Ldtoken);
3658
_builder
.EmitGreatestMethodToken();
3663
_builder
.EmitOpCode(ILOpCode.Ldsfld);
3669
_builder
.EmitOpCode(ILOpCode.Stsfld);
3675
_builder
.EmitToken(
3684
_builder
.EmitOpCode(ILOpCode.Ldsflda);
3685
_builder
.EmitToken(
3694
_builder
.EmitOpCode(ILOpCode.Call, -1);
3695
_builder
.EmitToken(
3704
_builder
.EmitOpCode(ILOpCode.Ldsfld);
3705
_builder
.EmitToken(
3712
_builder
.EmitOpCode(ILOpCode.Ldstr);
3713
_builder
.EmitModuleVersionIdStringToken();
3718
_builder
.EmitOpCode(ILOpCode.Ldsfld);
3724
_builder
.EmitOpCode(ILOpCode.Stsfld);
3730
_builder
.EmitToken(_module.GetInstrumentationPayloadRoot(node.AnalysisKind, _module.Translate(node.Type, node.Syntax, _diagnostics.DiagnosticBag), node.Syntax, _diagnostics.DiagnosticBag), node.Syntax);
3736
_builder
.EmitOpCode(ILOpCode.Ldtoken);
3737
_builder
.EmitSourceDocumentIndexToken(node.Document);
3742
_builder
.EmitOpCode(ILOpCode.Ldtoken);
3750
_builder
.EmitOpCode(ILOpCode.Call, stackAdjustment: 0); //argument off, return value on
3755
_builder
.EmitOpCode(ILOpCode.Ldtoken);
3757
_builder
.EmitOpCode(ILOpCode.Call, stackAdjustment: -1); //2 arguments off, return value on
3763
_builder
.EmitOpCode(ILOpCode.Castclass);
3770
_builder
.EmitOpCode(ILOpCode.Ldtoken);
3777
_builder
.EmitOpCode(ILOpCode.Call, stackAdjustment: 0); //argument off, return value on
3782
_builder
.EmitOpCode(ILOpCode.Ldtoken);
3784
_builder
.EmitOpCode(ILOpCode.Call, stackAdjustment: -1); //2 arguments off, return value on
3790
_builder
.EmitOpCode(ILOpCode.Castclass);
3823
_builder
.EmitNumericConversion(Cci.PrimitiveTypeCode.Int32, toType, @checked: false);
3867
_builder
.EmitBranch(ILOpCode.Br, doneLabel);
3871
_builder
.AdjustStack(-1);
3874
_builder
.MarkLabel(consequenceLabel);
3891
_builder
.MarkLabel(doneLabel);
3927
_builder
.EmitOpCode(ILOpCode.Dup);
3936
_builder
.EmitBranch(ILOpCode.Brtrue, ifLeftNotNullLabel);
3940
_builder
.EmitOpCode(ILOpCode.Pop);
3954
_builder
.MarkLabel(ifLeftNotNullLabel);
4069
_builder
.EmitLocalStore(temp);
4070
_builder
.EmitLocalLoad(temp);
4078
_builder
.EmitOpCode(ILOpCode.Box);
4094
_builder
.EmitLocalStore(temp);
4099
var countBefore =
_builder
.LocalSlotManager.StartScopeOfTrackingAddressedLocals();
4103
_builder
.LocalSlotManager.EndScopeOfTrackingAddressedLocals(countBefore,
4110
_builder
.EmitLocalLoad(temp);
4114
_builder
.EmitOpCode(ILOpCode.Calli, stackBehavior);
4160
_builder
.EmitOpCode(ILOpCode.Nop);
4186
_builder
.EmitOpCode(ILOpCode.Constrained);
4190
_builder
.EmitOpCode(ILOpCode.Ldftn);
CodeGen\EmitOperators.cs (55)
43
_builder
.EmitOpCode(ILOpCode.Neg);
47
_builder
.EmitOpCode(ILOpCode.Not);
180
_builder
.EmitOpCode(ILOpCode.Mul);
184
_builder
.EmitOpCode(ILOpCode.Add);
188
_builder
.EmitOpCode(ILOpCode.Sub);
194
_builder
.EmitOpCode(ILOpCode.Div_un);
198
_builder
.EmitOpCode(ILOpCode.Div);
205
_builder
.EmitOpCode(ILOpCode.Rem_un);
209
_builder
.EmitOpCode(ILOpCode.Rem);
214
_builder
.EmitOpCode(ILOpCode.Shl);
220
_builder
.EmitOpCode(ILOpCode.Shr_un);
224
_builder
.EmitOpCode(ILOpCode.Shr);
229
_builder
.EmitOpCode(ILOpCode.Shr_un);
233
_builder
.EmitOpCode(ILOpCode.And);
237
_builder
.EmitOpCode(ILOpCode.Xor);
241
_builder
.EmitOpCode(ILOpCode.Or);
277
_builder
.EmitBranch(ILOpCode.Br, labEnd);
280
_builder
.AdjustStack(-1);
282
_builder
.MarkLabel(lazyFallThrough);
283
_builder
.EmitBoolConstant(stopValue);
284
_builder
.MarkLabel(labEnd);
384
_builder
.EmitBranch(sense ? ILOpCode.Brtrue_s : ILOpCode.Brfalse_s, falseLabel);
385
_builder
.EmitBoolConstant(true);
386
_builder
.EmitBranch(ILOpCode.Br, endLabel);
388
_builder
.AdjustStack(-1);
389
_builder
.MarkLabel(falseLabel);
390
_builder
.EmitBoolConstant(false);
391
_builder
.MarkLabel(endLabel);
464
_builder
.EmitConstantValue(nullOrZero, comparand.Syntax);
465
_builder
.EmitOpCode(ILOpCode.Cgt_un);
478
_builder
.EmitConstantValue(nullOrZero, comparand.Syntax);
479
_builder
.EmitOpCode(ILOpCode.Ceq);
486
_builder
.EmitOpCode(opCode);
503
_builder
.EmitBoolConstant(constant == sense);
536
_builder
.EmitBoolConstant(constantValue.BooleanValue == sense);
554
_builder
.EmitOpCode(ILOpCode.Ldnull);
555
_builder
.EmitOpCode(sense ? ILOpCode.Cgt_un : ILOpCode.Ceq);
563
_builder
.EmitOpCode(ILOpCode.Ldc_i4_0);
564
_builder
.EmitOpCode(sense ? ILOpCode.Cgt_un : ILOpCode.Ceq);
603
_builder
.EmitOpCode(ILOpCode.Ldc_i4_0);
607
_builder
.EmitOpCode(ILOpCode.Conv_i8);
611
_builder
.EmitOpCode(ILOpCode.Conv_i);
615
_builder
.EmitOpCode(ILOpCode.Sub_ovf);
682
_builder
.EmitNumericConversion(Microsoft.Cci.PrimitiveTypeCode.Int32, Microsoft.Cci.PrimitiveTypeCode.UInt8, @checked);
685
_builder
.EmitNumericConversion(Microsoft.Cci.PrimitiveTypeCode.Int32, Microsoft.Cci.PrimitiveTypeCode.Int8, @checked);
688
_builder
.EmitNumericConversion(Microsoft.Cci.PrimitiveTypeCode.Int32, Microsoft.Cci.PrimitiveTypeCode.Int16, @checked);
691
_builder
.EmitNumericConversion(Microsoft.Cci.PrimitiveTypeCode.Int32, Microsoft.Cci.PrimitiveTypeCode.UInt16, @checked);
705
_builder
.EmitOpCode(ILOpCode.Mul_ovf_un);
709
_builder
.EmitOpCode(ILOpCode.Mul_ovf);
716
_builder
.EmitOpCode(ILOpCode.Add_ovf_un);
720
_builder
.EmitOpCode(ILOpCode.Add_ovf);
727
_builder
.EmitOpCode(ILOpCode.Sub_ovf_un);
731
_builder
.EmitOpCode(ILOpCode.Sub_ovf);
758
_builder
.EmitOpCode(ILOpCode.Ldc_i4_0);
759
_builder
.EmitOpCode(ILOpCode.Ceq);
CodeGen\EmitStackAllocInitializer.cs (35)
51
_builder
.EmitOpCode(ILOpCode.Dup);
52
_builder
.EmitIntConstant(data[0]);
53
_builder
.EmitIntConstant(data.Length);
54
_builder
.EmitOpCode(ILOpCode.Initblk, -3);
59
var field =
_builder
.module.GetFieldForData(data, alignment: 1, inits.Syntax, _diagnostics.DiagnosticBag);
60
_builder
.EmitOpCode(ILOpCode.Dup);
61
_builder
.EmitOpCode(ILOpCode.Ldsflda);
62
_builder
.EmitToken(field, inits.Syntax);
63
_builder
.EmitIntConstant(data.Length);
64
_builder
.EmitUnaligned(alignment: 1);
65
_builder
.EmitOpCode(ILOpCode.Cpblk, -3);
78
_builder
.EmitOpCode(ILOpCode.Dup);
82
var field =
_builder
.module.GetFieldForData(data, alignment: (ushort)sizeInBytes, syntaxNode, _diagnostics.DiagnosticBag);
83
_builder
.EmitOpCode(ILOpCode.Ldtoken);
84
_builder
.EmitToken(field, syntaxNode);
85
_builder
.EmitOpCode(ILOpCode.Call, 0);
87
_builder
.EmitToken(createSpanHelperReference, syntaxNode);
90
_builder
.EmitLocalStore(temp);
91
_builder
.EmitLocalAddress(temp);
94
_builder
.EmitIntConstant(0);
95
_builder
.EmitOpCode(ILOpCode.Call, -1);
98
_builder
.EmitIntConstant(data.Length);
101
_builder
.EmitUnaligned((sbyte)sizeInBytes);
103
_builder
.EmitOpCode(ILOpCode.Cpblk, -3);
125
_builder
.EmitOpCode(ILOpCode.Localloc);
189
_builder
.EmitOpCode(ILOpCode.Dup);
208
_builder
.EmitIntConstant(index);
209
_builder
.EmitOpCode(ILOpCode.Add);
214
_builder
.EmitOpCode(ILOpCode.Add);
218
_builder
.EmitIntConstant(index);
219
_builder
.EmitOpCode(ILOpCode.Conv_i);
221
_builder
.EmitOpCode(ILOpCode.Mul);
222
_builder
.EmitOpCode(ILOpCode.Add);
230
_builder
.EmitOpCode(ILOpCode.Sizeof);
235
_builder
.EmitIntConstant(elementTypeSizeInBytes);
CodeGen\EmitStatement.cs (127)
111
_builder
.AssertStackEmpty();
120
int n =
_builder
.InstructionsEmitted;
122
return
_builder
.InstructionsEmitted - n;
140
_builder
.EmitOpCode(ILOpCode.Nop);
152
_asyncYieldPoints.Add(
_builder
.AllocateILMarker());
158
_asyncResumePoints.Add(
_builder
.AllocateILMarker());
186
_builder
.EmitThrow(isRethrow: thrown == null);
406
_builder
.EmitBranch(ILOpCode.Br, dest);
440
_builder
.MarkLabel(fallThrough);
518
_builder
.EmitBranch(ilcode, dest, revOpCode);
559
_builder
.MarkLabel(fallThrough);
595
_builder
.EmitOpCode(ILOpCode.Isinst);
599
_builder
.EmitBranch(ilcode, dest);
618
_builder
.EmitBranch(ilcode, dest);
635
_builder
.MarkLabel(boundLabelStatement.Label);
640
_builder
.EmitBranch(ILOpCode.Br, boundGotoStatement.Label);
682
_builder
.OpenLocalScope();
700
_builder
.AssertStackEmpty();
714
_builder
.OpenLocalScope(ScopeType.TryCatchFinally);
716
_builder
.OpenLocalScope(ScopeType.Try);
719
_builder
.CloseLocalScope(); // try
721
_builder
.OpenLocalScope(ScopeType.Finally);
729
_builder
.CloseLocalScope(); // finally
731
_builder
.CloseLocalScope(); // try-finally
745
_builder
.CloseLocalScope();
755
_builder
.OpenLocalScope();
775
_builder
.EmitBranch(ILOpCode.Br, s_returnLabel);
790
_builder
.CloseLocalScope();
806
_builder
.OpenLocalScope();
815
_builder
.AddLocalToScope(
_builder
.LocalSlotManager.GetLocal(local));
821
_builder
.CloseLocalScope();
826
_builder
.OpenLocalScope(ScopeType.StateMachineVariable);
831
_builder
.DefineUserDefinedStateMachineHoistedLocal(field.SlotIndex);
836
_builder
.CloseLocalScope();
858
_builder
.InExceptionHandler;
869
!
_builder
.InExceptionHandler;
891
_builder
.EmitLocalStore(LazyReturnTemp);
900
_builder
.EmitBranch(ILOpCode.Br, s_returnLabel);
914
_builder
.EmitLocalStore(LazyReturnTemp);
927
_builder
.EmitRet(expressionOpt == null);
946
_builder
.AssertStackEmpty();
955
_builder
.OpenLocalScope(ScopeType.TryCatchFinally);
957
_builder
.OpenLocalScope(ScopeType.Try);
974
_builder
.CloseLocalScope();
986
_builder
.OpenLocalScope(statement.PreferFaultHandler ? ScopeType.Fault : ScopeType.Finally);
990
_builder
.CloseLocalScope();
993
_builder
.CloseLocalScope();
1014
_builder
.CloseLocalScope();
1063
_builder
.AdjustStack(1); // Account for exception on the stack.
1074
_builder
.OpenLocalScope(ScopeType.Catch, exceptionType);
1107
_builder
.OpenLocalScope(ScopeType.Filter);
1121
_builder
.EmitOpCode(ILOpCode.Isinst);
1122
_builder
.EmitToken(exceptionType, catchBlock.Syntax);
1123
_builder
.EmitOpCode(ILOpCode.Dup);
1124
_builder
.EmitBranch(ILOpCode.Brtrue, typeCheckPassedLabel);
1125
_builder
.EmitOpCode(ILOpCode.Pop);
1126
_builder
.EmitIntConstant(0);
1127
_builder
.EmitBranch(ILOpCode.Br, typeCheckFailedLabel);
1134
_builder
.MarkLabel(typeCheckPassedLabel);
1153
_builder
.EmitOpCode(ILOpCode.Unbox_any);
1173
_builder
.EmitLocalStore(GetLocal(exceptionSourceLocal));
1187
_builder
.DefineUserDefinedStateMachineHoistedLocal(stateMachineField.SlotIndex);
1193
_builder
.EmitLocalStore(temp);
1198
_builder
.EmitLocalLoad(temp);
1210
_builder
.EmitOpCode(ILOpCode.Pop);
1215
Debug.Assert(
_builder
.IsStackEmpty);
1226
_builder
.EmitIntConstant(0);
1227
_builder
.EmitOpCode(ILOpCode.Cgt_un);
1228
_builder
.MarkLabel(typeCheckFailedLabel);
1231
_builder
.MarkFilterConditionEnd();
1236
_builder
.EmitOpCode(ILOpCode.Pop);
1244
_builder
.CloseLocalScope();
1252
_asyncCatchHandlerOffset =
_builder
.AllocateILMarker();
1329
_builder
.EmitLocalStore(temp);
1351
_builder
.EmitIntegerSwitchJumpTable(switchCaseLabels, fallThroughLabel, key, expression.Type.EnumUnderlyingTypeOrSelf().PrimitiveTypeCode, expression.Syntax);
1415
_builder
.EmitLoad(keyTemp);
1416
_builder
.EmitBranch(ILOpCode.Brfalse, lengthBasedSwitchInfo.LengthBasedJumpTable.NullCaseLabel ?? fallThroughLabel, ILOpCode.Brtrue);
1424
_builder
.EmitLoadAddress(keyTemp);
1428
_builder
.EmitLoad(keyTemp);
1430
_builder
.EmitOpCode(ILOpCode.Call, stackAdjustment: 0);
1432
_builder
.EmitLocalStore(stringLength);
1436
_builder
.EmitIntegerSwitchJumpTable(
1454
_builder
.MarkLabel(charJumpTable.Label);
1459
_builder
.EmitLoadAddress(keyTemp);
1463
_builder
.EmitLoad(keyTemp);
1465
_builder
.EmitIntConstant(charJumpTable.SelectedCharPosition);
1466
_builder
.EmitOpCode(ILOpCode.Call, stackAdjustment: -1);
1470
_builder
.EmitOpCode(ILOpCode.Ldind_u2);
1472
_builder
.EmitLocalStore(charTemp);
1476
_builder
.EmitIntegerSwitchJumpTable(
1492
_builder
.MarkLabel(stringJumpTable.Label);
1505
_builder
.EmitToken(lengthMethodRef, syntaxNode: null);
1547
_builder
.EmitLoad(key);
1548
_builder
.EmitOpCode(ILOpCode.Call, stackAdjustment: 0);
1549
_builder
.EmitToken(stringHashMethodRef, syntaxNode);
1554
_builder
.EmitLocalStore(keyHash);
1597
_builder
.EmitLoad(keyArg);
1598
_builder
.EmitBranch(ILOpCode.Brfalse, targetLabel, ILOpCode.Brtrue);
1609
_builder
.EmitLoadAddress(keyArg);
1613
_builder
.EmitLoad(keyArg);
1614
_builder
.EmitBranch(ILOpCode.Brfalse, skipToNext, ILOpCode.Brtrue);
1616
_builder
.EmitLoad(keyArg);
1620
_builder
.EmitOpCode(ILOpCode.Call, 0);
1622
_builder
.EmitToken(lengthMethodRef, null);
1626
_builder
.EmitBranch(ILOpCode.Brfalse, targetLabel, ILOpCode.Brtrue);
1627
_builder
.MarkLabel(skipToNext);
1642
_builder
.EmitStringSwitchJumpTable(
1738
_builder
.EmitLoad(key);
1739
_builder
.EmitConstantValue(stringConstant, syntaxNode);
1740
_builder
.EmitOpCode(ILOpCode.Call, stackAdjustment: -1);
1741
_builder
.EmitToken(stringEqualityMethodRef, syntaxNode);
1744
_builder
.EmitBranch(ILOpCode.Brtrue, targetLabel, ILOpCode.Brfalse);
1765
_builder
.EmitLoad(key);
1766
_builder
.EmitConstantValue(stringConstant, syntaxNode);
1767
_builder
.EmitOpCode(ILOpCode.Call, stackAdjustment: 0);
1768
_builder
.EmitToken(asSpanRef, syntaxNode);
1769
_builder
.EmitOpCode(ILOpCode.Call, stackAdjustment: -1);
1770
_builder
.EmitToken(sequenceEqualsRef, syntaxNode);
1773
_builder
.EmitBranch(ILOpCode.Brtrue, targetLabel, ILOpCode.Brfalse);
1787
return
_builder
.LocalSlotManager.GetLocal(symbol);
1809
_builder
.AddLocalConstantToScope(localConstantDef);
1850
var localDef =
_builder
.LocalSlotManager.DeclareLocal(
1868
_builder
.AddLocalToScope(localDef);
1927
_builder
.LocalSlotManager.FreeLocal(local);
1936
return
_builder
.LocalSlotManager.AllocateSlot(
1946
_builder
.LocalSlotManager.FreeSlot(temp);