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); 1271AppendNewBlock(new BasicBlockBuilder(BasicBlockKind.Block)); 1354AppendNewBlock(new BasicBlockBuilder(BasicBlockKind.Block)); 1571var afterIf = new BasicBlockBuilder(BasicBlockKind.Block); 1623var afterIf = new BasicBlockBuilder(BasicBlockKind.Block); 2359var done = new BasicBlockBuilder(BasicBlockKind.Block); 2360var checkRight = new BasicBlockBuilder(BasicBlockKind.Block); 2361var resultIsLeft = new BasicBlockBuilder(BasicBlockKind.Block); 2428var done = new BasicBlockBuilder(BasicBlockKind.Block); 2429var checkRight = new BasicBlockBuilder(BasicBlockKind.Block); 2491var done = new BasicBlockBuilder(BasicBlockKind.Block); 2492var doBitWise = new BasicBlockBuilder(BasicBlockKind.Block); 2588var done = new BasicBlockBuilder(BasicBlockKind.Block); 2589var doBitWise = new BasicBlockBuilder(BasicBlockKind.Block); 2697var labEnd = new BasicBlockBuilder(BasicBlockKind.Block); 2803dest ??= new BasicBlockBuilder(BasicBlockKind.Block); 2824BasicBlockBuilder? fallThrough = new BasicBlockBuilder(BasicBlockKind.Block); 2888var afterIf = new BasicBlockBuilder(BasicBlockKind.Block); 2907var whenNull = new BasicBlockBuilder(BasicBlockKind.Block); 2913dest ??= new BasicBlockBuilder(BasicBlockKind.Block); 2917var afterCoalesce = new BasicBlockBuilder(BasicBlockKind.Block); 2941dest ??= new BasicBlockBuilder(BasicBlockKind.Block); 2951dest ??= new BasicBlockBuilder(BasicBlockKind.Block); 3061var whenNull = new BasicBlockBuilder(BasicBlockKind.Block); 3065var afterCoalesce = new BasicBlockBuilder(BasicBlockKind.Block); 3134var whenNull = new BasicBlockBuilder(BasicBlockKind.Block); 3135var afterCoalesce = new BasicBlockBuilder(BasicBlockKind.Block); 3388var whenNull = new BasicBlockBuilder(BasicBlockKind.Block); 3457var afterAccess = new BasicBlockBuilder(BasicBlockKind.Block); 3631var start = new BasicBlockBuilder(BasicBlockKind.Block); 3703var catchBlock = new BasicBlockBuilder(BasicBlockKind.Block); 3716var continueDispatchBlock = new BasicBlockBuilder(BasicBlockKind.Block); 3776AppendNewBlock(new BasicBlockBuilder(BasicBlockKind.Block)); 3778var continueDispatchBlock = new BasicBlockBuilder(BasicBlockKind.Block); 3880labeled = new BasicBlockBuilder(BasicBlockKind.Block); 3890return new BasicBlockBuilder(BasicBlockKind.Block); 3904labeledBlock = new BasicBlockBuilder(BasicBlockKind.Block); 3934AppendNewBlock(new BasicBlockBuilder(BasicBlockKind.Block), linkToPrevious: false); 4096var afterTryFinally = new BasicBlockBuilder(BasicBlockKind.Block); 4128var endOfFinally = new BasicBlockBuilder(BasicBlockKind.Block); 4133AppendNewBlock(new BasicBlockBuilder(BasicBlockKind.Block)); 4368var afterTryFinally = new BasicBlockBuilder(BasicBlockKind.Block); 4410var endOfFinally = new BasicBlockBuilder(BasicBlockKind.Block); 4414AppendNewBlock(new BasicBlockBuilder(BasicBlockKind.Block)); 4541var afterTryFinally = new BasicBlockBuilder(BasicBlockKind.Block); 4756BasicBlockBuilder checkConditionBlock = new BasicBlockBuilder(BasicBlockKind.Block); 4757BasicBlockBuilder bodyBlock = new BasicBlockBuilder(BasicBlockKind.Block); 4949var afterPositiveCheck = new BasicBlockBuilder(BasicBlockKind.Block); 4953var whenNotNull = new BasicBlockBuilder(BasicBlockKind.Block); 5060var notPositive = new BasicBlockBuilder(BasicBlockKind.Block); 5178var whenBothNotNull = new BasicBlockBuilder(BasicBlockKind.Block); 5199var notPositive = new BasicBlockBuilder(BasicBlockKind.Block); 5329BasicBlockBuilder afterIncrement = new BasicBlockBuilder(BasicBlockKind.Block); 5341BasicBlockBuilder whenNotNull = new BasicBlockBuilder(BasicBlockKind.Block); 5517var body = new BasicBlockBuilder(BasicBlockKind.Block); 5518var nextSection = new BasicBlockBuilder(BasicBlockKind.Block); 5533var nextCase = new BasicBlockBuilder(BasicBlockKind.Block); 5628AppendNewBlock(new BasicBlockBuilder(BasicBlockKind.Block)); 5715AppendNewBlock(new BasicBlockBuilder(BasicBlockKind.Block), linkToPrevious: false); 5759var start = new BasicBlockBuilder(BasicBlockKind.Block); 5841afterInitialization = new BasicBlockBuilder(BasicBlockKind.Block); 6834resultBlock = new BasicBlockBuilder(BasicBlockKind.Block); 7787var afterSwitch = new BasicBlockBuilder(BasicBlockKind.Block); 7794var 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> ToImmutableBlocksAndFree(ArrayBuilder<BasicBlockBuilder> blockBuilders) 177foreach (BasicBlockBuilder blockBuilder in blockBuilders) 184foreach (BasicBlockBuilder blockBuilder in blockBuilders) 192foreach (BasicBlockBuilder blockBuilder in blockBuilders) 198foreach (BasicBlockBuilder blockBuilder in blockBuilders) 207ControlFlowBranch? getFallThroughSuccessor(BasicBlockBuilder blockBuilder) 214ControlFlowBranch? getConditionalSuccessor(BasicBlockBuilder blockBuilder) 221ControlFlowBranch getBranch(in BasicBlockBuilder.Branch branch, BasicBlockBuilder source, bool isConditionalSuccessor) 231private static void MarkReachableBlocks(ArrayBuilder<BasicBlockBuilder> blocks) 248ArrayBuilder<BasicBlockBuilder> blocks, 251ArrayBuilder<BasicBlockBuilder>? outOfRangeBlocksToVisit, 257var toVisit = ArrayBuilder<BasicBlockBuilder>.GetInstance(); 264BasicBlockBuilder current = toVisit.Pop(); 300BasicBlockBuilder.Branch branch = current.FallThrough; 321void followBranch(BasicBlockBuilder current, in BasicBlockBuilder.Branch branch) 352bool stepThroughFinally(ControlFlowRegion region, BasicBlockBuilder destination) 484BasicBlockBuilder entryBlock = blocks[@catch.FirstBlockOrdinal]; 502private static void Pack(ArrayBuilder<BasicBlockBuilder> blocks, RegionBuilder root, PooledDictionary<BasicBlockBuilder, RegionBuilder> regionMap) 519private static bool PackRegions(RegionBuilder root, ArrayBuilder<BasicBlockBuilder> blocks, PooledDictionary<BasicBlockBuilder, RegionBuilder> regionMap) 585BasicBlockBuilder block = subRegion.FirstBlock; 622private static void MergeSubRegionAndFree(RegionBuilder subRegion, ArrayBuilder<BasicBlockBuilder> blocks, PooledDictionary<BasicBlockBuilder, RegionBuilder> regionMap, bool canHaveEmptyRegion = false) 678private static bool PackBlocks(ArrayBuilder<BasicBlockBuilder> blocks, PooledDictionary<BasicBlockBuilder, RegionBuilder> regionMap) 683ArrayBuilder<BasicBlockBuilder>? predecessorsBuilder = null; 698BasicBlockBuilder block = blocks[i]; 704BasicBlockBuilder? predecessor = block.GetSingletonPredecessorOrDefault(); 724ref BasicBlockBuilder.Branch next = ref block.FallThrough; 811BasicBlockBuilder? predecessor = block.GetSingletonPredecessorOrDefault(); 877BasicBlockBuilder? predecessor = block.GetSingletonPredecessorOrDefault(); 901predecessorsBuilder = ArrayBuilder<BasicBlockBuilder>.GetInstance(); 923foreach (BasicBlockBuilder predecessor in predecessorsBuilder) 964BasicBlockBuilder? predecessor = block.GetSingletonPredecessorOrDefault(); 994BasicBlockBuilder? destination = block.Conditional.Destination; 1022RegionBuilder? tryGetImplicitEntryRegion(BasicBlockBuilder block, [DisallowNull] RegionBuilder? currentRegion) 1046void removeBlock(BasicBlockBuilder block, RegionBuilder region) 1056BasicBlockBuilder newFirst = blocks[block.Ordinal + 1]; 1069BasicBlockBuilder newLast = blocks[block.Ordinal - 1]; 1090bool tryMergeBranch(BasicBlockBuilder predecessor, ref BasicBlockBuilder.Branch predecessorBranch, BasicBlockBuilder successor) 1101void mergeBranch(BasicBlockBuilder predecessor, ref BasicBlockBuilder.Branch predecessorBranch, ref BasicBlockBuilder.Branch successorBranch) 1109bool checkBranchesFromPredecessors(ArrayBuilder<BasicBlockBuilder> predecessors, RegionBuilder currentRegion, RegionBuilder? destinationRegionOpt) 1111foreach (BasicBlockBuilder predecessor in predecessors) 1194private static void CheckUnresolvedBranches(ArrayBuilder<BasicBlockBuilder> blocks, PooledDictionary<ILabelSymbol, BasicBlockBuilder>? labeledBlocks) 1201PooledHashSet<BasicBlockBuilder>? unresolved = null; 1202foreach (BasicBlockBuilder labeled in labeledBlocks.Values) 1208unresolved = PooledHashSet<BasicBlockBuilder>.GetInstance(); 1221foreach (BasicBlockBuilder block in blocks) 1230void fixupBranch(ref BasicBlockBuilder.Branch branch) 1265private BasicBlockBuilder CurrentBasicBlock 1304private void AppendNewBlock(BasicBlockBuilder block, bool linkToPrevious = true) 1311BasicBlockBuilder prevBlock = _blocks.Last(); 1377private static void LinkBlocks(BasicBlockBuilder prevBlock, BasicBlockBuilder nextBlock, ControlFlowBranchSemantics branchKind = ControlFlowBranchSemantics.Regular) 1386private void UnconditionalBranch(BasicBlockBuilder nextBlock) 1571var afterIf = new BasicBlockBuilder(BasicBlockKind.Block); 1575BasicBlockBuilder? whenFalse = null; 1620BasicBlockBuilder? whenFalse = null; 1623var afterIf = new BasicBlockBuilder(BasicBlockKind.Block); 2296BasicBlockBuilder? fallToTrueOpt, BasicBlockBuilder? fallToFalseOpt) 2359var done = new BasicBlockBuilder(BasicBlockKind.Block); 2360var checkRight = new BasicBlockBuilder(BasicBlockKind.Block); 2361var resultIsLeft = new BasicBlockBuilder(BasicBlockKind.Block); 2428var done = new BasicBlockBuilder(BasicBlockKind.Block); 2429var checkRight = new BasicBlockBuilder(BasicBlockKind.Block); 2491var done = new BasicBlockBuilder(BasicBlockKind.Block); 2492var doBitWise = new BasicBlockBuilder(BasicBlockKind.Block); 2588var done = new BasicBlockBuilder(BasicBlockKind.Block); 2589var doBitWise = new BasicBlockBuilder(BasicBlockKind.Block); 2662int? captureIdForResult, BasicBlockBuilder? fallToTrueOpt, BasicBlockBuilder? fallToFalseOpt) 2681ref BasicBlockBuilder? lazyFallThrough = ref stopValue ? ref fallToTrueOpt : ref fallToFalseOpt; 2697var labEnd = new BasicBlockBuilder(BasicBlockKind.Block); 2712private IOperation VisitConditionalExpression(IOperation condition, bool sense, int? captureIdForResult, BasicBlockBuilder? fallToTrueOpt, BasicBlockBuilder? fallToFalseOpt) 2768private void VisitConditionalBranch(IOperation condition, [NotNull] ref BasicBlockBuilder? dest, bool jumpIfTrue) 2783private void VisitConditionalBranchCore(IOperation condition, [NotNull] ref BasicBlockBuilder? dest, bool jumpIfTrue) 2790void visitConditionalBranchCore(IOperation condition, [NotNull] ref BasicBlockBuilder? dest, bool jumpIfTrue) 2804var stack = ArrayBuilder<(IOperation? condition, BasicBlockBuilder dest, bool jumpIfTrue)>.GetInstance(); 2809(IOperation? condition, BasicBlockBuilder dest, bool jumpIfTrue) top = stack.Pop(); 2824BasicBlockBuilder? fallThrough = new BasicBlockBuilder(BasicBlockKind.Block); 2884BasicBlockBuilder? whenFalse = null; 2888var afterIf = new BasicBlockBuilder(BasicBlockKind.Block); 2907var whenNull = new BasicBlockBuilder(BasicBlockKind.Block); 2917var afterCoalesce = new BasicBlockBuilder(BasicBlockKind.Block); 2972private void ConditionalBranch(IOperation condition, bool jumpIfTrue, BasicBlockBuilder destination) 2974BasicBlockBuilder previous = CurrentBasicBlock; 2975BasicBlockBuilder.Branch branch = RegularBranch(destination); 2991private IOperation NullCheckAndConvertCoalesceValue(ICoalesceOperation operation, BasicBlockBuilder whenNull) 3061var whenNull = new BasicBlockBuilder(BasicBlockKind.Block); 3065var afterCoalesce = new BasicBlockBuilder(BasicBlockKind.Block); 3134var whenNull = new BasicBlockBuilder(BasicBlockKind.Block); 3135var afterCoalesce = new BasicBlockBuilder(BasicBlockKind.Block); 3293private static BasicBlockBuilder.Branch RegularBranch(BasicBlockBuilder destination) 3295return new BasicBlockBuilder.Branch() { Destination = destination, Kind = ControlFlowBranchSemantics.Regular }; 3388var whenNull = new BasicBlockBuilder(BasicBlockKind.Block); 3457var afterAccess = new BasicBlockBuilder(BasicBlockKind.Block); 3588var @continue = GetLabeledOrNewBlock(operation.ContinueLabel); 3589var @break = GetLabeledOrNewBlock(operation.ExitLabel); 3631var start = new BasicBlockBuilder(BasicBlockKind.Block); 3660var afterTryCatchFinally = GetLabeledOrNewBlock(operation.ExitLabel); 3703var catchBlock = new BasicBlockBuilder(BasicBlockKind.Block); 3716var continueDispatchBlock = new BasicBlockBuilder(BasicBlockKind.Block); 3751var predecessors = ArrayBuilder<BasicBlockBuilder>.GetInstance(); 3778var continueDispatchBlock = new BasicBlockBuilder(BasicBlockKind.Block); 3850BasicBlockBuilder current = CurrentBasicBlock; 3875BasicBlockBuilder labeled = GetLabeledOrNewBlock(operation); 3886private BasicBlockBuilder GetLabeledOrNewBlock(ILabelSymbol? labelOpt) 3893BasicBlockBuilder? labeledBlock; 3897_labeledBlocks = PooledDictionary<ILabelSymbol, BasicBlockBuilder>.GetInstance(); 3948BasicBlockBuilder current = CurrentBasicBlock; 4096var afterTryFinally = new BasicBlockBuilder(BasicBlockKind.Block); 4128var endOfFinally = new BasicBlockBuilder(BasicBlockKind.Block); 4368var afterTryFinally = new BasicBlockBuilder(BasicBlockKind.Block); 4410var endOfFinally = new BasicBlockBuilder(BasicBlockKind.Block); 4514var @continue = GetLabeledOrNewBlock(operation.ContinueLabel); 4515var @break = GetLabeledOrNewBlock(operation.ExitLabel); 4541var afterTryFinally = new BasicBlockBuilder(BasicBlockKind.Block); 4754BasicBlockBuilder @continue = GetLabeledOrNewBlock(operation.ContinueLabel); 4755BasicBlockBuilder? @break = GetLabeledOrNewBlock(operation.ExitLabel); 4756BasicBlockBuilder checkConditionBlock = new BasicBlockBuilder(BasicBlockKind.Block); 4757BasicBlockBuilder bodyBlock = new BasicBlockBuilder(BasicBlockKind.Block); 4949var afterPositiveCheck = new BasicBlockBuilder(BasicBlockKind.Block); 4953var whenNotNull = new BasicBlockBuilder(BasicBlockKind.Block); 5060var notPositive = new BasicBlockBuilder(BasicBlockKind.Block); 5178var whenBothNotNull = new BasicBlockBuilder(BasicBlockKind.Block); 5199var notPositive = new BasicBlockBuilder(BasicBlockKind.Block); 5329BasicBlockBuilder afterIncrement = new BasicBlockBuilder(BasicBlockKind.Block); 5341BasicBlockBuilder whenNotNull = new BasicBlockBuilder(BasicBlockKind.Block); 5484BasicBlockBuilder? defaultBody = null; // Adjusted in handleSection 5485BasicBlockBuilder @break = GetLabeledOrNewBlock(operation.ExitLabel); 5517var body = new BasicBlockBuilder(BasicBlockKind.Block); 5518var nextSection = new BasicBlockBuilder(BasicBlockKind.Block); 5533var nextCase = new BasicBlockBuilder(BasicBlockKind.Block); 5550void handleCase(ICaseClauseOperation caseClause, BasicBlockBuilder body, [DisallowNull] BasicBlockBuilder? nextCase) 5553BasicBlockBuilder labeled = GetLabeledOrNewBlock(caseClause.Label); 5714BasicBlockBuilder current = CurrentBasicBlock; 5759var start = new BasicBlockBuilder(BasicBlockKind.Block); 5764var @break = GetLabeledOrNewBlock(operation.ExitLabel); 5772var @continue = GetLabeledOrNewBlock(operation.ContinueLabel); 5838BasicBlockBuilder? afterInitialization = null; 6831BasicBlockBuilder? resultBlock = null; 7787var afterSwitch = new BasicBlockBuilder(BasicBlockKind.Block); 7794var 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)