Constructing Control Flow Graph for Java by Decoupling Exception Flow from Normal Flow

A control flow graph represents all the flows of control that may arise during program execution. Since exception mechanism in Java induces flows of control, exception induced control flow have to be incorporated in control flow graph. In the previous research to construct control flow graph, they compute exception flow and normal flow at the same time while computing control flow information. In this paper, we propose a method to construct control flow graph by computing separately normal flow and exception flow. We show that normal flow and exception flow can be safely decoupled, hence these two flows can be computed separately. We propose the analysis that estimates exception-induced control flow, and also propose exception flow graph that represents exception induced control flows. We show that a control flow graph can be constructed by merging an exception flow graph onto a normal flow graph.