예제 #1
0
        public void StartTrackingPredicatedData(AnalysisEntity predicatedEntity, AnalysisEntityBasedPredicateAnalysisData <TValue>?truePredicateData, AnalysisEntityBasedPredicateAnalysisData <TValue>?falsePredicateData)
        {
            AssertValidAnalysisData();

            StartTrackingPredicatedData(predicatedEntity, truePredicateData?.CoreAnalysisData, falsePredicateData?.CoreAnalysisData);
            AssertValidAnalysisData();
        }
예제 #2
0
        public bool Equals(AnalysisEntityBasedPredicateAnalysisData <TValue> other)
        {
            AssertValidAnalysisData();

            return(base.Equals(other) &&
                   EqualsHelper(CoreAnalysisData, other.CoreAnalysisData));
        }
예제 #3
0
        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);
        }
예제 #4
0
        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);
        }
예제 #5
0
 public abstract int Compare(AnalysisEntityBasedPredicateAnalysisData <TValue> other, MapAbstractDomain <AnalysisEntity, TValue> coreDataAnalysisDomain);
예제 #6
0
 public abstract AnalysisEntityBasedPredicateAnalysisData <TValue> WithMergedData(AnalysisEntityBasedPredicateAnalysisData <TValue> data, MapAbstractDomain <AnalysisEntity, TValue> coreDataAnalysisDomain);
예제 #7
0
 protected AnalysisEntityBasedPredicateAnalysisData(AnalysisEntityBasedPredicateAnalysisData <TValue> fromData)
     : base(fromData)
 {
     CoreAnalysisData = new DictionaryAnalysisData <AnalysisEntity, TValue>(fromData.CoreAnalysisData);
 }