1 write to _builder
Microsoft.CodeAnalysis.CSharp (1)
CodeGen\CodeGenerator.cs (1)
104
_builder
= builder;
527 references to _builder
Microsoft.CodeAnalysis.CSharp (527)
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)
82
_builder
.EmitLoadArgumentOpcode(0);
86
_builder
.EmitLoadArgumentAddrOpcode(0);
147
_builder
.EmitLocalAddress(temp); // ldloca temp
148
_builder
.EmitOpCode(ILOpCode.Dup); // dup
149
_builder
.EmitOpCode(ILOpCode.Initobj); // initobj <type>
244
_builder
.EmitBranch(ILOpCode.Br, doneLabel);
249
_builder
.AdjustStack(-1);
252
_builder
.MarkLabel(consequenceLabel);
255
_builder
.MarkLabel(doneLabel);
271
_builder
.EmitBranch(ILOpCode.Brtrue, whenValueTypeLabel);
275
_builder
.EmitBranch(ILOpCode.Br, doneLabel);
276
_builder
.AdjustStack(-1);
278
_builder
.MarkLabel(whenValueTypeLabel);
282
_builder
.MarkLabel(doneLabel);
315
_builder
.EmitLocalAddress(GetLocal(localAccess));
333
_builder
.EmitOpCode(ILOpCode.Dup);
350
_builder
.EmitOpCode(ILOpCode.Refanyval);
369
_builder
.EmitLocalStore(value);
370
_builder
.EmitLocalAddress(value);
440
_builder
.EmitOpCode(ILOpCode.Readonly);
445
_builder
.EmitOpCode(ILOpCode.Ldelema);
451
_builder
.EmitArrayElementAddress(_module.Translate((ArrayTypeSymbol)arrayAccess.Expression.Type),
498
_builder
.EmitOpCode(ILOpCode.Ldsflda);
525
_builder
.EmitLoadArgumentAddrOpcode(slot);
529
_builder
.EmitLoadArgumentOpcode(slot);
602
_builder
.EmitOpCode(field.RefKind == RefKind.None ? ILOpCode.Ldflda : ILOpCode.Ldfld);
625
_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 (201)
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);
790
_builder
.EmitOpCode(ILOpCode.Dup);
795
_builder
.EmitOpCode(ILOpCode.Dup);
817
_builder
.EmitOpCode(ILOpCode.Ldarg_0);
882
_builder
.OpenLocalScope();
897
_builder
.CloseLocalScope();
916
_builder
.OpenLocalScope();
937
_builder
.CloseLocalScope();
1032
_builder
.EmitOpCode(ILOpCode.Ldelem_i1);
1037
_builder
.EmitOpCode(ILOpCode.Ldelem_u1);
1041
_builder
.EmitOpCode(ILOpCode.Ldelem_i2);
1046
_builder
.EmitOpCode(ILOpCode.Ldelem_u2);
1050
_builder
.EmitOpCode(ILOpCode.Ldelem_i4);
1054
_builder
.EmitOpCode(ILOpCode.Ldelem_u4);
1059
_builder
.EmitOpCode(ILOpCode.Ldelem_i8);
1066
_builder
.EmitOpCode(ILOpCode.Ldelem_i);
1070
_builder
.EmitOpCode(ILOpCode.Ldelem_r4);
1074
_builder
.EmitOpCode(ILOpCode.Ldelem_r8);
1080
_builder
.EmitOpCode(ILOpCode.Ldelem_ref);
1086
_builder
.EmitOpCode(ILOpCode.Ldelem);
1094
_builder
.EmitOpCode(ILOpCode.Readonly);
1097
_builder
.EmitOpCode(ILOpCode.Ldelema);
1107
_builder
.EmitArrayElementLoad(_module.Translate((ArrayTypeSymbol)arrayAccess.Expression.Type), arrayAccess.Expression.Syntax);
1167
_builder
.EmitOpCode(ILOpCode.Volatile);
1169
_builder
.EmitOpCode(ILOpCode.Ldsfld);
1193
_builder
.EmitOpCode(ILOpCode.Volatile);
1196
_builder
.EmitOpCode(ILOpCode.Ldfld);
1242
_builder
.EmitOpCode(ILOpCode.Unbox);
1256
_builder
.EmitOpCode(ILOpCode.Ldflda);
1408
_builder
.EmitLocalLoad(definition);
1439
_builder
.EmitLoadArgumentOpcode(slot);
1461
_builder
.EmitOpCode(ILOpCode.Ldind_i1);
1466
_builder
.EmitOpCode(ILOpCode.Ldind_u1);
1470
_builder
.EmitOpCode(ILOpCode.Ldind_i2);
1475
_builder
.EmitOpCode(ILOpCode.Ldind_u2);
1479
_builder
.EmitOpCode(ILOpCode.Ldind_i4);
1483
_builder
.EmitOpCode(ILOpCode.Ldind_u4);
1488
_builder
.EmitOpCode(ILOpCode.Ldind_i8);
1495
_builder
.EmitOpCode(ILOpCode.Ldind_i);
1499
_builder
.EmitOpCode(ILOpCode.Ldind_r4);
1503
_builder
.EmitOpCode(ILOpCode.Ldind_r8);
1509
_builder
.EmitOpCode(ILOpCode.Ldind_ref);
1513
_builder
.EmitOpCode(ILOpCode.Ldobj);
1668
_builder
.EmitOpCode(ILOpCode.Initobj); // initobj <MyStruct>
1682
var countBefore =
_builder
.LocalSlotManager.StartScopeOfTrackingAddressedLocals();
1686
_builder
.LocalSlotManager.EndScopeOfTrackingAddressedLocals(countBefore,
1698
_builder
.EmitOpCode(ILOpCode.Constrained);
1702
_builder
.EmitOpCode(ILOpCode.Call, stackBehavior);
1718
var countBefore =
_builder
.LocalSlotManager.StartScopeOfTrackingAddressedLocals();
1786
_builder
.LocalSlotManager.EndScopeOfTrackingAddressedLocals(countBefore, MightEscapeTemporaryRefs(call, used: true));
1788
countBefore =
_builder
.LocalSlotManager.StartScopeOfTrackingAddressedLocals();
1825
_builder
.EmitLocalStore(tempOpt);
1826
_builder
.EmitLocalAddress(tempOpt);
1851
_builder
.LocalSlotManager.EndScopeOfTrackingAddressedLocals(countBefore, MightEscapeTemporaryRefs(call, used: useKind != UseKind.Unused));
2044
_builder
.EmitOpCode(ILOpCode.Call, stackBehavior);
2048
_builder
.EmitOpCode(ILOpCode.Callvirt, stackBehavior);
2052
_builder
.EmitOpCode(ILOpCode.Constrained);
2054
_builder
.EmitOpCode(ILOpCode.Callvirt, stackBehavior);
2099
_builder
.EmitBranch(ILOpCode.Brtrue, whenNotNullLabel);
2106
_builder
.EmitLocalStore(tempOpt);
2107
_builder
.EmitLocalAddress(tempOpt);
2111
_builder
.MarkLabel(whenNotNullLabel);
2376
_builder
.EmitOpCode(ILOpCode.Conv_ovf_i);
2380
_builder
.EmitOpCode(ILOpCode.Conv_ovf_i_un);
2399
_builder
.EmitOpCode(ILOpCode.Ldlen);
2413
_builder
.EmitNumericConversion(typeFrom, typeTo, @checked: false);
2426
_builder
.EmitOpCode(ILOpCode.Newarr);
2431
_builder
.EmitArrayCreation(_module.Translate(arrayType), expression.Syntax);
2496
var countBefore =
_builder
.LocalSlotManager.StartScopeOfTrackingAddressedLocals();
2500
_builder
.LocalSlotManager.EndScopeOfTrackingAddressedLocals(countBefore,
2504
_builder
.EmitOpCode(ILOpCode.Newobj, stackAdjustment);
2728
_builder
.EmitOpCode(ILOpCode.Initobj); // initobj <MyStruct>
2759
var countBefore =
_builder
.LocalSlotManager.StartScopeOfTrackingAddressedLocals();
2763
_builder
.LocalSlotManager.EndScopeOfTrackingAddressedLocals(countBefore,
2768
_builder
.EmitOpCode(ILOpCode.Call, stackAdjustment);
2791
if (local != null && !
_builder
.PossiblyDefinedOutsideOfTry(GetLocal(local)))
2861
_builder
.EmitLoadArgumentOpcode(ParameterSlot(left));
2895
_builder
.EmitLocalLoad(localDefinition);
3095
_builder
.EmitOpCode(ILOpCode.Dup);
3121
_builder
.EmitLocalStore(temp);
3158
_builder
.EmitLocalStore(GetLocal(local));
3240
_builder
.EmitLocalAddress(temp);
3244
_builder
.EmitLocalLoad(temp);
3259
_builder
.EmitOpCode(ILOpCode.Stobj);
3271
_builder
.EmitArrayElementStore(_module.Translate(arrayType), syntaxNode);
3293
_builder
.EmitOpCode(ILOpCode.Stelem_i1);
3299
_builder
.EmitOpCode(ILOpCode.Stelem_i2);
3304
_builder
.EmitOpCode(ILOpCode.Stelem_i4);
3309
_builder
.EmitOpCode(ILOpCode.Stelem_i8);
3316
_builder
.EmitOpCode(ILOpCode.Stelem_i);
3320
_builder
.EmitOpCode(ILOpCode.Stelem_r4);
3324
_builder
.EmitOpCode(ILOpCode.Stelem_r8);
3330
_builder
.EmitOpCode(ILOpCode.Stelem_ref);
3334
_builder
.EmitOpCode(ILOpCode.Stelem);
3347
_builder
.EmitOpCode(ILOpCode.Volatile);
3358
_builder
.EmitOpCode(field.IsStatic ? ILOpCode.Stsfld : ILOpCode.Stfld);
3374
_builder
.EmitStoreArgumentOpcode(slot);
3391
_builder
.EmitOpCode(ILOpCode.Stind_i1);
3397
_builder
.EmitOpCode(ILOpCode.Stind_i2);
3402
_builder
.EmitOpCode(ILOpCode.Stind_i4);
3407
_builder
.EmitOpCode(ILOpCode.Stind_i8);
3414
_builder
.EmitOpCode(ILOpCode.Stind_i);
3418
_builder
.EmitOpCode(ILOpCode.Stind_r4);
3422
_builder
.EmitOpCode(ILOpCode.Stind_r8);
3428
_builder
.EmitOpCode(ILOpCode.Stind_ref);
3432
_builder
.EmitOpCode(ILOpCode.Stobj);
3443
_builder
.EmitOpCode(ILOpCode.Pop);
3459
_builder
.EmitOpCode(ILOpCode.Isinst);
3464
_builder
.EmitOpCode(ILOpCode.Ldnull);
3465
_builder
.EmitOpCode(ILOpCode.Cgt_un);
3488
_builder
.EmitOpCode(ILOpCode.Isinst);
3493
_builder
.EmitOpCode(ILOpCode.Unbox_any);
3509
_builder
.EmitConstantValue(constantValue, syntaxNode);
3517
_builder
.EmitOpCode(ILOpCode.Ldc_i4_0);
3518
_builder
.EmitOpCode(ILOpCode.Conv_u);
3522
_builder
.EmitOpCode(ILOpCode.Ldc_i4_0);
3523
_builder
.EmitOpCode(ILOpCode.Conv_i);
3558
_builder
.EmitConstantValue(constantValue, syntaxNode);
3567
_builder
.EmitLocalAddress(temp); // ldloca temp
3568
_builder
.EmitOpCode(ILOpCode.Initobj); // initobj <MyStruct>
3570
_builder
.EmitLocalLoad(temp); // ldloc temp
3577
_builder
.EmitOpCode(ILOpCode.Call, stackAdjustment: 0); //argument off, return value on
3586
_builder
.EmitOpCode(ILOpCode.Ldtoken);
3594
_builder
.EmitOpCode(ILOpCode.Sizeof);
3602
_builder
.EmitOpCode(ILOpCode.Ldtoken);
3622
_builder
.EmitIntConstant(GetLocal(node.Local).SlotIndex);
3636
_builder
.EmitIntConstant(node.Parameter.Ordinal);
3649
_builder
.EmitOpCode(ILOpCode.Ldtoken);
3650
_builder
.EmitToken(fieldRef, syntax, Cci.MetadataWriter.RawTokenEncoding.LiftedVariableId);
3656
_builder
.EmitOpCode(ILOpCode.Ldtoken);
3657
_builder
.EmitGreatestMethodToken();
3662
_builder
.EmitOpCode(ILOpCode.Ldsfld);
3668
_builder
.EmitOpCode(ILOpCode.Stsfld);
3674
_builder
.EmitToken(
3683
_builder
.EmitOpCode(ILOpCode.Ldsflda);
3684
_builder
.EmitToken(
3693
_builder
.EmitOpCode(ILOpCode.Call, -1);
3694
_builder
.EmitToken(
3703
_builder
.EmitOpCode(ILOpCode.Ldsfld);
3704
_builder
.EmitToken(
3711
_builder
.EmitOpCode(ILOpCode.Ldstr);
3712
_builder
.EmitModuleVersionIdStringToken();
3717
_builder
.EmitOpCode(ILOpCode.Ldsfld);
3723
_builder
.EmitOpCode(ILOpCode.Stsfld);
3729
_builder
.EmitToken(_module.GetInstrumentationPayloadRoot(node.AnalysisKind, _module.Translate(node.Type, node.Syntax, _diagnostics.DiagnosticBag), node.Syntax, _diagnostics.DiagnosticBag), node.Syntax);
3735
_builder
.EmitOpCode(ILOpCode.Ldtoken);
3736
_builder
.EmitSourceDocumentIndexToken(node.Document);
3741
_builder
.EmitOpCode(ILOpCode.Ldtoken);
3749
_builder
.EmitOpCode(ILOpCode.Call, stackAdjustment: 0); //argument off, return value on
3754
_builder
.EmitOpCode(ILOpCode.Ldtoken);
3756
_builder
.EmitOpCode(ILOpCode.Call, stackAdjustment: -1); //2 arguments off, return value on
3762
_builder
.EmitOpCode(ILOpCode.Castclass);
3769
_builder
.EmitOpCode(ILOpCode.Ldtoken);
3776
_builder
.EmitOpCode(ILOpCode.Call, stackAdjustment: 0); //argument off, return value on
3781
_builder
.EmitOpCode(ILOpCode.Ldtoken);
3783
_builder
.EmitOpCode(ILOpCode.Call, stackAdjustment: -1); //2 arguments off, return value on
3789
_builder
.EmitOpCode(ILOpCode.Castclass);
3822
_builder
.EmitNumericConversion(Cci.PrimitiveTypeCode.Int32, toType, @checked: false);
3866
_builder
.EmitBranch(ILOpCode.Br, doneLabel);
3870
_builder
.AdjustStack(-1);
3873
_builder
.MarkLabel(consequenceLabel);
3890
_builder
.MarkLabel(doneLabel);
3926
_builder
.EmitOpCode(ILOpCode.Dup);
3935
_builder
.EmitBranch(ILOpCode.Brtrue, ifLeftNotNullLabel);
3939
_builder
.EmitOpCode(ILOpCode.Pop);
3953
_builder
.MarkLabel(ifLeftNotNullLabel);
4068
_builder
.EmitLocalStore(temp);
4069
_builder
.EmitLocalLoad(temp);
4077
_builder
.EmitOpCode(ILOpCode.Box);
4093
_builder
.EmitLocalStore(temp);
4098
var countBefore =
_builder
.LocalSlotManager.StartScopeOfTrackingAddressedLocals();
4102
_builder
.LocalSlotManager.EndScopeOfTrackingAddressedLocals(countBefore,
4109
_builder
.EmitLocalLoad(temp);
4113
_builder
.EmitOpCode(ILOpCode.Calli, stackBehavior);
4159
_builder
.EmitOpCode(ILOpCode.Nop);
4185
_builder
.EmitOpCode(ILOpCode.Constrained);
4189
_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 (126)
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);