public void StartTrackingPredicatedData(AnalysisEntity predicatedEntity, AnalysisEntityBasedPredicateAnalysisData <TValue>?truePredicateData, AnalysisEntityBasedPredicateAnalysisData <TValue>?falsePredicateData) { AssertValidAnalysisData(); StartTrackingPredicatedData(predicatedEntity, truePredicateData?.CoreAnalysisData, falsePredicateData?.CoreAnalysisData); AssertValidAnalysisData(); }
public bool Equals(AnalysisEntityBasedPredicateAnalysisData <TValue> other) { AssertValidAnalysisData(); return(base.Equals(other) && EqualsHelper(CoreAnalysisData, other.CoreAnalysisData)); }
protected AnalysisEntityBasedPredicateAnalysisData( AnalysisEntityBasedPredicateAnalysisData <TValue> data1, AnalysisEntityBasedPredicateAnalysisData <TValue> data2, MapAbstractDomain <AnalysisEntity, TValue> coreDataAnalysisDomain) : base(data1, data2, data1.CoreAnalysisData, data2.CoreAnalysisData, data1.IsReachableBlockData, coreDataAnalysisDomain) { Debug.Assert(data1.IsReachableBlockData == data1.IsReachableBlockData); CoreAnalysisData = coreDataAnalysisDomain.Merge(data1.CoreAnalysisData, data2.CoreAnalysisData); }
protected int BaseCompareHelper(AnalysisEntityBasedPredicateAnalysisData <TValue> newData, MapAbstractDomain <AnalysisEntity, TValue> coreDataAnalysisDomain) { var baseCompareResult = base.BaseCompareHelper(newData); if (baseCompareResult != 0) { Debug.Assert(baseCompareResult < 0, "Non-monotonic Merge function"); return(baseCompareResult); } var coreAnalysisDataCompareResult = coreDataAnalysisDomain.Compare(CoreAnalysisData, newData.CoreAnalysisData); Debug.Assert(coreAnalysisDataCompareResult <= 0, "Non-monotonic Merge function"); return(coreAnalysisDataCompareResult); }
public abstract int Compare(AnalysisEntityBasedPredicateAnalysisData <TValue> other, MapAbstractDomain <AnalysisEntity, TValue> coreDataAnalysisDomain);
public abstract AnalysisEntityBasedPredicateAnalysisData <TValue> WithMergedData(AnalysisEntityBasedPredicateAnalysisData <TValue> data, MapAbstractDomain <AnalysisEntity, TValue> coreDataAnalysisDomain);
protected AnalysisEntityBasedPredicateAnalysisData(AnalysisEntityBasedPredicateAnalysisData <TValue> fromData) : base(fromData) { CoreAnalysisData = new DictionaryAnalysisData <AnalysisEntity, TValue>(fromData.CoreAnalysisData); }