/// <summary>
        /// The entry point of the class. At the end of this method all integer values should have refined types.
        /// </summary>
        internal void InferIntegerTypes(HashSet <VariableReference> resolved)
        {
            IntegerTypesHierarchyBuilder ithBuilder = new IntegerTypesHierarchyBuilder(offsetToExpression, context);

            inferenceGraph = ithBuilder.BuildHierarchy(resolved);
            try
            {
                ///Perform the steps described in <see cref="Chapter 6 Integer inference"/>
                ///in <see cref="Efficient Inference of Static Types for Java Bytecode.pdf"/>.
                MergeConnectedComponents();
                ReplaceMultipleParentDependencies();
                ReplaceMultipleChildConstraints();
                MergeWithSingleParent();
                MergeWithSingleChild();
            }
            catch (InvalidCastException ex)
            {
                if (ex.Message != "Cannot infer types.")
                {
                    throw;
                }
            }

            return;
        }
예제 #2
0
 internal void InferIntegerTypes(HashSet <VariableReference> resolved)
 {
     V_0 = new IntegerTypesHierarchyBuilder(this.offsetToExpression, this.context);
     this.inferenceGraph = V_0.BuildHierarchy(resolved);
     try
     {
         this.MergeConnectedComponents();
         this.ReplaceMultipleParentDependencies();
         this.ReplaceMultipleChildConstraints();
         this.MergeWithSingleParent();
         this.MergeWithSingleChild();
     }
     catch (InvalidCastException exception_0)
     {
         if (String.op_Inequality(exception_0.get_Message(), "Cannot infer types."))
         {
             throw;
         }
     }
     return;
 }
        /// <summary>
        /// The entry point of the class. At the end of this method all integer values should have refined types.
        /// </summary>
		internal void InferIntegerTypes(HashSet<VariableReference> resolved)
        {
            IntegerTypesHierarchyBuilder ithBuilder = new IntegerTypesHierarchyBuilder(offsetToExpression, context);
            inferenceGraph = ithBuilder.BuildHierarchy(resolved);
            try
            {
                ///Perform the steps described in <see cref="Chapter 6 Integer inference"/> 
                ///in <see cref="Efficient Inference of Static Types for Java Bytecode.pdf"/>.
                MergeConnectedComponents();
                ReplaceMultipleParentDependencies();
                ReplaceMultipleChildConstraints();
                MergeWithSingleParent();
                MergeWithSingleChild();
            }
            catch (InvalidCastException ex)
            {
                if (ex.Message != "Cannot infer types.")
                {
                    throw;
                }
            }

            return;
        }