public PointsToDataFlowOperationVisitor( DefaultPointsToValueGenerator defaultPointsToValueGenerator, PointsToAnalysisDomain pointsToAnalysisDomain, PointsToAbstractValueDomain valueDomain, ISymbol owningSymbol, WellKnownTypeProvider wellKnownTypeProvider, bool pessimisticAnalysis, DataFlowAnalysisResult <NullAnalysis.NullBlockAnalysisResult, NullAnalysis.NullAbstractValue> nullAnalysisResultOpt) : base(valueDomain, owningSymbol, wellKnownTypeProvider, pessimisticAnalysis, predicateAnalysis: false, nullAnalysisResultOpt: nullAnalysisResultOpt, copyAnalysisResultOpt: null, pointsToAnalysisResultOpt: null) { _defaultPointsToValueGenerator = defaultPointsToValueGenerator; _pointsToAnalysisDomain = pointsToAnalysisDomain; }
public static DataFlowAnalysisResult <PointsToBlockAnalysisResult, PointsToAbstractValue> GetOrComputeResult( ControlFlowGraph cfg, ISymbol owningSymbol, WellKnownTypeProvider wellKnownTypeProvider, DataFlowAnalysisResult <NullAnalysis.NullBlockAnalysisResult, NullAnalysis.NullAbstractValue> nullAnalysisResultOpt = null, bool pessimisticAnalysis = true) { var defaultPointsToValueGenerator = new DefaultPointsToValueGenerator(); var analysisDomain = new PointsToAnalysisDomain(defaultPointsToValueGenerator, PointsToAbstractValueDomainInstance); var operationVisitor = new PointsToDataFlowOperationVisitor(analysisDomain.DefaultPointsToValueGenerator, analysisDomain, PointsToAbstractValueDomain.Default, owningSymbol, wellKnownTypeProvider, pessimisticAnalysis, nullAnalysisResultOpt); var pointsToAnalysis = new PointsToAnalysis(analysisDomain, operationVisitor); return(pointsToAnalysis.GetOrComputeResultCore(cfg, cacheResult: true)); }
public PointsToAnalysisDomain(DefaultPointsToValueGenerator defaultPointsToValueGenerator, AbstractValueDomain <PointsToAbstractValue> valueDomain) : base(valueDomain) { DefaultPointsToValueGenerator = defaultPointsToValueGenerator; }