1 write to _builder
Microsoft.CodeAnalysis.CSharp (1)
CodeGen\CodeGenerator.cs (1)
101
_builder
= builder;
529 references to _builder
Microsoft.CodeAnalysis.CSharp (529)
CodeGen\CodeGenerator.cs (24)
192
result =
_builder
.LocalSlotManager.DeclareLocal(
240
asyncCatchHandlerOffset = _diagnostics.HasAnyErrors() ? -1 :
_builder
.GetILOffsetFromMarker(_asyncCatchHandlerOffset);
259
int yieldOffset =
_builder
.GetILOffsetFromMarker(yieldPoints[i]);
260
int resumeOffset =
_builder
.GetILOffsetFromMarker(resumePoints[i]);
288
_builder
.DefineInitialHiddenSequencePoint();
305
_builder
.Realize();
322
_builder
.MarkLabel(s_returnLabel);
344
_builder
.EmitLocalLoad(LazyReturnTemp);
345
_builder
.EmitRet(false);
349
_builder
.EmitRet(true);
357
_builder
.EmitToken(symbol, syntaxNode);
368
_builder
.EmitToken(methodRef, syntaxNode, encodeAsRawDefinitionToken ? Cci.MetadataWriter.RawTokenEncoding.RowId : 0);
374
_builder
.EmitToken(fieldRef, syntaxNode);
379
_builder
.EmitToken(_module.Translate(symbol).Signature, syntaxNode);
408
_builder
.EmitOpCode(ILOpCode.Nop);
431
_builder
.EmitOpCode(ILOpCode.Nop);
440
ArrayBuilder<RawSequencePoint> sequencePoints =
_builder
.SeqPointsOpt;
479
_builder
.EmitConstantValue(ConstantValue.Create(true), syntaxNode);
480
_builder
.EmitBranch(ILOpCode.Brtrue, label);
482
_builder
.EmitOpCode(ILOpCode.Nop);
483
_builder
.MarkLabel(label);
497
_builder
.SetInitialDebugDocument(_methodBodySyntaxOpt.SyntaxTree);
504
_builder
.DefineHiddenSequencePoint();
517
_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>
223
_builder
.EmitBranch(ILOpCode.Br, doneLabel);
226
_builder
.AdjustStack(-1);
228
_builder
.MarkLabel(consequenceLabel);
231
_builder
.MarkLabel(doneLabel);
246
_builder
.EmitBranch(ILOpCode.Brtrue, whenValueTypeLabel);
250
_builder
.EmitBranch(ILOpCode.Br, doneLabel);
251
_builder
.AdjustStack(-1);
253
_builder
.MarkLabel(whenValueTypeLabel);
257
_builder
.MarkLabel(doneLabel);
287
_builder
.EmitLocalAddress(GetLocal(localAccess));
303
_builder
.EmitOpCode(ILOpCode.Dup);
317
_builder
.EmitOpCode(ILOpCode.Refanyval);
332
_builder
.EmitLocalStore(value);
333
_builder
.EmitLocalAddress(value);
400
_builder
.EmitOpCode(ILOpCode.Readonly);
405
_builder
.EmitOpCode(ILOpCode.Ldelema);
411
_builder
.EmitArrayElementAddress(_module.Translate((ArrayTypeSymbol)arrayAccess.Expression.Type),
458
_builder
.EmitOpCode(ILOpCode.Ldsflda);
482
_builder
.EmitLoadArgumentAddrOpcode(slot);
486
_builder
.EmitLoadArgumentOpcode(slot);
558
_builder
.EmitOpCode(field.RefKind == RefKind.None ? ILOpCode.Ldflda : ILOpCode.Ldfld);
581
_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);
165
_builder
.EmitNumericConversion(fromPredefTypeKind, toPredefTypeKind, conversion.Checked);
171
_builder
.EmitOpCode(ILOpCode.Conv_u);
222
_builder
.EmitNumericConversion(fromPredefTypeKind, toPredefTypeKind, conversion.Checked);
242
_builder
.EmitOpCode(ILOpCode.Unbox_any);
274
_builder
.EmitOpCode(ILOpCode.Castclass);
279
_builder
.EmitOpCode(ILOpCode.Unbox_any);
308
_builder
.EmitNumericConversion(fromPredefTypeKind, toPredefTypeKind, conversion.Checked);
327
_builder
.EmitNullConstant();
336
_builder
.EmitOpCode(ILOpCode.Constrained);
357
_builder
.EmitOpCode(ILOpCode.Dup);
358
_builder
.EmitOpCode(ILOpCode.Ldvirtftn);
365
_builder
.EmitOpCode(ILOpCode.Ldftn);
371
_builder
.EmitOpCode(ILOpCode.Newobj, -1); // pop 2 args and push delegate object
CodeGen\EmitExpression.cs (202)
180
_builder
.EmitOpCode(ILOpCode.Ldarg_0);
389
_builder
.EmitBranch(ILOpCode.Brtrue, whenValueTypeLabel);
392
_builder
.EmitBranch(ILOpCode.Br, doneLabel);
396
_builder
.AdjustStack(-1);
399
_builder
.MarkLabel(whenValueTypeLabel);
402
_builder
.MarkLabel(doneLabel);
473
_builder
.EmitBranch(ILOpCode.Brtrue, whenNotNullLabel);
477
_builder
.EmitLocalStore(cloneTemp);
478
_builder
.EmitLocalAddress(cloneTemp);
479
_builder
.EmitLocalLoad(cloneTemp);
490
_builder
.EmitOpCode(ILOpCode.Dup);
502
_builder
.EmitOpCode(ILOpCode.Dup);
523
_builder
.EmitOpCode(ILOpCode.Call, stackAdjustment: 0);
527
_builder
.EmitBranch(ILOpCode.Brtrue, whenNotNullLabel);
539
_builder
.EmitOpCode(ILOpCode.Pop);
552
_builder
.EmitBranch(ILOpCode.Br, doneLabel);
560
_builder
.AdjustStack(+1);
568
_builder
.AdjustStack(-1);
571
_builder
.MarkLabel(whenNotNullLabel);
584
_builder
.MarkLabel(doneLabel);
679
_builder
.EmitOpCode(ILOpCode.Mkrefany);
691
_builder
.EmitOpCode(ILOpCode.Refanytype);
692
_builder
.EmitOpCode(ILOpCode.Call, stackAdjustment: 0);
701
_builder
.EmitOpCode(ILOpCode.Arglist);
771
_builder
.EmitOpCode(ILOpCode.Conv_u);
795
_builder
.EmitOpCode(ILOpCode.Dup);
800
_builder
.EmitOpCode(ILOpCode.Dup);
822
_builder
.EmitOpCode(ILOpCode.Ldarg_0);
887
_builder
.OpenLocalScope();
902
_builder
.CloseLocalScope();
921
_builder
.OpenLocalScope();
942
_builder
.CloseLocalScope();
1037
_builder
.EmitOpCode(ILOpCode.Ldelem_i1);
1042
_builder
.EmitOpCode(ILOpCode.Ldelem_u1);
1046
_builder
.EmitOpCode(ILOpCode.Ldelem_i2);
1051
_builder
.EmitOpCode(ILOpCode.Ldelem_u2);
1055
_builder
.EmitOpCode(ILOpCode.Ldelem_i4);
1059
_builder
.EmitOpCode(ILOpCode.Ldelem_u4);
1064
_builder
.EmitOpCode(ILOpCode.Ldelem_i8);
1071
_builder
.EmitOpCode(ILOpCode.Ldelem_i);
1075
_builder
.EmitOpCode(ILOpCode.Ldelem_r4);
1079
_builder
.EmitOpCode(ILOpCode.Ldelem_r8);
1085
_builder
.EmitOpCode(ILOpCode.Ldelem_ref);
1091
_builder
.EmitOpCode(ILOpCode.Ldelem);
1099
_builder
.EmitOpCode(ILOpCode.Readonly);
1102
_builder
.EmitOpCode(ILOpCode.Ldelema);
1112
_builder
.EmitArrayElementLoad(_module.Translate((ArrayTypeSymbol)arrayAccess.Expression.Type), arrayAccess.Expression.Syntax);
1126
_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);
1433
_builder
.EmitLoadArgumentOpcode(slot);
1453
_builder
.EmitOpCode(ILOpCode.Ldind_i1);
1458
_builder
.EmitOpCode(ILOpCode.Ldind_u1);
1462
_builder
.EmitOpCode(ILOpCode.Ldind_i2);
1467
_builder
.EmitOpCode(ILOpCode.Ldind_u2);
1471
_builder
.EmitOpCode(ILOpCode.Ldind_i4);
1475
_builder
.EmitOpCode(ILOpCode.Ldind_u4);
1480
_builder
.EmitOpCode(ILOpCode.Ldind_i8);
1487
_builder
.EmitOpCode(ILOpCode.Ldind_i);
1491
_builder
.EmitOpCode(ILOpCode.Ldind_r4);
1495
_builder
.EmitOpCode(ILOpCode.Ldind_r8);
1501
_builder
.EmitOpCode(ILOpCode.Ldind_ref);
1505
_builder
.EmitOpCode(ILOpCode.Ldobj);
1660
_builder
.EmitOpCode(ILOpCode.Initobj); // initobj <MyStruct>
1674
var countBefore =
_builder
.LocalSlotManager.StartScopeOfTrackingAddressedLocals();
1678
_builder
.LocalSlotManager.EndScopeOfTrackingAddressedLocals(countBefore,
1690
_builder
.EmitOpCode(ILOpCode.Constrained);
1694
_builder
.EmitOpCode(ILOpCode.Call, stackBehavior);
1710
var countBefore =
_builder
.LocalSlotManager.StartScopeOfTrackingAddressedLocals();
1778
_builder
.LocalSlotManager.EndScopeOfTrackingAddressedLocals(countBefore, MightEscapeTemporaryRefs(call, used: true));
1780
countBefore =
_builder
.LocalSlotManager.StartScopeOfTrackingAddressedLocals();
1817
_builder
.EmitLocalStore(tempOpt);
1818
_builder
.EmitLocalAddress(tempOpt);
1843
_builder
.LocalSlotManager.EndScopeOfTrackingAddressedLocals(countBefore, MightEscapeTemporaryRefs(call, used: useKind != UseKind.Unused));
2026
_builder
.EmitOpCode(ILOpCode.Call, stackBehavior);
2030
_builder
.EmitOpCode(ILOpCode.Callvirt, stackBehavior);
2034
_builder
.EmitOpCode(ILOpCode.Constrained);
2036
_builder
.EmitOpCode(ILOpCode.Callvirt, stackBehavior);
2081
_builder
.EmitBranch(ILOpCode.Brtrue, whenNotNullLabel);
2088
_builder
.EmitLocalStore(tempOpt);
2089
_builder
.EmitLocalAddress(tempOpt);
2093
_builder
.MarkLabel(whenNotNullLabel);
2357
_builder
.EmitOpCode(ILOpCode.Conv_ovf_i);
2361
_builder
.EmitOpCode(ILOpCode.Conv_ovf_i_un);
2380
_builder
.EmitOpCode(ILOpCode.Ldlen);
2394
_builder
.EmitNumericConversion(typeFrom, typeTo, @checked: false);
2407
_builder
.EmitOpCode(ILOpCode.Newarr);
2412
_builder
.EmitArrayCreation(_module.Translate(arrayType), expression.Syntax);
2477
var countBefore =
_builder
.LocalSlotManager.StartScopeOfTrackingAddressedLocals();
2481
_builder
.LocalSlotManager.EndScopeOfTrackingAddressedLocals(countBefore,
2485
_builder
.EmitOpCode(ILOpCode.Newobj, stackAdjustment);
2709
_builder
.EmitOpCode(ILOpCode.Initobj); // initobj <MyStruct>
2740
var countBefore =
_builder
.LocalSlotManager.StartScopeOfTrackingAddressedLocals();
2744
_builder
.LocalSlotManager.EndScopeOfTrackingAddressedLocals(countBefore,
2749
_builder
.EmitOpCode(ILOpCode.Call, stackAdjustment);
2772
if (local != null && !
_builder
.PossiblyDefinedOutsideOfTry(GetLocal(local)))
2842
_builder
.EmitLoadArgumentOpcode(ParameterSlot(left));
2876
_builder
.EmitLocalLoad(localDefinition);
3066
_builder
.EmitOpCode(ILOpCode.Dup);
3092
_builder
.EmitLocalStore(temp);
3129
_builder
.EmitLocalStore(GetLocal(local));
3211
_builder
.EmitLocalAddress(temp);
3215
_builder
.EmitLocalLoad(temp);
3230
_builder
.EmitOpCode(ILOpCode.Stobj);
3242
_builder
.EmitArrayElementStore(_module.Translate(arrayType), syntaxNode);
3264
_builder
.EmitOpCode(ILOpCode.Stelem_i1);
3270
_builder
.EmitOpCode(ILOpCode.Stelem_i2);
3275
_builder
.EmitOpCode(ILOpCode.Stelem_i4);
3280
_builder
.EmitOpCode(ILOpCode.Stelem_i8);
3287
_builder
.EmitOpCode(ILOpCode.Stelem_i);
3291
_builder
.EmitOpCode(ILOpCode.Stelem_r4);
3295
_builder
.EmitOpCode(ILOpCode.Stelem_r8);
3301
_builder
.EmitOpCode(ILOpCode.Stelem_ref);
3305
_builder
.EmitOpCode(ILOpCode.Stelem);
3318
_builder
.EmitOpCode(ILOpCode.Volatile);
3329
_builder
.EmitOpCode(field.IsStatic ? ILOpCode.Stsfld : ILOpCode.Stfld);
3345
_builder
.EmitStoreArgumentOpcode(slot);
3362
_builder
.EmitOpCode(ILOpCode.Stind_i1);
3368
_builder
.EmitOpCode(ILOpCode.Stind_i2);
3373
_builder
.EmitOpCode(ILOpCode.Stind_i4);
3378
_builder
.EmitOpCode(ILOpCode.Stind_i8);
3385
_builder
.EmitOpCode(ILOpCode.Stind_i);
3389
_builder
.EmitOpCode(ILOpCode.Stind_r4);
3393
_builder
.EmitOpCode(ILOpCode.Stind_r8);
3399
_builder
.EmitOpCode(ILOpCode.Stind_ref);
3403
_builder
.EmitOpCode(ILOpCode.Stobj);
3414
_builder
.EmitOpCode(ILOpCode.Pop);
3430
_builder
.EmitOpCode(ILOpCode.Isinst);
3435
_builder
.EmitOpCode(ILOpCode.Ldnull);
3436
_builder
.EmitOpCode(ILOpCode.Cgt_un);
3459
_builder
.EmitOpCode(ILOpCode.Isinst);
3464
_builder
.EmitOpCode(ILOpCode.Unbox_any);
3480
_builder
.EmitConstantValue(constantValue, syntaxNode);
3488
_builder
.EmitOpCode(ILOpCode.Ldc_i4_0);
3489
_builder
.EmitOpCode(ILOpCode.Conv_u);
3493
_builder
.EmitOpCode(ILOpCode.Ldc_i4_0);
3494
_builder
.EmitOpCode(ILOpCode.Conv_i);
3529
_builder
.EmitConstantValue(constantValue, syntaxNode);
3538
_builder
.EmitLocalAddress(temp); // ldloca temp
3539
_builder
.EmitOpCode(ILOpCode.Initobj); // initobj <MyStruct>
3541
_builder
.EmitLocalLoad(temp); // ldloc temp
3548
_builder
.EmitOpCode(ILOpCode.Call, stackAdjustment: 0); //argument off, return value on
3557
_builder
.EmitOpCode(ILOpCode.Ldtoken);
3565
_builder
.EmitOpCode(ILOpCode.Sizeof);
3573
_builder
.EmitOpCode(ILOpCode.Ldtoken);
3593
_builder
.EmitIntConstant(GetLocal(node.Local).SlotIndex);
3607
_builder
.EmitIntConstant(node.Parameter.Ordinal);
3620
_builder
.EmitOpCode(ILOpCode.Ldtoken);
3621
_builder
.EmitToken(fieldRef, syntax, Cci.MetadataWriter.RawTokenEncoding.LiftedVariableId);
3627
_builder
.EmitOpCode(ILOpCode.Ldtoken);
3628
_builder
.EmitGreatestMethodToken();
3633
_builder
.EmitOpCode(ILOpCode.Ldsfld);
3639
_builder
.EmitOpCode(ILOpCode.Stsfld);
3645
_builder
.EmitToken(
3654
_builder
.EmitOpCode(ILOpCode.Ldsflda);
3655
_builder
.EmitToken(
3664
_builder
.EmitOpCode(ILOpCode.Call, -1);
3665
_builder
.EmitToken(
3674
_builder
.EmitOpCode(ILOpCode.Ldsfld);
3675
_builder
.EmitToken(
3682
_builder
.EmitOpCode(ILOpCode.Ldstr);
3683
_builder
.EmitModuleVersionIdStringToken();
3688
_builder
.EmitOpCode(ILOpCode.Ldsfld);
3694
_builder
.EmitOpCode(ILOpCode.Stsfld);
3700
_builder
.EmitToken(_module.GetInstrumentationPayloadRoot(node.AnalysisKind, _module.Translate(node.Type, node.Syntax, _diagnostics.DiagnosticBag), node.Syntax, _diagnostics.DiagnosticBag), node.Syntax);
3706
_builder
.EmitOpCode(ILOpCode.Ldtoken);
3707
_builder
.EmitSourceDocumentIndexToken(node.Document);
3712
_builder
.EmitOpCode(ILOpCode.Ldtoken);
3720
_builder
.EmitOpCode(ILOpCode.Call, stackAdjustment: 0); //argument off, return value on
3725
_builder
.EmitOpCode(ILOpCode.Ldtoken);
3727
_builder
.EmitOpCode(ILOpCode.Call, stackAdjustment: -1); //2 arguments off, return value on
3733
_builder
.EmitOpCode(ILOpCode.Castclass);
3740
_builder
.EmitOpCode(ILOpCode.Ldtoken);
3747
_builder
.EmitOpCode(ILOpCode.Call, stackAdjustment: 0); //argument off, return value on
3752
_builder
.EmitOpCode(ILOpCode.Ldtoken);
3754
_builder
.EmitOpCode(ILOpCode.Call, stackAdjustment: -1); //2 arguments off, return value on
3760
_builder
.EmitOpCode(ILOpCode.Castclass);
3793
_builder
.EmitNumericConversion(Cci.PrimitiveTypeCode.Int32, toType, @checked: false);
3837
_builder
.EmitBranch(ILOpCode.Br, doneLabel);
3841
_builder
.AdjustStack(-1);
3844
_builder
.MarkLabel(consequenceLabel);
3861
_builder
.MarkLabel(doneLabel);
3897
_builder
.EmitOpCode(ILOpCode.Dup);
3906
_builder
.EmitBranch(ILOpCode.Brtrue, ifLeftNotNullLabel);
3910
_builder
.EmitOpCode(ILOpCode.Pop);
3924
_builder
.MarkLabel(ifLeftNotNullLabel);
4039
_builder
.EmitLocalStore(temp);
4040
_builder
.EmitLocalLoad(temp);
4048
_builder
.EmitOpCode(ILOpCode.Box);
4064
_builder
.EmitLocalStore(temp);
4069
var countBefore =
_builder
.LocalSlotManager.StartScopeOfTrackingAddressedLocals();
4073
_builder
.LocalSlotManager.EndScopeOfTrackingAddressedLocals(countBefore,
4080
_builder
.EmitLocalLoad(temp);
4084
_builder
.EmitOpCode(ILOpCode.Calli, stackBehavior);
4130
_builder
.EmitOpCode(ILOpCode.Nop);
4156
_builder
.EmitOpCode(ILOpCode.Constrained);
4160
_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();
704
_builder
.OpenLocalScope(ScopeType.TryCatchFinally);
706
_builder
.OpenLocalScope(ScopeType.Try);
709
_builder
.CloseLocalScope(); // try
711
_builder
.OpenLocalScope(ScopeType.Finally);
719
_builder
.CloseLocalScope(); // finally
721
_builder
.CloseLocalScope(); // try-finally
735
_builder
.CloseLocalScope();
745
_builder
.OpenLocalScope();
765
_builder
.EmitBranch(ILOpCode.Br, s_returnLabel);
780
_builder
.CloseLocalScope();
796
_builder
.OpenLocalScope();
805
_builder
.AddLocalToScope(
_builder
.LocalSlotManager.GetLocal(local));
811
_builder
.CloseLocalScope();
816
_builder
.OpenLocalScope(ScopeType.StateMachineVariable);
821
_builder
.DefineUserDefinedStateMachineHoistedLocal(field.SlotIndex);
826
_builder
.CloseLocalScope();
848
_builder
.InExceptionHandler;
859
!
_builder
.InExceptionHandler;
881
_builder
.EmitLocalStore(LazyReturnTemp);
890
_builder
.EmitBranch(ILOpCode.Br, s_returnLabel);
904
_builder
.EmitLocalStore(LazyReturnTemp);
917
_builder
.EmitRet(expressionOpt == null);
927
_builder
.AssertStackEmpty();
936
_builder
.OpenLocalScope(ScopeType.TryCatchFinally);
938
_builder
.OpenLocalScope(ScopeType.Try);
955
_builder
.CloseLocalScope();
967
_builder
.OpenLocalScope(statement.PreferFaultHandler ? ScopeType.Fault : ScopeType.Finally);
971
_builder
.CloseLocalScope();
974
_builder
.CloseLocalScope();
995
_builder
.CloseLocalScope();
1041
_builder
.AdjustStack(1); // Account for exception on the stack.
1052
_builder
.OpenLocalScope(ScopeType.Catch, exceptionType);
1085
_builder
.OpenLocalScope(ScopeType.Filter);
1098
_builder
.EmitOpCode(ILOpCode.Isinst);
1099
_builder
.EmitToken(exceptionType, catchBlock.Syntax);
1100
_builder
.EmitOpCode(ILOpCode.Dup);
1101
_builder
.EmitBranch(ILOpCode.Brtrue, typeCheckPassedLabel);
1102
_builder
.EmitOpCode(ILOpCode.Pop);
1103
_builder
.EmitIntConstant(0);
1104
_builder
.EmitBranch(ILOpCode.Br, typeCheckFailedLabel);
1111
_builder
.MarkLabel(typeCheckPassedLabel);
1130
_builder
.EmitOpCode(ILOpCode.Unbox_any);
1150
_builder
.EmitLocalStore(GetLocal(exceptionSourceLocal));
1164
_builder
.DefineUserDefinedStateMachineHoistedLocal(stateMachineField.SlotIndex);
1170
_builder
.EmitLocalStore(temp);
1175
_builder
.EmitLocalLoad(temp);
1187
_builder
.EmitOpCode(ILOpCode.Pop);
1192
Debug.Assert(
_builder
.IsStackEmpty);
1203
_builder
.EmitIntConstant(0);
1204
_builder
.EmitOpCode(ILOpCode.Cgt_un);
1205
_builder
.MarkLabel(typeCheckFailedLabel);
1208
_builder
.MarkFilterConditionEnd();
1212
_builder
.EmitOpCode(ILOpCode.Pop);
1217
_builder
.CloseLocalScope();
1225
_asyncCatchHandlerOffset =
_builder
.AllocateILMarker();
1302
_builder
.EmitLocalStore(temp);
1324
_builder
.EmitIntegerSwitchJumpTable(switchCaseLabels, fallThroughLabel, key, expression.Type.EnumUnderlyingTypeOrSelf().PrimitiveTypeCode, expression.Syntax);
1388
_builder
.EmitLoad(keyTemp);
1389
_builder
.EmitBranch(ILOpCode.Brfalse, lengthBasedSwitchInfo.LengthBasedJumpTable.NullCaseLabel ?? fallThroughLabel, ILOpCode.Brtrue);
1397
_builder
.EmitLoadAddress(keyTemp);
1401
_builder
.EmitLoad(keyTemp);
1403
_builder
.EmitOpCode(ILOpCode.Call, stackAdjustment: 0);
1405
_builder
.EmitLocalStore(stringLength);
1409
_builder
.EmitIntegerSwitchJumpTable(
1427
_builder
.MarkLabel(charJumpTable.Label);
1432
_builder
.EmitLoadAddress(keyTemp);
1436
_builder
.EmitLoad(keyTemp);
1438
_builder
.EmitIntConstant(charJumpTable.SelectedCharPosition);
1439
_builder
.EmitOpCode(ILOpCode.Call, stackAdjustment: -1);
1443
_builder
.EmitOpCode(ILOpCode.Ldind_u2);
1445
_builder
.EmitLocalStore(charTemp);
1449
_builder
.EmitIntegerSwitchJumpTable(
1465
_builder
.MarkLabel(stringJumpTable.Label);
1478
_builder
.EmitToken(lengthMethodRef, syntaxNode: null);
1520
_builder
.EmitLoad(key);
1521
_builder
.EmitOpCode(ILOpCode.Call, stackAdjustment: 0);
1522
_builder
.EmitToken(stringHashMethodRef, syntaxNode);
1527
_builder
.EmitLocalStore(keyHash);
1570
_builder
.EmitLoad(keyArg);
1571
_builder
.EmitBranch(ILOpCode.Brfalse, targetLabel, ILOpCode.Brtrue);
1582
_builder
.EmitLoadAddress(keyArg);
1586
_builder
.EmitLoad(keyArg);
1587
_builder
.EmitBranch(ILOpCode.Brfalse, skipToNext, ILOpCode.Brtrue);
1589
_builder
.EmitLoad(keyArg);
1593
_builder
.EmitOpCode(ILOpCode.Call, 0);
1595
_builder
.EmitToken(lengthMethodRef, null);
1599
_builder
.EmitBranch(ILOpCode.Brfalse, targetLabel, ILOpCode.Brtrue);
1600
_builder
.MarkLabel(skipToNext);
1615
_builder
.EmitStringSwitchJumpTable(
1711
_builder
.EmitLoad(key);
1712
_builder
.EmitConstantValue(stringConstant, syntaxNode);
1713
_builder
.EmitOpCode(ILOpCode.Call, stackAdjustment: -1);
1714
_builder
.EmitToken(stringEqualityMethodRef, syntaxNode);
1717
_builder
.EmitBranch(ILOpCode.Brtrue, targetLabel, ILOpCode.Brfalse);
1738
_builder
.EmitLoad(key);
1739
_builder
.EmitConstantValue(stringConstant, syntaxNode);
1740
_builder
.EmitOpCode(ILOpCode.Call, stackAdjustment: 0);
1741
_builder
.EmitToken(asSpanRef, syntaxNode);
1742
_builder
.EmitOpCode(ILOpCode.Call, stackAdjustment: -1);
1743
_builder
.EmitToken(sequenceEqualsRef, syntaxNode);
1746
_builder
.EmitBranch(ILOpCode.Brtrue, targetLabel, ILOpCode.Brfalse);
1760
return
_builder
.LocalSlotManager.GetLocal(symbol);
1782
_builder
.AddLocalConstantToScope(localConstantDef);
1823
var localDef =
_builder
.LocalSlotManager.DeclareLocal(
1841
_builder
.AddLocalToScope(localDef);
1900
_builder
.LocalSlotManager.FreeLocal(local);
1909
return
_builder
.LocalSlotManager.AllocateSlot(
1919
_builder
.LocalSlotManager.FreeSlot(temp);