1 instantiation of BasicBlockAnalysisData
Microsoft.CodeAnalysis.Workspaces (1)
src\Workspaces\SharedUtilitiesAndExtensions\Compiler\Core\FlowAnalysis\SymbolUsageAnalysis\SymbolUsageAnalysis.BasicBlockAnalysisData.cs (1)
22new(() => new BasicBlockAnalysisData());
83 references to BasicBlockAnalysisData
Microsoft.CodeAnalysis.Workspaces (83)
src\Workspaces\SharedUtilitiesAndExtensions\Compiler\Core\FlowAnalysis\SymbolUsageAnalysis\SymbolUsageAnalysis.AnalysisData.cs (17)
27/// Pooled <see cref="BasicBlockAnalysisData"/> allocated during analysis with the 30private readonly ArrayBuilder<BasicBlockAnalysisData> _allocatedBasicBlockAnalysisDatas; 39_allocatedBasicBlockAnalysisDatas = ArrayBuilder<BasicBlockAnalysisData>.GetInstance(); 77public BasicBlockAnalysisData CurrentBlockAnalysisData { get; } 82public BasicBlockAnalysisData AdditionalConditionalBranchAnalysisData { get; } 91public BasicBlockAnalysisData AnalyzeLocalFunctionInvocation(IMethodSymbol localFunction, CancellationToken cancellationToken) 105var result = AnalyzeLocalFunctionInvocationCore(localFunction, cancellationToken); 111public BasicBlockAnalysisData AnalyzeLambdaInvocation(IFlowAnonymousFunctionOperation lambda, CancellationToken cancellationToken) 120var result = AnalyzeLambdaInvocationCore(lambda, cancellationToken); 126protected abstract BasicBlockAnalysisData AnalyzeLocalFunctionInvocationCore(IMethodSymbol localFunction, CancellationToken cancellationToken); 127protected abstract BasicBlockAnalysisData AnalyzeLambdaInvocationCore(IFlowAnonymousFunctionOperation lambda, CancellationToken cancellationToken); 168public BasicBlockAnalysisData CreateBlockAnalysisData() 170var instance = BasicBlockAnalysisData.GetInstance(); 175public void TrackAllocatedBlockAnalysisData(BasicBlockAnalysisData allocatedData) 243public void SetCurrentBlockAnalysisDataFrom(BasicBlockAnalysisData newBlockAnalysisData) 251foreach (var instance in _allocatedBasicBlockAnalysisDatas)
src\Workspaces\SharedUtilitiesAndExtensions\Compiler\Core\FlowAnalysis\SymbolUsageAnalysis\SymbolUsageAnalysis.BasicBlockAnalysisData.cs (10)
21private static readonly ObjectPool<BasicBlockAnalysisData> s_pool = 33public static BasicBlockAnalysisData GetInstance() => s_pool.Allocate(); 51public void SetAnalysisDataFrom(BasicBlockAnalysisData other) 119public bool Equals(BasicBlockAnalysisData other) 175public static BasicBlockAnalysisData Merge( 176BasicBlockAnalysisData data1, 177BasicBlockAnalysisData data2, 178Action<BasicBlockAnalysisData> trackAllocatedData) 203var mergedData = GetInstance(); 223private static void AddEntries(Dictionary<ISymbol, PooledHashSet<IOperation>> result, BasicBlockAnalysisData source)
src\Workspaces\SharedUtilitiesAndExtensions\Compiler\Core\FlowAnalysis\SymbolUsageAnalysis\SymbolUsageAnalysis.cs (1)
44BasicBlockAnalysisData AnalyzeLocalFunction(IMethodSymbol localFunction)
src\Workspaces\SharedUtilitiesAndExtensions\Compiler\Core\FlowAnalysis\SymbolUsageAnalysis\SymbolUsageAnalysis.DataFlowAnalyzer.cs (29)
22private sealed partial class DataFlowAnalyzer : DataFlowAnalyzer<BasicBlockAnalysisData> 36var entryBlockAnalysisData = GetEmptyAnalysisData(); 45_ = CustomDataFlowAnalysis<BasicBlockAnalysisData>.Run(cfg, analyzer, cancellationToken); 52private static BasicBlockAnalysisData AnalyzeLocalFunctionOrLambdaInvocation( 63var resultBlockAnalysisData = CustomDataFlowAnalysis<BasicBlockAnalysisData>.Run(cfg, analyzer, cancellationToken); 73var clonedBasicBlockData = parentAnalysisData.CreateBlockAnalysisData(); 89public override BasicBlockAnalysisData AnalyzeBlock(BasicBlock basicBlock, CancellationToken cancellationToken) 120public override BasicBlockAnalysisData AnalyzeNonConditionalBranch( 122BasicBlockAnalysisData currentBlockAnalysisData, 126public override (BasicBlockAnalysisData fallThroughSuccessorData, BasicBlockAnalysisData conditionalSuccessorData) AnalyzeConditionalBranch( 128BasicBlockAnalysisData currentAnalysisData, 132using var savedCurrentAnalysisData = BasicBlockAnalysisData.GetInstance(); 135var newCurrentAnalysisData = AnalyzeBranch(basicBlock.FallThroughSuccessor, basicBlock, currentAnalysisData, cancellationToken); 139var fallThroughSuccessorData = _analysisData.AdditionalConditionalBranchAnalysisData; 141var conditionalSuccessorData = AnalyzeBranch(basicBlock.ConditionalSuccessor, basicBlock, savedCurrentAnalysisData, cancellationToken); 146private BasicBlockAnalysisData AnalyzeBranch( 149BasicBlockAnalysisData currentBlockAnalysisData, 199public override BasicBlockAnalysisData GetCurrentAnalysisData(BasicBlock basicBlock) 202public override BasicBlockAnalysisData GetEmptyAnalysisData() 205public override void SetCurrentAnalysisData(BasicBlock basicBlock, BasicBlockAnalysisData data, CancellationToken cancellationToken) 208public override bool IsEqual(BasicBlockAnalysisData analysisData1, BasicBlockAnalysisData analysisData2) 211public override BasicBlockAnalysisData Merge( 212BasicBlockAnalysisData analysisData1, 213BasicBlockAnalysisData analysisData2, 215=> BasicBlockAnalysisData.Merge(analysisData1, analysisData2, _analysisData.TrackAllocatedBlockAnalysisData);
src\Workspaces\SharedUtilitiesAndExtensions\Compiler\Core\FlowAnalysis\SymbolUsageAnalysis\SymbolUsageAnalysis.DataFlowAnalyzer.FlowGraphAnalysisData.cs (16)
22private sealed partial class DataFlowAnalyzer : DataFlowAnalyzer<BasicBlockAnalysisData> 29/// Map from basic block to current <see cref="BasicBlockAnalysisData"/> for dataflow analysis. 31private readonly PooledDictionary<BasicBlock, BasicBlockAnalysisData> _analysisDataByBasicBlockMap; 36private readonly Func<IMethodSymbol, ControlFlowGraph, AnalysisData, CancellationToken, BasicBlockAnalysisData> _analyzeLocalFunctionOrLambdaInvocation; 76PooledDictionary<BasicBlock, BasicBlockAnalysisData> analysisDataByBasicBlockMap, 80Func<IMethodSymbol, ControlFlowGraph, AnalysisData, CancellationToken, BasicBlockAnalysisData> analyzeLocalFunctionOrLambdaInvocation, 119Func<IMethodSymbol, ControlFlowGraph, AnalysisData, CancellationToken, BasicBlockAnalysisData> analyzeLocalFunctionOrLambdaInvocation) 164private static PooledDictionary<BasicBlock, BasicBlockAnalysisData> CreateAnalysisDataByBasicBlockMap( 167var builder = PooledDictionary<BasicBlock, BasicBlockAnalysisData>.GetInstance(); 201public BasicBlockAnalysisData GetBlockAnalysisData(BasicBlock basicBlock) 204public BasicBlockAnalysisData GetOrCreateBlockAnalysisData(BasicBlock basicBlock, CancellationToken cancellationToken) 398var mergedAnalysisData = _analysisDataByBasicBlockMap[basicBlock]; 424public void SetBlockAnalysisData(BasicBlock basicBlock, BasicBlockAnalysisData data) 427public void SetBlockAnalysisDataFrom(BasicBlock basicBlock, BasicBlockAnalysisData data, CancellationToken cancellationToken) 485protected override BasicBlockAnalysisData AnalyzeLocalFunctionInvocationCore(IMethodSymbol localFunction, CancellationToken cancellationToken) 500protected override BasicBlockAnalysisData AnalyzeLambdaInvocationCore(IFlowAnonymousFunctionOperation lambda, CancellationToken cancellationToken)
src\Workspaces\SharedUtilitiesAndExtensions\Compiler\Core\FlowAnalysis\SymbolUsageAnalysis\SymbolUsageAnalysis.OperationTreeAnalysisData.cs (5)
18private readonly Func<IMethodSymbol, BasicBlockAnalysisData> _analyzeLocalFunction; 24Func<IMethodSymbol, BasicBlockAnalysisData> analyzeLocalFunction) 40Func<IMethodSymbol, BasicBlockAnalysisData> analyzeLocalFunction) 49protected override BasicBlockAnalysisData AnalyzeLocalFunctionInvocationCore(IMethodSymbol localFunction, CancellationToken cancellationToken) 56protected override BasicBlockAnalysisData AnalyzeLambdaInvocationCore(IFlowAnonymousFunctionOperation lambda, CancellationToken cancellationToken)
src\Workspaces\SharedUtilitiesAndExtensions\Compiler\Core\FlowAnalysis\SymbolUsageAnalysis\SymbolUsageAnalysis.Walker.cs (5)
348var newAnalysisData = _currentAnalysisData.AnalyzeLocalFunctionInvocation(localFunction, _cancellationToken); 354var newAnalysisData = _currentAnalysisData.AnalyzeLambdaInvocation(lambda, _cancellationToken); 530var savedCurrentAnalysisData = _currentAnalysisData.CreateBlockAnalysisData(); 533var mergedAnalysisData = _currentAnalysisData.CreateBlockAnalysisData(); 538mergedAnalysisData = BasicBlockAnalysisData.Merge(mergedAnalysisData,