■ ■ ■ ■ ■ ■
jadx-core/src/main/java/jadx/core/dex/visitors/blocksmaker/BlockFinallyExtract.java
| skipped 33 lines |
34 | 34 | | import org.slf4j.LoggerFactory; |
35 | 35 | | |
36 | 36 | | import static jadx.core.dex.visitors.blocksmaker.BlockSplitter.connect; |
| 37 | + | import static jadx.core.dex.visitors.blocksmaker.BlockSplitter.insertBlockBetween; |
37 | 38 | | import static jadx.core.dex.visitors.blocksmaker.BlockSplitter.removeConnection; |
38 | 39 | | |
39 | 40 | | public class BlockFinallyExtract extends AbstractVisitor { |
| skipped 471 lines |
511 | 512 | | |
512 | 513 | | // redirect input edges |
513 | 514 | | for (BlockNode pred : new ArrayList<BlockNode>(remBlock.getPredecessors())) { |
514 | | - | removeConnection(pred, remBlock); |
515 | | - | connect(pred, startBlock); |
516 | | - | addIgnoredEdge(pred, startBlock); |
517 | | - | connect(pred, rOut); |
| 515 | + | BlockNode middle = insertBlockBetween(mth, pred, remBlock); |
| 516 | + | removeConnection(middle, remBlock); |
| 517 | + | connect(middle, startBlock); |
| 518 | + | addIgnoredEdge(middle, startBlock); |
| 519 | + | connect(middle, rOut); |
518 | 520 | | } |
519 | 521 | | |
520 | 522 | | // mark blocks for remove |
| skipped 149 lines |