For IntelliJ IDEA,

Android Studio or Eclipse

/** * See Appel section 19.1: * * Converts CFG into "edge-split" form, such that each node either a * unique successor or unique predecessor.<p> * * In addition, the SSA form we use enforces a further constraint, * requiring each block with a final instruction that returns a * value to have a primary successor that has no other * predecessor. This ensures move statements can always be * inserted correctly when phi statements are removed. * * @param result method to process */ private static void edgeSplit(SsaMethod result) { edgeSplitPredecessors(result); edgeSplitMoveExceptionsAndResults(result); edgeSplitSuccessors(result); }

/** * See Appel section 19.1: * * Converts CFG into "edge-split" form, such that each node either a * unique successor or unique predecessor.<p> * * In addition, the SSA form we use enforces a further constraint, * requiring each block with a final instruction that returns a * value to have a primary successor that has no other * predecessor. This ensures move statements can always be * inserted correctly when phi statements are removed. * * @param result method to process */ private static void edgeSplit(SsaMethod result) { edgeSplitPredecessors(result); edgeSplitMoveExceptionsAndResults(result); edgeSplitSuccessors(result); }

/** * See Appel section 19.1: * * Converts CFG into "edge-split" form, such that each node either a * unique successor or unique predecessor.<p> * * In addition, the SSA form we use enforces a further constraint, * requiring each block with a final instruction that returns a * value to have a primary successor that has no other * predecessor. This ensures move statements can always be * inserted correctly when phi statements are removed. * * @param result method to process */ private static void edgeSplit(SsaMethod result) { edgeSplitPredecessors(result); edgeSplitMoveExceptionsAndResults(result); edgeSplitSuccessors(result); }