65 instantiations of BasicBlockBuilder
Microsoft.CodeAnalysis (65)
Operations\ControlFlowGraphBuilder.cs (65)
30private readonly BasicBlockBuilder _entry = new BasicBlockBuilder(BasicBlockKind.Entry); 31private readonly BasicBlockBuilder _exit = new BasicBlockBuilder(BasicBlockKind.Exit); 1263AppendNewBlock(new BasicBlockBuilder(BasicBlockKind.Block)); 1345AppendNewBlock(new BasicBlockBuilder(BasicBlockKind.Block)); 1576var afterIf = new BasicBlockBuilder(BasicBlockKind.Block); 1608var afterIf = new BasicBlockBuilder(BasicBlockKind.Block); 2332var done = new BasicBlockBuilder(BasicBlockKind.Block); 2333var checkRight = new BasicBlockBuilder(BasicBlockKind.Block); 2334var resultIsLeft = new BasicBlockBuilder(BasicBlockKind.Block); 2401var done = new BasicBlockBuilder(BasicBlockKind.Block); 2402var checkRight = new BasicBlockBuilder(BasicBlockKind.Block); 2464var done = new BasicBlockBuilder(BasicBlockKind.Block); 2465var doBitWise = new BasicBlockBuilder(BasicBlockKind.Block); 2561var done = new BasicBlockBuilder(BasicBlockKind.Block); 2562var doBitWise = new BasicBlockBuilder(BasicBlockKind.Block); 2670var labEnd = new BasicBlockBuilder(BasicBlockKind.Block); 2776dest ??= new BasicBlockBuilder(BasicBlockKind.Block); 2797BasicBlockBuilder? fallThrough = new BasicBlockBuilder(BasicBlockKind.Block); 2861var afterIf = new BasicBlockBuilder(BasicBlockKind.Block); 2880var whenNull = new BasicBlockBuilder(BasicBlockKind.Block); 2886dest ??= new BasicBlockBuilder(BasicBlockKind.Block); 2890var afterCoalesce = new BasicBlockBuilder(BasicBlockKind.Block); 2914dest ??= new BasicBlockBuilder(BasicBlockKind.Block); 2924dest ??= new BasicBlockBuilder(BasicBlockKind.Block); 3034var whenNull = new BasicBlockBuilder(BasicBlockKind.Block); 3038var afterCoalesce = new BasicBlockBuilder(BasicBlockKind.Block); 3107var whenNull = new BasicBlockBuilder(BasicBlockKind.Block); 3108var afterCoalesce = new BasicBlockBuilder(BasicBlockKind.Block); 3361var whenNull = new BasicBlockBuilder(BasicBlockKind.Block); 3430var afterAccess = new BasicBlockBuilder(BasicBlockKind.Block); 3604var start = new BasicBlockBuilder(BasicBlockKind.Block); 3676var catchBlock = new BasicBlockBuilder(BasicBlockKind.Block); 3689var continueDispatchBlock = new BasicBlockBuilder(BasicBlockKind.Block); 3749AppendNewBlock(new BasicBlockBuilder(BasicBlockKind.Block)); 3751var continueDispatchBlock = new BasicBlockBuilder(BasicBlockKind.Block); 3853labeled = new BasicBlockBuilder(BasicBlockKind.Block); 3863return new BasicBlockBuilder(BasicBlockKind.Block); 3877labeledBlock = new BasicBlockBuilder(BasicBlockKind.Block); 3907AppendNewBlock(new BasicBlockBuilder(BasicBlockKind.Block), linkToPrevious: false); 4065var afterTryFinally = new BasicBlockBuilder(BasicBlockKind.Block); 4096var endOfFinally = new BasicBlockBuilder(BasicBlockKind.Block); 4101AppendNewBlock(new BasicBlockBuilder(BasicBlockKind.Block)); 4276var afterTryFinally = new BasicBlockBuilder(BasicBlockKind.Block); 4318var endOfFinally = new BasicBlockBuilder(BasicBlockKind.Block); 4322AppendNewBlock(new BasicBlockBuilder(BasicBlockKind.Block)); 4449var afterTryFinally = new BasicBlockBuilder(BasicBlockKind.Block); 4648BasicBlockBuilder checkConditionBlock = new BasicBlockBuilder(BasicBlockKind.Block); 4649BasicBlockBuilder bodyBlock = new BasicBlockBuilder(BasicBlockKind.Block); 4841var afterPositiveCheck = new BasicBlockBuilder(BasicBlockKind.Block); 4845var whenNotNull = new BasicBlockBuilder(BasicBlockKind.Block); 4952var notPositive = new BasicBlockBuilder(BasicBlockKind.Block); 5070var whenBothNotNull = new BasicBlockBuilder(BasicBlockKind.Block); 5091var notPositive = new BasicBlockBuilder(BasicBlockKind.Block); 5221BasicBlockBuilder afterIncrement = new BasicBlockBuilder(BasicBlockKind.Block); 5233BasicBlockBuilder whenNotNull = new BasicBlockBuilder(BasicBlockKind.Block); 5409var body = new BasicBlockBuilder(BasicBlockKind.Block); 5410var nextSection = new BasicBlockBuilder(BasicBlockKind.Block); 5425var nextCase = new BasicBlockBuilder(BasicBlockKind.Block); 5520AppendNewBlock(new BasicBlockBuilder(BasicBlockKind.Block)); 5607AppendNewBlock(new BasicBlockBuilder(BasicBlockKind.Block), linkToPrevious: false); 5651var start = new BasicBlockBuilder(BasicBlockKind.Block); 5733afterInitialization = new BasicBlockBuilder(BasicBlockKind.Block); 6563resultBlock = new BasicBlockBuilder(BasicBlockKind.Block); 7479var afterSwitch = new BasicBlockBuilder(BasicBlockKind.Block); 7486var afterArm = new BasicBlockBuilder(BasicBlockKind.Block);
184 references to BasicBlockBuilder
Microsoft.CodeAnalysis (184)
Operations\ControlFlowGraphBuilder.BasicBlockBuilder.cs (13)
23private BasicBlockBuilder? _predecessor1; 24private BasicBlockBuilder? _predecessor2; 25private PooledHashSet<BasicBlockBuilder>? _predecessors; 61public void MoveStatementsFrom(BasicBlockBuilder other) 121public BasicBlockBuilder? GetSingletonPredecessorOrDefault() 143public void AddPredecessor(BasicBlockBuilder predecessor) 171_predecessors = PooledHashSet<BasicBlockBuilder>.GetInstance(); 181public void RemovePredecessor(BasicBlockBuilder predecessor) 201public void GetPredecessors(ArrayBuilder<BasicBlockBuilder> builder) 208foreach (BasicBlockBuilder predecessor in _predecessors) 245foreach (BasicBlockBuilder predecessorBlockBuilder in _predecessors) 289void addBranches(BasicBlockBuilder predecessorBlockBuilder) 319public BasicBlockBuilder? Destination { get; set; }
Operations\ControlFlowGraphBuilder.ConditionalAccessOperationTracker.cs (2)
26public readonly BasicBlockBuilder? WhenNull; 28public ConditionalAccessOperationTracker(ArrayBuilder<IOperation> operations, BasicBlockBuilder whenNull)
Operations\ControlFlowGraphBuilder.cs (164)
30private readonly BasicBlockBuilder _entry = new BasicBlockBuilder(BasicBlockKind.Entry); 31private readonly BasicBlockBuilder _exit = new BasicBlockBuilder(BasicBlockKind.Exit); 33private readonly ArrayBuilder<BasicBlockBuilder> _blocks; 34private readonly PooledDictionary<BasicBlockBuilder, RegionBuilder> _regionMap; 35private BasicBlockBuilder? _currentBasicBlock; 37private PooledDictionary<ILabelSymbol, BasicBlockBuilder>? _labeledBlocks; 63private ControlFlowGraphBuilder(Compilation compilation, CaptureIdDispenser? captureIdDispenser, ArrayBuilder<BasicBlockBuilder> blocks) 69_regionMap = PooledDictionary<BasicBlockBuilder, RegionBuilder>.GetInstance(); 113var blocks = ArrayBuilder<BasicBlockBuilder>.GetInstance(); 172private static ImmutableArray<BasicBlock> ToImmutableBlocks(ArrayBuilder<BasicBlockBuilder> blockBuilders) 177foreach (BasicBlockBuilder blockBuilder in blockBuilders) 184foreach (BasicBlockBuilder blockBuilder in blockBuilders) 192foreach (BasicBlockBuilder blockBuilder in blockBuilders) 199ControlFlowBranch? getFallThroughSuccessor(BasicBlockBuilder blockBuilder) 206ControlFlowBranch? getConditionalSuccessor(BasicBlockBuilder blockBuilder) 213ControlFlowBranch getBranch(in BasicBlockBuilder.Branch branch, BasicBlockBuilder source, bool isConditionalSuccessor) 223private static void MarkReachableBlocks(ArrayBuilder<BasicBlockBuilder> blocks) 240ArrayBuilder<BasicBlockBuilder> blocks, 243ArrayBuilder<BasicBlockBuilder>? outOfRangeBlocksToVisit, 249var toVisit = ArrayBuilder<BasicBlockBuilder>.GetInstance(); 256BasicBlockBuilder current = toVisit.Pop(); 292BasicBlockBuilder.Branch branch = current.FallThrough; 313void followBranch(BasicBlockBuilder current, in BasicBlockBuilder.Branch branch) 344bool stepThroughFinally(ControlFlowRegion region, BasicBlockBuilder destination) 476BasicBlockBuilder entryBlock = blocks[@catch.FirstBlockOrdinal]; 494private static void Pack(ArrayBuilder<BasicBlockBuilder> blocks, RegionBuilder root, PooledDictionary<BasicBlockBuilder, RegionBuilder> regionMap) 511private static bool PackRegions(RegionBuilder root, ArrayBuilder<BasicBlockBuilder> blocks, PooledDictionary<BasicBlockBuilder, RegionBuilder> regionMap) 577BasicBlockBuilder block = subRegion.FirstBlock; 614private static void MergeSubRegionAndFree(RegionBuilder subRegion, ArrayBuilder<BasicBlockBuilder> blocks, PooledDictionary<BasicBlockBuilder, RegionBuilder> regionMap, bool canHaveEmptyRegion = false) 670private static bool PackBlocks(ArrayBuilder<BasicBlockBuilder> blocks, PooledDictionary<BasicBlockBuilder, RegionBuilder> regionMap) 675ArrayBuilder<BasicBlockBuilder>? predecessorsBuilder = null; 690BasicBlockBuilder block = blocks[i]; 696BasicBlockBuilder? predecessor = block.GetSingletonPredecessorOrDefault(); 716ref BasicBlockBuilder.Branch next = ref block.FallThrough; 803BasicBlockBuilder? predecessor = block.GetSingletonPredecessorOrDefault(); 869BasicBlockBuilder? predecessor = block.GetSingletonPredecessorOrDefault(); 893predecessorsBuilder = ArrayBuilder<BasicBlockBuilder>.GetInstance(); 915foreach (BasicBlockBuilder predecessor in predecessorsBuilder) 956BasicBlockBuilder? predecessor = block.GetSingletonPredecessorOrDefault(); 986BasicBlockBuilder? destination = block.Conditional.Destination; 1014RegionBuilder? tryGetImplicitEntryRegion(BasicBlockBuilder block, [DisallowNull] RegionBuilder? currentRegion) 1038void removeBlock(BasicBlockBuilder block, RegionBuilder region) 1048BasicBlockBuilder newFirst = blocks[block.Ordinal + 1]; 1061BasicBlockBuilder newLast = blocks[block.Ordinal - 1]; 1082bool tryMergeBranch(BasicBlockBuilder predecessor, ref BasicBlockBuilder.Branch predecessorBranch, BasicBlockBuilder successor) 1093void mergeBranch(BasicBlockBuilder predecessor, ref BasicBlockBuilder.Branch predecessorBranch, ref BasicBlockBuilder.Branch successorBranch) 1101bool checkBranchesFromPredecessors(ArrayBuilder<BasicBlockBuilder> predecessors, RegionBuilder currentRegion, RegionBuilder? destinationRegionOpt) 1103foreach (BasicBlockBuilder predecessor in predecessors) 1186private static void CheckUnresolvedBranches(ArrayBuilder<BasicBlockBuilder> blocks, PooledDictionary<ILabelSymbol, BasicBlockBuilder>? labeledBlocks) 1193PooledHashSet<BasicBlockBuilder>? unresolved = null; 1194foreach (BasicBlockBuilder labeled in labeledBlocks.Values) 1200unresolved = PooledHashSet<BasicBlockBuilder>.GetInstance(); 1213foreach (BasicBlockBuilder block in blocks) 1222void fixupBranch(ref BasicBlockBuilder.Branch branch) 1257private BasicBlockBuilder CurrentBasicBlock 1295private void AppendNewBlock(BasicBlockBuilder block, bool linkToPrevious = true) 1302BasicBlockBuilder prevBlock = _blocks.Last(); 1368private static void LinkBlocks(BasicBlockBuilder prevBlock, BasicBlockBuilder nextBlock, ControlFlowBranchSemantics branchKind = ControlFlowBranchSemantics.Regular) 1377private void UnconditionalBranch(BasicBlockBuilder nextBlock) 1550BasicBlockBuilder? afterIf = null; 1571BasicBlockBuilder? whenFalse = null; 1576var afterIf = new BasicBlockBuilder(BasicBlockKind.Block); 1605BasicBlockBuilder? whenFalse = null; 1608var afterIf = new BasicBlockBuilder(BasicBlockKind.Block); 2269BasicBlockBuilder? fallToTrueOpt, BasicBlockBuilder? fallToFalseOpt) 2332var done = new BasicBlockBuilder(BasicBlockKind.Block); 2333var checkRight = new BasicBlockBuilder(BasicBlockKind.Block); 2334var resultIsLeft = new BasicBlockBuilder(BasicBlockKind.Block); 2401var done = new BasicBlockBuilder(BasicBlockKind.Block); 2402var checkRight = new BasicBlockBuilder(BasicBlockKind.Block); 2464var done = new BasicBlockBuilder(BasicBlockKind.Block); 2465var doBitWise = new BasicBlockBuilder(BasicBlockKind.Block); 2561var done = new BasicBlockBuilder(BasicBlockKind.Block); 2562var doBitWise = new BasicBlockBuilder(BasicBlockKind.Block); 2635int? captureIdForResult, BasicBlockBuilder? fallToTrueOpt, BasicBlockBuilder? fallToFalseOpt) 2654ref BasicBlockBuilder? lazyFallThrough = ref stopValue ? ref fallToTrueOpt : ref fallToFalseOpt; 2670var labEnd = new BasicBlockBuilder(BasicBlockKind.Block); 2685private IOperation VisitConditionalExpression(IOperation condition, bool sense, int? captureIdForResult, BasicBlockBuilder? fallToTrueOpt, BasicBlockBuilder? fallToFalseOpt) 2741private void VisitConditionalBranch(IOperation condition, [NotNull] ref BasicBlockBuilder? dest, bool jumpIfTrue) 2756private void VisitConditionalBranchCore(IOperation condition, [NotNull] ref BasicBlockBuilder? dest, bool jumpIfTrue) 2763void visitConditionalBranchCore(IOperation condition, [NotNull] ref BasicBlockBuilder? dest, bool jumpIfTrue) 2777var stack = ArrayBuilder<(IOperation? condition, BasicBlockBuilder dest, bool jumpIfTrue)>.GetInstance(); 2782(IOperation? condition, BasicBlockBuilder dest, bool jumpIfTrue) top = stack.Pop(); 2797BasicBlockBuilder? fallThrough = new BasicBlockBuilder(BasicBlockKind.Block); 2857BasicBlockBuilder? whenFalse = null; 2861var afterIf = new BasicBlockBuilder(BasicBlockKind.Block); 2880var whenNull = new BasicBlockBuilder(BasicBlockKind.Block); 2890var afterCoalesce = new BasicBlockBuilder(BasicBlockKind.Block); 2945private void ConditionalBranch(IOperation condition, bool jumpIfTrue, BasicBlockBuilder destination) 2947BasicBlockBuilder previous = CurrentBasicBlock; 2948BasicBlockBuilder.Branch branch = RegularBranch(destination); 2964private IOperation NullCheckAndConvertCoalesceValue(ICoalesceOperation operation, BasicBlockBuilder whenNull) 3034var whenNull = new BasicBlockBuilder(BasicBlockKind.Block); 3038var afterCoalesce = new BasicBlockBuilder(BasicBlockKind.Block); 3107var whenNull = new BasicBlockBuilder(BasicBlockKind.Block); 3108var afterCoalesce = new BasicBlockBuilder(BasicBlockKind.Block); 3266private static BasicBlockBuilder.Branch RegularBranch(BasicBlockBuilder destination) 3268return new BasicBlockBuilder.Branch() { Destination = destination, Kind = ControlFlowBranchSemantics.Regular }; 3361var whenNull = new BasicBlockBuilder(BasicBlockKind.Block); 3430var afterAccess = new BasicBlockBuilder(BasicBlockKind.Block); 3561var @continue = GetLabeledOrNewBlock(operation.ContinueLabel); 3562var @break = GetLabeledOrNewBlock(operation.ExitLabel); 3604var start = new BasicBlockBuilder(BasicBlockKind.Block); 3633var afterTryCatchFinally = GetLabeledOrNewBlock(operation.ExitLabel); 3676var catchBlock = new BasicBlockBuilder(BasicBlockKind.Block); 3689var continueDispatchBlock = new BasicBlockBuilder(BasicBlockKind.Block); 3724var predecessors = ArrayBuilder<BasicBlockBuilder>.GetInstance(); 3751var continueDispatchBlock = new BasicBlockBuilder(BasicBlockKind.Block); 3823BasicBlockBuilder current = CurrentBasicBlock; 3848BasicBlockBuilder labeled = GetLabeledOrNewBlock(operation); 3859private BasicBlockBuilder GetLabeledOrNewBlock(ILabelSymbol? labelOpt) 3866BasicBlockBuilder? labeledBlock; 3870_labeledBlocks = PooledDictionary<ILabelSymbol, BasicBlockBuilder>.GetInstance(); 3921BasicBlockBuilder current = CurrentBasicBlock; 4065var afterTryFinally = new BasicBlockBuilder(BasicBlockKind.Block); 4096var endOfFinally = new BasicBlockBuilder(BasicBlockKind.Block); 4276var afterTryFinally = new BasicBlockBuilder(BasicBlockKind.Block); 4318var endOfFinally = new BasicBlockBuilder(BasicBlockKind.Block); 4422var @continue = GetLabeledOrNewBlock(operation.ContinueLabel); 4423var @break = GetLabeledOrNewBlock(operation.ExitLabel); 4449var afterTryFinally = new BasicBlockBuilder(BasicBlockKind.Block); 4646BasicBlockBuilder @continue = GetLabeledOrNewBlock(operation.ContinueLabel); 4647BasicBlockBuilder? @break = GetLabeledOrNewBlock(operation.ExitLabel); 4648BasicBlockBuilder checkConditionBlock = new BasicBlockBuilder(BasicBlockKind.Block); 4649BasicBlockBuilder bodyBlock = new BasicBlockBuilder(BasicBlockKind.Block); 4841var afterPositiveCheck = new BasicBlockBuilder(BasicBlockKind.Block); 4845var whenNotNull = new BasicBlockBuilder(BasicBlockKind.Block); 4952var notPositive = new BasicBlockBuilder(BasicBlockKind.Block); 5070var whenBothNotNull = new BasicBlockBuilder(BasicBlockKind.Block); 5091var notPositive = new BasicBlockBuilder(BasicBlockKind.Block); 5221BasicBlockBuilder afterIncrement = new BasicBlockBuilder(BasicBlockKind.Block); 5233BasicBlockBuilder whenNotNull = new BasicBlockBuilder(BasicBlockKind.Block); 5376BasicBlockBuilder? defaultBody = null; // Adjusted in handleSection 5377BasicBlockBuilder @break = GetLabeledOrNewBlock(operation.ExitLabel); 5409var body = new BasicBlockBuilder(BasicBlockKind.Block); 5410var nextSection = new BasicBlockBuilder(BasicBlockKind.Block); 5425var nextCase = new BasicBlockBuilder(BasicBlockKind.Block); 5442void handleCase(ICaseClauseOperation caseClause, BasicBlockBuilder body, [DisallowNull] BasicBlockBuilder? nextCase) 5445BasicBlockBuilder labeled = GetLabeledOrNewBlock(caseClause.Label); 5606BasicBlockBuilder current = CurrentBasicBlock; 5651var start = new BasicBlockBuilder(BasicBlockKind.Block); 5656var @break = GetLabeledOrNewBlock(operation.ExitLabel); 5664var @continue = GetLabeledOrNewBlock(operation.ContinueLabel); 5730BasicBlockBuilder? afterInitialization = null; 6560BasicBlockBuilder? resultBlock = null; 7479var afterSwitch = new BasicBlockBuilder(BasicBlockKind.Block); 7486var afterArm = new BasicBlockBuilder(BasicBlockKind.Block);
Operations\ControlFlowGraphBuilder.RegionBuilder.cs (5)
20public BasicBlockBuilder? FirstBlock = null; 21public BasicBlockBuilder? LastBlock = null; 248public void ExtendToInclude(BasicBlockBuilder block) 296public ControlFlowRegion ToImmutableRegionAndFree(ArrayBuilder<BasicBlockBuilder> blocks, 375void setRegion(BasicBlockBuilder block)