/// <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; }
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; }