Uses of Class
jadx.core.dex.nodes.BlockNode
Packages that use BlockNode
Package
Description
-
Uses of BlockNode in jadx.core.codegen
Methods in jadx.core.codegen that return types with arguments of type BlockNodeModifier and TypeMethodDescriptionSimpleModeHelper.getSortedBlocks()SimpleModeHelper.prepareBlocks()Methods in jadx.core.codegen with parameters of type BlockNodeModifier and TypeMethodDescriptionstatic StringMethodGen.getLabelName(BlockNode block) booleanSimpleModeHelper.isNeedEndGoto(BlockNode block) booleanSimpleModeHelper.isNeedStartLabel(BlockNode block) private voidSimpleModeHelper.processTargetInsn(BlockNode block, InsnNode lastInsn, @Nullable BlockNode next) -
Uses of BlockNode in jadx.core.dex.attributes.nodes
Fields in jadx.core.dex.attributes.nodes declared as BlockNodeModifier and TypeFieldDescriptionprivate final BlockNodeTmpEdgeAttr.blockprivate final BlockNodeEdgeInsnAttr.endprivate final BlockNodeLoopInfo.endprivate final BlockNodeSpecialEdgeAttr.endprivate final BlockNodeExcSplitCrossAttr.originalPathCrossprivate final BlockNodeEdgeInsnAttr.startprivate final BlockNodeLoopInfo.startprivate final BlockNodeSpecialEdgeAttr.startFields in jadx.core.dex.attributes.nodes with type parameters of type BlockNodeMethods in jadx.core.dex.attributes.nodes that return BlockNodeModifier and TypeMethodDescriptionTmpEdgeAttr.getBlock()EdgeInsnAttr.getEnd()LoopInfo.getEnd()SpecialEdgeAttr.getEnd()ExcSplitCrossAttr.getOriginalPathCross()LoopInfo.getPreHeader()EdgeInsnAttr.getStart()LoopInfo.getStart()SpecialEdgeAttr.getStart()Methods in jadx.core.dex.attributes.nodes that return types with arguments of type BlockNodeModifier and TypeMethodDescriptionLoopInfo.getExitNodes()Return source blocks of exit edges.LoopInfo.getLoopBlocks()Methods in jadx.core.dex.attributes.nodes with parameters of type BlockNodeModifier and TypeMethodDescriptionstatic voidEdgeInsnAttr.addEdgeInsn(BlockNode start, BlockNode end, InsnNode insn) Constructors in jadx.core.dex.attributes.nodes with parameters of type BlockNodeModifierConstructorDescriptionprivateEdgeInsnAttr(BlockNode start, BlockNode end, InsnNode insn) ExcSplitCrossAttr(BlockNode originalPathCross) SpecialEdgeAttr(SpecialEdgeAttr.SpecialEdgeType type, BlockNode start, BlockNode end) TmpEdgeAttr(BlockNode block) Constructor parameters in jadx.core.dex.attributes.nodes with type arguments of type BlockNode -
Uses of BlockNode in jadx.core.dex.instructions
Fields in jadx.core.dex.instructions declared as BlockNodeModifier and TypeFieldDescriptionprivate BlockNodeSwitchInsn.defTargetBlockprivate BlockNodeIfNode.elseBlockprivate BlockNode[]SwitchInsn.targetBlocksprivate BlockNodeIfNode.thenBlockFields in jadx.core.dex.instructions with type parameters of type BlockNodeMethods in jadx.core.dex.instructions that return BlockNodeModifier and TypeMethodDescription@Nullable BlockNodePhiInsn.getBlockByArg(RegisterArg arg) PhiInsn.getBlockByArgIndex(int argIndex) SwitchInsn.getDefTargetBlock()IfNode.getElseBlock()SwitchInsn.getTargetBlocks()IfNode.getThenBlock()Methods in jadx.core.dex.instructions with parameters of type BlockNodeModifier and TypeMethodDescriptionvoidPhiInsn.bindArg(RegisterArg arg, BlockNode pred) @Nullable RegisterArgPhiInsn.getArgByBlock(BlockNode block) voidIfNode.initBlocks(BlockNode curBlock) voidSwitchInsn.initBlocks(BlockNode curBlock) voidTargetInsnNode.initBlocks(BlockNode curBlock) booleanIfNode.replaceTargetBlock(BlockNode origin, BlockNode replace) booleanSwitchInsn.replaceTargetBlock(BlockNode origin, BlockNode replace) booleanTargetInsnNode.replaceTargetBlock(BlockNode origin, BlockNode replace) -
Uses of BlockNode in jadx.core.dex.nodes
Fields in jadx.core.dex.nodes declared as BlockNodeModifier and TypeFieldDescriptionprivate BlockNodeMethodNode.enterBlockprivate BlockNodeMethodNode.exitBlockprivate BlockNodeBlockNode.idomImmediate dominatorprivate BlockNodeBlockNode.iPostDomImmediate post dominatorprivate final BlockNodeEdge.sourceprivate final BlockNodeEdge.targetFields in jadx.core.dex.nodes with type parameters of type BlockNodeModifier and TypeFieldDescriptionMethodNode.blocksBlockNode.cleanSuccessorsBlockNode.dominatesOnBlocks on which dominates this blockBlockNode.predecessorsBlockNode.successorsMethods in jadx.core.dex.nodes that return BlockNodeModifier and TypeMethodDescriptionMethodNode.getEnterBlock()MethodNode.getExitBlock()BlockNode.getIDom()Immediate dominatorBlockNode.getIPostDom()Edge.getSource()Edge.getTarget()Methods in jadx.core.dex.nodes that return types with arguments of type BlockNodeModifier and TypeMethodDescriptionBlockNode.cleanSuccessors(BlockNode block) Return all successor which are not exception handler or followed by loop back edgeMethodNode.getBasicBlocks()BlockNode.getCleanSuccessors()IConditionRegion.getConditionBlocks()Blocks merged into condition Needed for backtracking TODO: merge into condition object ???BlockNode.getDominatesOn()BlockNode.getPredecessors()MethodNode.getPreExitBlocks()BlockNode.getSuccessors()Methods in jadx.core.dex.nodes with parameters of type BlockNodeModifier and TypeMethodDescriptionvoidBlockNode.addDominatesOn(BlockNode block) BlockNode.cleanSuccessors(BlockNode block) Return all successor which are not exception handler or followed by loop back edgeintMethodNode.getAllLoopsForBlock(BlockNode block) @Nullable LoopInfoMethodNode.getLoopForBlock(BlockNode block) booleanBlockNode.isDominator(BlockNode block) Check if 'block' dominated on this nodebooleanMethodNode.isPreExitBlock(BlockNode block) voidMethodNode.setEnterBlock(BlockNode enterBlock) voidMethodNode.setExitBlock(BlockNode exitBlock) voidvoidBlockNode.setIPostDom(BlockNode iPostDom) Method parameters in jadx.core.dex.nodes with type arguments of type BlockNodeModifier and TypeMethodDescriptionvoidMethodNode.setBasicBlocks(List<BlockNode> blocks) static voidBlockNode.updateBlockPositions(List<BlockNode> blocks) Constructors in jadx.core.dex.nodes with parameters of type BlockNode -
Uses of BlockNode in jadx.core.dex.regions
Fields in jadx.core.dex.regions declared as BlockNodeMethods in jadx.core.dex.regions that return BlockNodeConstructors in jadx.core.dex.regions with parameters of type BlockNode -
Uses of BlockNode in jadx.core.dex.regions.conditions
Fields in jadx.core.dex.regions.conditions declared as BlockNodeModifier and TypeFieldDescriptionprivate final BlockNodeIfInfo.elseBlockprivate @Nullable BlockNodeIfInfo.outBlockprivate final BlockNodeIfInfo.thenBlockFields in jadx.core.dex.regions.conditions with type parameters of type BlockNodeMethods in jadx.core.dex.regions.conditions that return BlockNodeModifier and TypeMethodDescriptionIfInfo.getElseBlock()IfInfo.getFirstIfBlock()Deprecated.@Nullable BlockNodeIfInfo.getOutBlock()IfInfo.getThenBlock()Methods in jadx.core.dex.regions.conditions that return types with arguments of type BlockNodeMethods in jadx.core.dex.regions.conditions with parameters of type BlockNodeModifier and TypeMethodDescriptionstatic IfConditionIfCondition.fromIfBlock(BlockNode header) voidIfInfo.setOutBlock(@Nullable BlockNode outBlock) voidConditionRegion.updateCondition(BlockNode block) Method parameters in jadx.core.dex.regions.conditions with type arguments of type BlockNodeModifier and TypeMethodDescriptionvoidConditionRegion.updateCondition(IfCondition condition, List<BlockNode> conditionBlocks) Constructors in jadx.core.dex.regions.conditions with parameters of type BlockNodeModifierConstructorDescriptionIfInfo(MethodNode mth, IfCondition condition, BlockNode thenBlock, BlockNode elseBlock) privateIfInfo(MethodNode mth, IfCondition condition, BlockNode thenBlock, BlockNode elseBlock, BlockSet mergedBlocks, Set<BlockNode> skipBlocks, List<InsnNode> forceInlineInsns) Constructor parameters in jadx.core.dex.regions.conditions with type arguments of type BlockNodeModifierConstructorDescriptionprivateIfInfo(MethodNode mth, IfCondition condition, BlockNode thenBlock, BlockNode elseBlock, BlockSet mergedBlocks, Set<BlockNode> skipBlocks, List<InsnNode> forceInlineInsns) -
Uses of BlockNode in jadx.core.dex.regions.loops
Fields in jadx.core.dex.regions.loops declared as BlockNodeModifier and TypeFieldDescriptionprivate final @Nullable BlockNodeLoopRegion.headerprivate @Nullable BlockNodeLoopRegion.preConditionMethods in jadx.core.dex.regions.loops that return BlockNodeMethods in jadx.core.dex.regions.loops with parameters of type BlockNodeModifier and TypeMethodDescriptionvoidLoopRegion.setPreCondition(BlockNode preCondition) Set instructions which must be executed before condition in every loopConstructors in jadx.core.dex.regions.loops with parameters of type BlockNodeModifierConstructorDescriptionLoopRegion(IRegion parent, LoopInfo info, @Nullable BlockNode header, boolean reversed) -
Uses of BlockNode in jadx.core.dex.trycatch
Fields in jadx.core.dex.trycatch declared as BlockNodeModifier and TypeFieldDescriptionprivate final BlockNodeTryEdgeScopeGroupMap.TryEdgeScope.blockprivate BlockNodeExceptionHandler.handlerBlockprivate final BlockNodeTryEdge.sourceprivate final BlockNodeTryEdge.targetprivate BlockNodeTryCatchBlockAttr.topSplitterFields in jadx.core.dex.trycatch with type parameters of type BlockNodeModifier and TypeFieldDescriptionExceptionHandler.blocksTryCatchBlockAttr.blocksTryEdgeScopeGroupMap.underlyingMapMethods in jadx.core.dex.trycatch that return BlockNodeModifier and TypeMethodDescription@Nullable BlockNodeExceptionHandler.getBottomSplitter()ExceptionHandler.getHandlerBlock()TryEdge.getSource()TryEdge.getTarget()TryCatchBlockAttr.getTopSplitter()Methods in jadx.core.dex.trycatch that return types with arguments of type BlockNodeModifier and TypeMethodDescriptionTryEdgeScopeGroupMap.createEdgeTerminusMap(Map<TryEdge, BlockNode> edgeStartMap, TryEdge edge, BlockNode edgeStart) TryEdgeScopeGroupMap.entrySet()ExceptionHandler.getBlocks()TryCatchBlockAttr.getBlocks()TryCatchBlockAttr.getEdgeBlockMap()TryCatchBlockAttr.getHandlerFallthroughGroups(MethodNode mth, TryEdgeScopeGroupMap scopeGroups) TryEdgeScopeGroupMap.getScopeEnds(MethodNode mth) Returns a map of all points where edges meet with each other, dictating the end of that edge's scope.TryCatchBlockAttr.getSearchBlocksFromFallthroughGroups(MethodNode mth, ExceptionHandler finallyHandler, Map<BlockNode, List<TryEdge>> fallthroughGroups) TryEdgeScopeGroupMap.mergeSameScopes(Map<TryEdge, BlockNode> handlers) If two scopes ever merge, as in if one edge leads to the same execution point as the target of another edge, this function will record it.TryEdgeScopeGroupMap.values()Methods in jadx.core.dex.trycatch with parameters of type BlockNodeModifier and TypeMethodDescriptionvoidTryEdgeScopeGroupMap.createEdgeTerminusMap(Map<TryEdge, BlockNode> edgeStartMap, TryEdge edge, BlockNode edgeStart) private voidTryCatchBlockAttr.exploreTryPath(List<TryEdge> edges, BlockNode blk, Set<BlockNode> searchBlocks, List<BlockNode> exploredBlocks, List<TryCatchBlockAttr> exploredTrys) voidTryCatchBlockAttr.removeBlock(BlockNode block) voidExceptionHandler.setHandlerBlock(BlockNode handlerBlock) voidTryCatchBlockAttr.setTopSplitter(BlockNode topSplitter) Method parameters in jadx.core.dex.trycatch with type arguments of type BlockNodeModifier and TypeMethodDescriptionTryEdgeScopeGroupMap.createEdgeTerminusMap(Map<TryEdge, BlockNode> edgeStartMap, TryEdge edge, BlockNode edgeStart) private voidTryCatchBlockAttr.exploreTryPath(List<TryEdge> edges, BlockNode blk, Set<BlockNode> searchBlocks, List<BlockNode> exploredBlocks, List<TryCatchBlockAttr> exploredTrys) TryCatchBlockAttr.getSearchBlocksFromFallthroughGroups(MethodNode mth, ExceptionHandler finallyHandler, Map<BlockNode, List<TryEdge>> fallthroughGroups) TryEdgeScopeGroupMap.mergeSameScopes(Map<TryEdge, BlockNode> handlers) If two scopes ever merge, as in if one edge leads to the same execution point as the target of another edge, this function will record it.voidTryEdgeScopeGroupMap.populateFromEdges(Map<TryEdge, BlockNode> edges) voidvoidConstructors in jadx.core.dex.trycatch with parameters of type BlockNodeModifierConstructorDescriptionTryEdge(BlockNode source, BlockNode target, @NotNull ExceptionHandler handler) TryEdge(BlockNode source, BlockNode target, TryEdgeType type) TryEdge(BlockNode source, BlockNode target, TryEdgeType type, Optional<ExceptionHandler> handler) TryEdgeScope(TryEdge edge, BlockNode block) -
Uses of BlockNode in jadx.core.dex.visitors
Fields in jadx.core.dex.visitors with type parameters of type BlockNodeMethods in jadx.core.dex.visitors with parameters of type BlockNodeModifier and TypeMethodDescriptionprivate voidPrepareForCodeGen.addNullCasts(MethodNode mth, BlockNode block) private booleanAdjustForIfMergeVisitor.areSurroundingsCorrectShape(BlockNode blk) private static voidPrepareForCodeGen.checkConstUsage(BlockNode block) Add explicit type for non int constantsprivate static voidPrepareForCodeGen.checkInline(BlockNode block) private booleanAdjustForIfMergeVisitor.couldMerge(MethodNode mth, BlockNode pred, BlockNode blk, BlockNode succ) private voidAdjustForIfMergeVisitor.doMove(MethodNode mth, BlockNode target, BlockNode bottomIf, List<InsnNode> movableInstructions) private static voidModVisitor.fixPrimitiveCast(MethodNode mth, BlockNode block, int i, InsnNode insn) AdjustForIfMergeVisitor.getMovableInstructions(BlockNode blk, BlockNode succ) private static voidModVisitor.inlineCMPInsns(MethodNode mth, BlockNode block, int i, InsnNode insn, InsnRemover remover) Inline CMP instructions into 'if' to help conditions mergingprivate voidInlineMethods.inlineMethod(MethodNode mth, MethodNode callMth, MethodInlineAttr mia, BlockNode block, InvokeNode insn) private static RegisterArgConstructorVisitor.insertPhiInsn(MethodNode mth, BlockNode curBlock, RegisterArg instArg, ConstructorInsn otherCtr) private booleanAdjustForIfMergeVisitor.isSimpleIf(BlockNode blk) private static voidPrepareForCodeGen.modifyArith(BlockNode block) Replace arithmetic operation with short form ('a = a + 2' => 'a += 2')private static booleanConstructorVisitor.processInvoke(MethodNode mth, BlockNode block, int indexInBlock, InsnRemover remover) private voidInlineMethods.processInvokeInsn(MethodNode mth, BlockNode block, InvokeNode insn) private static voidModVisitor.processMoveException(MethodNode mth, BlockNode block, InsnNode insn, InsnRemover remover) private static voidModVisitor.removeCheckCast(MethodNode mth, BlockNode block, int i, IndexInsnNode insn) private static voidPrepareForCodeGen.removeInstructions(BlockNode block) private static voidPrepareForCodeGen.removeParenthesis(BlockNode block) private static voidModVisitor.replaceConst(MethodNode mth, ClassNode parentClass, BlockNode block, int i, InsnNode insn) private booleanSimplifyVisitor.simplifyBlock(MethodNode mth, BlockNode block) Constructor parameters in jadx.core.dex.visitors with type arguments of type BlockNodeModifierConstructorDescriptionEnumData(ClassNode cls, MethodNode classInitMth, List<BlockNode> staticBlocks) -
Uses of BlockNode in jadx.core.dex.visitors.blocks
Methods in jadx.core.dex.visitors.blocks that return BlockNodeModifier and TypeMethodDescriptionprivate static BlockNodeBlockExceptionHandler.adjustTopBlock(BlockNode topBlock) (package private) static BlockNodeBlockSplitter.blockSplitTop(MethodNode mth, BlockNode block) (package private) static BlockNode[](package private) static BlockNodeBlockSplitter.connectNewBlock(MethodNode mth, BlockNode block, int offset) private static BlockNodeprivate static BlockNodeBlockSplitter.getNewBlock(BlockNode block, Map<BlockNode, BlockNode> map) private static BlockNodeBlockExceptionHandler.getTopSplitterBlock(MethodNode mth, BlockNode top) static BlockNodeBlockSplitter.insertBlockBetween(MethodNode mth, BlockNode source, BlockNode target) private static BlockNodeprivate static @Nullable BlockNodeBlockExceptionHandler.searchBottomBlock(MethodNode mth, List<BlockNode> blocks) private static BlockNodeBlockExceptionHandler.searchTopBlock(MethodNode mth, List<BlockNode> blocks) (package private) static BlockNodeBlockSplitter.startNewBlock(MethodNode mth, int offset) Methods in jadx.core.dex.visitors.blocks that return types with arguments of type BlockNodeModifier and TypeMethodDescriptionBlockSplitter.copyBlocksTree(MethodNode mth, List<BlockNode> blocks) BlockExceptionHandler.isHandlersIntersects(TryCatchBlockAttr outerTryBlock) DominatorTree.sortBlocks(MethodNode mth) BlockSplitter.splitBasicBlocks(MethodNode mth) Methods in jadx.core.dex.visitors.blocks with parameters of type BlockNodeModifier and TypeMethodDescriptionprivate static voidprivate static BlockNodeBlockExceptionHandler.adjustTopBlock(BlockNode topBlock) private static void(package private) static BlockNodeBlockSplitter.blockSplitTop(MethodNode mth, BlockNode block) private static booleanBlockSplitter.canRemoveBlock(BlockNode block) private static booleanBlockProcessor.checkLoops(MethodNode mth, BlockNode block) (package private) static BitSetDominatorTree.collectDoms(BlockNode[] doms, BlockNode idom) (package private) static voidBlockSplitter.collectSuccessors(BlockNode startBlock, BlockNode methodEnterBlock, Set<BlockNode> toRemove) private static voidFixMultiEntryLoops.colorDFS(MethodNode mth, FixMultiEntryLoops.BlockColor[] colors, BlockNode block) private static voidBlockProcessor.computeUnreachableFromBlock(Set<BlockNode> toRemove, BlockNode block, MethodNode mth) static void(package private) static BlockNodeBlockSplitter.connectNewBlock(MethodNode mth, BlockNode block, int offset) private static voidBlockExceptionHandler.connectSplittersAndHandlers(TryCatchBlockAttr tryCatchBlock, BlockNode topSplitterBlock, @Nullable BlockNode bottomSplitterBlock) (package private) static voidBlockSplitter.copyBlockData(BlockNode from, BlockNode to) private static booleanBlockProcessor.deduplicateBlockInsns(MethodNode mth, BlockNode block) (package private) static voidBlockSplitter.detachBlock(BlockNode block) private static booleanBlockProcessor.duplicateSimpleMoveBlock(MethodNode mth, BlockNode block) Duplicate block if it contains only one 'move' insn and all predecessors are 'switch' and 'if'.private static voidFixMultiEntryLoops.dupPath(MethodNode mth, BlockNode start, BlockNode center, BlockNode end) Duplicate 'center' block on path from 'start' to 'end'private static voidBlockExceptionHandler.fixMoveExceptionInsn(BlockNode block, ExcHandlerAttr excHandlerAttr) private static booleanBlockProcessor.fixUnreachableSplitCross(MethodNode mth, BlockNode splitCross) Attempts to remove an unreachable synthetic split cross block that has been added previously, along with the associated bottom splitter.private static @Nullable CatchAttrBlockExceptionHandler.getCommonCatchAttr(BlockNode block) private static InsnNodeBlockProcessor.getInsnsFromEnd(BlockNode block, int number) BlockProcessor.getLastInsns(BlockNode blockNode, int sameInsnCount) private static BlockNodeBlockSplitter.getNewBlock(BlockNode block, Map<BlockNode, BlockNode> map) private static BlockNodeBlockExceptionHandler.getTopSplitterBlock(MethodNode mth, BlockNode top) private static voidBlockProcessor.insertAtStart(BlockNode block, List<InsnNode> insns) static BlockNodeBlockSplitter.insertBlockBetween(MethodNode mth, BlockNode source, BlockNode target) private static BlockNodeprivate static booleanprivate static voidBlockProcessor.mergeConstAndReturnBlocks(MethodNode mth, BlockNode retBlock, BlockNode pred) private static voidResolveJavaJSR.processBlocks(MethodNode mth, BlockNode retBlock, BlockNode startBlock, List<BlockNode> jsrBlocks, List<BlockNode> dupBlocks) static voidBlockSplitter.removeConnection(BlockNode from, BlockNode to) (package private) static booleanBlockSplitter.removeEmptyBlock(BlockNode block) private static voidResolveJavaJSR.removeInsns(BlockNode retBlock, BlockNode startBlock, List<BlockNode> jsrBlocks) static voidBlockSplitter.removePredecessors(BlockNode block) private static voidBlockExceptionHandler.removeTmpConnection(BlockNode block) static voidBlockProcessor.removeUnreachableBlock(BlockNode blockToRemove, MethodNode mth) static voidBlockSplitter.replaceConnection(BlockNode source, BlockNode oldDest, BlockNode newDest) (package private) static voidBlockSplitter.replaceTarget(BlockNode source, BlockNode oldTarget, BlockNode newTarget) private static voidResolveJavaJSR.resolveForRetBlock(MethodNode mth, BlockNode retBlock) private static booleanBlockProcessor.splitLoops(MethodNode mth, BlockNode block, List<LoopInfo> loops) private static booleanBlockProcessor.splitReturn(MethodNode mth, BlockNode returnBlock) Splice return block if several predecessors presentsprivate static booleanBlockProcessor.splitThrow(MethodNode mth, BlockNode exitBlock) Method parameters in jadx.core.dex.visitors.blocks with type arguments of type BlockNodeModifier and TypeMethodDescriptionprivate static voidBlockSplitter.addTempConnectionsForExcHandlers(MethodNode mth, Map<Integer, BlockNode> blocksMap) Connect exception handlers to the throw block.private static void(package private) static BlockNode[](package private) static BlockNode[](package private) static BlockNode[](package private) static voidBlockSplitter.collectSuccessors(BlockNode startBlock, BlockNode methodEnterBlock, Set<BlockNode> toRemove) private static voidBlockProcessor.computeUnreachableFromBlock(Set<BlockNode> toRemove, BlockNode block, MethodNode mth) BlockSplitter.copyBlocksTree(MethodNode mth, List<BlockNode> blocks) private static BlockNodeprivate static BlockNodeBlockSplitter.getNewBlock(BlockNode block, Map<BlockNode, BlockNode> map) private static BlockNodeBlockSplitter.getNewBlock(BlockNode block, Map<BlockNode, BlockNode> map) private static intBlockProcessor.getSameLastInsnCount(List<BlockNode> predecessors) private static BlockNodeprivate static booleanBlockProcessor.isArgAssignInPred(List<BlockNode> preds, InsnArg arg) private static booleanprivate static booleanBlockProcessor.onlySwitchAndIfInLastInsns(List<BlockNode> preds) private static voidResolveJavaJSR.processBlocks(MethodNode mth, BlockNode retBlock, BlockNode startBlock, List<BlockNode> jsrBlocks, List<BlockNode> dupBlocks) private static voidBlockProcessor.removeFromMethod(Set<BlockNode> toRemove, MethodNode mth) private static voidResolveJavaJSR.removeInsns(BlockNode retBlock, BlockNode startBlock, List<BlockNode> jsrBlocks) private static @Nullable BlockNodeBlockExceptionHandler.searchBottomBlock(MethodNode mth, List<BlockNode> blocks) private static BlockNodeBlockExceptionHandler.searchTopBlock(MethodNode mth, List<BlockNode> blocks) private static voidBlockSplitter.setupConnectionsFromJumps(MethodNode mth, Map<Integer, BlockNode> blocksMap) -
Uses of BlockNode in jadx.core.dex.visitors.finaly
Fields in jadx.core.dex.visitors.finaly with type parameters of type BlockNodeModifier and TypeFieldDescriptionMarkFinallyVisitor.TryExtractInfo.completeCandidateBlocksMarkFinallyVisitor.TryExtractInfo.completeFinallyBlocksMarkFinallyVisitor.TryExtractInfo.rethrowBlocksMarkFinallyVisitor.TryExtractInfo.scopeTerminusGroupsTryCatchEdgeBlockMap.underlyingMethods in jadx.core.dex.visitors.finaly that return BlockNodeModifier and TypeMethodDescriptionprivate static @Nullable BlockNodeMarkFinallyVisitor.getTerminusForHandler(ExceptionHandler handler, MarkFinallyVisitor.TryExtractInfo tryInfo) Methods in jadx.core.dex.visitors.finaly that return types with arguments of type BlockNodeModifier and TypeMethodDescriptionMarkFinallyVisitor.cutHandlerBlocks(MethodNode mth, MarkFinallyVisitor.TryExtractInfo tryInfo, ExceptionHandler handler) TryCatchEdgeBlockMap.entrySet()TryCatchEdgeBlockMap.getBlocksForAllFallthroughs()TryCatchEdgeBlockMap.getBlocksForHandler(ExceptionHandler handler) TryCatchEdgeBlockMap.values()Methods in jadx.core.dex.visitors.finaly with parameters of type BlockNodeModifier and TypeMethodDescriptionprivate static voidMarkFinallyVisitor.removeEmptyUpPath(List<BlockNode> handlerBlocks, BlockNode startBlock) Method parameters in jadx.core.dex.visitors.finaly with type arguments of type BlockNodeModifier and TypeMethodDescriptionstatic booleanTryCatchEdgeBlockMap.anyBlockHasNonImplicitTry(List<BlockNode> blocks) private static booleanMarkFinallyVisitor.attemptRemoveImplicitHandlers(List<BlockNode> cutHandlerBlocks, MarkFinallyVisitor.TryExtractInfo tryInfo) Attempts to identify and remove an implicit try catch block.static TryCatchEdgeBlockMapTryCatchEdgeBlockMap.getAllInScope(MethodNode mth, TryCatchBlockAttr tryCatch, TryEdgeScopeGroupMap scopeGroups, ExceptionHandler finallyHandler, Map<BlockNode, List<TryEdge>> scopeTerminusGroups) voidprivate static voidMarkFinallyVisitor.removeEmptyUpPath(List<BlockNode> handlerBlocks, BlockNode startBlock) Constructor parameters in jadx.core.dex.visitors.finaly with type arguments of type BlockNodeModifierConstructorDescriptionprivateTryExtractInfo(TryCatchBlockAttr tryBlock, TryEdgeScopeGroupMap scopeGroups, ExceptionHandler finallyHandler, Map<BlockNode, List<TryEdge>> fallthroughGroups, TryCatchEdgeBlockMap handlerScopes) -
Uses of BlockNode in jadx.core.dex.visitors.finaly.traverser
Fields in jadx.core.dex.visitors.finaly.traverser with type parameters of type BlockNodeMethods in jadx.core.dex.visitors.finaly.traverser that return types with arguments of type BlockNodeMethods in jadx.core.dex.visitors.finaly.traverser with parameters of type BlockNodeModifier and TypeMethodDescriptionbooleanGlobalTraverserSourceState.isBlockContained(BlockNode block) Constructor parameters in jadx.core.dex.visitors.finaly.traverser with type arguments of type BlockNode -
Uses of BlockNode in jadx.core.dex.visitors.finaly.traverser.handlers
Methods in jadx.core.dex.visitors.finaly.traverser.handlers that return types with arguments of type BlockNodeModifier and TypeMethodDescriptionPredecessorMergeActivePathTraverserHandler.orderBlocks(List<BlockNode> blocks) Methods in jadx.core.dex.visitors.finaly.traverser.handlers with parameters of type BlockNodeModifier and TypeMethodDescriptionprivate static booleanMergePathActivePathTraverserHandler.isStateOnTerminus(TraverserState state, BlockNode terminus) Method parameters in jadx.core.dex.visitors.finaly.traverser.handlers with type arguments of type BlockNodeModifier and TypeMethodDescriptionMergePathActivePathTraverserHandler.getAllPermutationsOfCollection(Collection<BlockNode> elements) private TraverserActivePathStatePredecessorMergeActivePathTraverserHandler.getScopeForBlocks(List<BlockNode> finallyBlocks, List<BlockNode> candidateBlocks) PredecessorMergeActivePathTraverserHandler.orderBlocks(List<BlockNode> blocks) static voidMergePathActivePathTraverserHandler.permutations(List<BlockNode[]> permutations, Collection<BlockNode> elements, Stack<BlockNode> permutationStack, int size) static voidMergePathActivePathTraverserHandler.permutations(List<BlockNode[]> permutations, Collection<BlockNode> elements, Stack<BlockNode> permutationStack, int size) Constructors in jadx.core.dex.visitors.finaly.traverser.handlers with parameters of type BlockNode -
Uses of BlockNode in jadx.core.dex.visitors.finaly.traverser.state
Fields in jadx.core.dex.visitors.finaly.traverser.state declared as BlockNodeModifier and TypeFieldDescriptionprivate final BlockNodeTraverserActivePathState.BlockCompletionMonitor.blockprivate final BlockNodeTraverserBlockInfo.blockprivate final BlockNodeIdentifiedScopeWithTerminatorTraverserState.IdentifiedScopeWithTerminatorStateFactory.scopeTerminatorprivate final BlockNodeIdentifiedScopeWithTerminatorTraverserState.scopeTerminatorprivate final BlockNodeNoBlockTraverserState.NoBlockStateFactory.sourceBlockprivate final BlockNodeNoBlockTraverserState.sourceBlockFields in jadx.core.dex.visitors.finaly.traverser.state with type parameters of type BlockNodeModifier and TypeFieldDescriptionUnknownAdvanceStrategyTraverserState.nextBlocksIdentifiedScopeWithTerminatorTraverserState.IdentifiedScopeWithTerminatorStateFactory.rootsIdentifiedScopeWithTerminatorTraverserState.rootsprivate final Map<Pair<BlockNode>, List<TraverserActivePathState>> TraverserGlobalCommonState.searchedStatesprivate final Map<BlockNode, TraverserActivePathState.BlockCompletionMonitor> TraverserActivePathState.BlockCompletionMonitorMap.underlyingMethods in jadx.core.dex.visitors.finaly.traverser.state that return BlockNodeModifier and TypeMethodDescriptionTraverserBlockInfo.getBlock()ISourceBlockState.getSourceBlock()NoBlockTraverserState.getSourceBlock()IdentifiedScopeWithTerminatorTraverserState.getTerminus()Methods in jadx.core.dex.visitors.finaly.traverser.state that return types with arguments of type BlockNodeModifier and TypeMethodDescriptionTraverserActivePathState.BlockCompletionMonitorMap.entrySet()TraverserActivePathState.getAllFullyMatchedBlocks(TraverserActivePathState.BlockCompletionMonitorMap monitorMap) TraverserActivePathState.getAllFullyMatchedCandidateBlocks()TraverserActivePathState.getAllFullyMatchedFinallyBlocks()UnknownAdvanceStrategyTraverserState.getNextBlocks()IdentifiedScopeWithTerminatorTraverserState.getRoots()TraverserActivePathState.BlockCompletionMonitorMap.keySet()Methods in jadx.core.dex.visitors.finaly.traverser.state with parameters of type BlockNodeModifier and TypeMethodDescriptionvoidTraverserGlobalCommonState.addCachedStateFor(BlockNode finallyBlock, BlockNode candidateBlock, List<TraverserActivePathState> state) @Nullable List<TraverserActivePathState> TraverserGlobalCommonState.getCachedStateFor(BlockNode finallyBlock, BlockNode candidateBlock) IdentifiedScopeWithTerminatorTraverserState.getFactory(CentralityState centralityState, List<BlockNode> roots, BlockNode scopeTerminator) NoBlockTraverserState.getFactory(CentralityState centralityState, BlockNode sourceBlock) booleanTraverserGlobalCommonState.hasBlocksBeenCached(BlockNode finallyBlock, BlockNode candidateBlock) TraverserActivePathState.BlockCompletionMonitorMap.put(BlockNode key, TraverserActivePathState.BlockCompletionMonitor value) Method parameters in jadx.core.dex.visitors.finaly.traverser.state with type arguments of type BlockNodeModifier and TypeMethodDescriptionIdentifiedScopeWithTerminatorTraverserState.getFactory(CentralityState centralityState, List<BlockNode> roots, BlockNode scopeTerminator) voidTraverserActivePathState.BlockCompletionMonitorMap.putAll(Map<? extends BlockNode, ? extends TraverserActivePathState.BlockCompletionMonitor> otherMap) Constructors in jadx.core.dex.visitors.finaly.traverser.state with parameters of type BlockNodeModifierConstructorDescriptionprivateBlockCompletionMonitor(BlockNode block) IdentifiedScopeWithTerminatorStateFactory(CentralityState centralityState, List<BlockNode> roots, BlockNode scopeTerminator) IdentifiedScopeWithTerminatorTraverserState(TraverserActivePathState state, CentralityState centralityState, List<BlockNode> roots, BlockNode scopeTerminator) NoBlockStateFactory(CentralityState centralityState, BlockNode sourceBlock) NoBlockTraverserState(TraverserActivePathState state, CentralityState centralityState, BlockNode sourceBlock) TraverserActivePathState(MethodNode mth, SameInstructionsStrategy sameInstructionsStrategy, BlockNode finallyBlockTerminus, BlockNode candidateBlockTerminus, List<BlockNode> finallyBlocks, List<BlockNode> candidateBlocks) Creates a new instance of a traversal active path.TraverserBlockInfo(BlockNode block) TraverserBlockInfo(BlockNode block, int bottomOffset, int topOffset, int bottomImplicitCount) Constructor parameters in jadx.core.dex.visitors.finaly.traverser.state with type arguments of type BlockNodeModifierConstructorDescriptionIdentifiedScopeWithTerminatorStateFactory(CentralityState centralityState, List<BlockNode> roots, BlockNode scopeTerminator) IdentifiedScopeWithTerminatorTraverserState(TraverserActivePathState state, CentralityState centralityState, List<BlockNode> roots, BlockNode scopeTerminator) TraverserActivePathState(MethodNode mth, SameInstructionsStrategy sameInstructionsStrategy, BlockNode finallyBlockTerminus, BlockNode candidateBlockTerminus, List<BlockNode> finallyBlocks, List<BlockNode> candidateBlocks) Creates a new instance of a traversal active path.UnknownAdvanceStrategyTraverserState(TraverserActivePathState state, CentralityState centralityState, List<BlockNode> nextBlocks) -
Uses of BlockNode in jadx.core.dex.visitors.finaly.traverser.visitors
Methods in jadx.core.dex.visitors.finaly.traverser.visitors with parameters of type BlockNode -
Uses of BlockNode in jadx.core.dex.visitors.finaly.traverser.visitors.comparator
Methods in jadx.core.dex.visitors.finaly.traverser.visitors.comparator with parameters of type BlockNodeModifier and TypeMethodDescriptionprivate static TraverserActivePathStateInstructionBlockComparatorTraverserVisitor.createStateForBlockSkip(TraverserActivePathState previousState, TraverserState finallyState, TraverserState candidateState, BlockNode finallyBlock, BlockNode candidateBlock) private static TraverserActivePathStateInstructionBlockComparatorTraverserVisitor.createStateForPerfectMatch(TraverserActivePathState previousState, BlockNode finallyBlock, BlockNode candidateBlock) private static TraverserActivePathStateInstructionBlockComparatorTraverserVisitor.createStateForUnevenMatch(TraverserActivePathState previousState, TraverserState finallyState, TraverserState candidateState, BlockNode finallyBlock, BlockNode candidateBlock, int finallyInsnsSize, int candidateInsnsSize) -
Uses of BlockNode in jadx.core.dex.visitors.regions
Fields in jadx.core.dex.visitors.regions declared as BlockNodeModifier and TypeFieldDescriptionDebugRegionCounter.BlockDepthEntry.blockprivate final BlockNodeSwitchOverStringVisitor.CaseData.codeMethods in jadx.core.dex.visitors.regions that return BlockNodeModifier and TypeMethodDescription@Nullable BlockNodeSwitchOverStringVisitor.CaseData.getCode()private static @Nullable BlockNodeSwitchOverStringVisitor.getOnlyOneInsnBlock(BlockNode b) private static BlockNodeTernaryMod.getTernaryInsnBlock(IContainer thenRegion) Methods in jadx.core.dex.visitors.regions with parameters of type BlockNodeModifier and TypeMethodDescriptionprivate booleanReturnVisitor.ReturnRemoverVisitor.blockNotInLoop(MethodNode mth, BlockNode block) private static voidTernaryMod.clearConditionBlocks(List<BlockNode> conditionBlocks, BlockNode header) private static @Nullable BlockNodeSwitchOverStringVisitor.getOnlyOneInsnBlock(BlockNode b) private booleanReturnVisitor.ReturnRemoverVisitor.noTrailInstructions(BlockNode block) Check that there are no code after this block in regions structureprivate static voidTernaryMod.replaceWithTernary(MethodNode mth, IfRegion ifRegion, BlockNode block, InsnNode insn) private static booleanProcessTryCatchRegions.wrapBlocks(IRegion replaceRegion, TryCatchBlockAttr tb, BlockNode dominator) Extract all block dominated by 'dominator' to separate region and mark as try/catch blockMethod parameters in jadx.core.dex.visitors.regions with type arguments of type BlockNodeModifier and TypeMethodDescriptionprivate static voidTernaryMod.clearConditionBlocks(List<BlockNode> conditionBlocks, BlockNode header) Constructors in jadx.core.dex.visitors.regions with parameters of type BlockNode -
Uses of BlockNode in jadx.core.dex.visitors.regions.maker
Fields in jadx.core.dex.visitors.regions.maker with type parameters of type BlockNodeMethods in jadx.core.dex.visitors.regions.maker that return BlockNodeModifier and TypeMethodDescriptionprivate BlockNodeSwitchRegionMaker.allSameReturns(RegionStack stack) private @Nullable BlockNodeSwitchRegionMaker.calcSwitchOut(BlockNode block, SwitchInsn insn, RegionStack stack) (package private) static @Nullable BlockNodeIfRegionMaker.findOutBlock(MethodNode mth, BlockNode thenBlock, BlockNode elseBlock) private @Nullable BlockNodeIfRegionMaker.findScopeOutBlock(BlockNode startBlock) if startBlock is in a (try) scope, find the scope end as outBlockprivate static BlockNodeIfRegionMaker.getBranchBlock(BlockNode first, BlockNode second, Set<BlockNode> skipBlocks, MethodNode mth) private static @Nullable BlockNodeIfRegionMaker.getNextBlockInIfSuccessorChain(BlockNode block) Allow singular successor to block or 2 successors where one is a EXC_BOTTOM_SPLITTERprivate @Nullable BlockNodeSwitchRegionMaker.getOneIntersectionBlock(BlockNode out, BitSet caseBlocks, BitSet fallThroughSet) private BlockNodeLoopRegionMaker.makeEndlessLoop(IRegion curRegion, RegionStack stack, LoopInfo loop, BlockNode loopStart) (package private) @Nullable BlockNodeIfRegionMaker.process(IRegion currentRegion, BlockNode block, IfNode ifnode, RegionStack stack) (package private) BlockNodeLoopRegionMaker.process(IRegion curRegion, LoopInfo loop, RegionStack stack) (package private) BlockNodeSwitchRegionMaker.process(IRegion currentRegion, BlockNode block, SwitchInsn insn, RegionStack stack) (package private) BlockNodeSynchronizedRegionMaker.process(IRegion curRegion, BlockNode block, InsnNode insn, RegionStack stack) private @Nullable BlockNodeRecursively traverse all blocks from 'block' until block from 'exits'private static BlockNodeSynchronizedRegionMaker.traverseMonitorExitsCross(BlockNode block, Set<BlockNode> exits, Set<BlockNode> visited) Traverse from monitor-enter thru successors and search for exit paths crossMethods in jadx.core.dex.visitors.regions.maker that return types with arguments of type BlockNodeModifier and TypeMethodDescriptionRegionStack.getExits()SwitchRegionMaker.reOrderSwitchCases(Map<BlockNode, List<Object>> blocksMap, Map<BlockNode, BlockNode> fallThroughCases) Methods in jadx.core.dex.visitors.regions.maker with parameters of type BlockNodeModifier and TypeMethodDescriptionprivate voidLoopRegionMaker.addBreakLabel(BlockNode blockOnLoop, BlockNode exit, InsnNode breakInsn) private voidSwitchRegionMaker.addCases(SwitchRegion sw, @Nullable BlockNode out, RegionStack stack, Map<BlockNode, List<Object>> blocksMap) voidAdd boundary(exit) node for current stack frameprivate static booleanIfRegionMaker.allPathsFromIf(BlockNode block, IfInfo info) private @Nullable BlockNodeSwitchRegionMaker.calcSwitchOut(BlockNode block, SwitchInsn insn, RegionStack stack) private booleanLoopRegionMaker.canInsertBreak(BlockNode exit) private static booleanLoopRegionMaker.canInsertContinue(BlockNode pred, List<BlockNode> predecessors, BlockNode loopEnd, Set<BlockNode> loopExitNodes) private booleanSwitchRegionMaker.canRemove(IContainer container, BlockNode outBlock) private static booleanIfRegionMaker.canSelectNext(IfInfo info, BlockNode block) private static booleanIfRegionMaker.checkConditionBranches(BlockNode from, BlockNode to) private static booleanIfRegionMaker.checkInsnsInline(BlockNode block, BlockNode next, List<InsnNode> forceInlineInsns) Check that all instructions can be inlinedprivate booleanLoopRegionMaker.checkLoopExits(LoopInfo loop, BlockNode mainExitBlock) (package private) voidRegionMaker.clearBlockProcessedState(BlockNode block) booleanRegionStack.containsExit(BlockNode exit) (package private) static @Nullable BlockNodeIfRegionMaker.findOutBlock(MethodNode mth, BlockNode thenBlock, BlockNode elseBlock) private @Nullable BlockNodeIfRegionMaker.findScopeOutBlock(BlockNode startBlock) if startBlock is in a (try) scope, find the scope end as outBlockprivate static BlockNodeIfRegionMaker.getBranchBlock(BlockNode first, BlockNode second, Set<BlockNode> skipBlocks, MethodNode mth) private static @Nullable BlockNodeIfRegionMaker.getNextBlockInIfSuccessorChain(BlockNode block) Allow singular successor to block or 2 successors where one is a EXC_BOTTOM_SPLITTERprivate static IfInfoprivate static IfInfoIfRegionMaker.getNextIfNodeInfo(IfInfo info, BlockNode block) private @Nullable BlockNodeSwitchRegionMaker.getOneIntersectionBlock(BlockNode out, BitSet caseBlocks, BitSet fallThroughSet) private booleanLoopRegionMaker.inExceptionHandlerBlocks(BlockNode loopEnd) private booleanSwitchRegionMaker.insertContinueInSwitch(BlockNode switchBlock, BlockNode switchOut, BlockNode loopEnd) private voidRegionMaker.insertEdgeInsns(Region region, BlockNode exitBlock) private booleanLoopRegionMaker.insertLoopBreak(RegionStack stack, LoopInfo loop, BlockNode loopExit, BlockNode blockOnLoop, Edge exitEdge) private static booleanIfRegionMaker.isBadBranchBlock(IfInfo info, BlockNode block) (package private) static booleanIfRegionMaker.isCandidateForOutBlock(MethodNode mth, BlockNode thenBlock, BlockNode elseBlock, BlockNode candidate) private static booleanLoopRegionMaker.isDominatedOnBlocks(BlockNode dom, List<BlockNode> blocks) private static booleanLoopRegionMaker.isExitAtLoopEnd(BlockNode exit, LoopInfo loop) private booleanLoopRegionMaker.isNestedIfCross(BlockNode crossing, Queue<Edge> edgesToCheck) private booleanLoopRegionMaker.isOuterOutblock(BlockNode crossing, LoopInfo loop) (package private) booleanRegionMaker.isProcessed(BlockNode block) private BlockNodeLoopRegionMaker.makeEndlessLoop(IRegion curRegion, RegionStack stack, LoopInfo loop, BlockNode loopStart) (package private) static @Nullable IfInfoIfRegionMaker.makeIfInfo(MethodNode mth, BlockNode ifBlock) (package private) RegionRegionMaker.makeRegion(BlockNode startBlock) private booleanLoopRegionMaker.noWorkBeforeEnd(BlockNode firstInstructionBlock, BlockNode outBlock) private booleanLoopRegionMaker.oneBlockOfWorkBeforeEnd(BlockNode firstInstructionBlock, BlockNode outBlock) (package private) @Nullable BlockNodeIfRegionMaker.process(IRegion currentRegion, BlockNode block, IfNode ifnode, RegionStack stack) (package private) BlockNodeSwitchRegionMaker.process(IRegion currentRegion, BlockNode block, SwitchInsn insn, RegionStack stack) (package private) BlockNodeSynchronizedRegionMaker.process(IRegion curRegion, BlockNode block, InsnNode insn, RegionStack stack) private voidSwitchRegionMaker.removeEmptyCases(SwitchInsn insn, SwitchRegion sw, BlockNode defCase, BlockNode outBlock) Remove empty case blocks: 1.voidRegionStack.removeExit(@Nullable BlockNode exit) (package private) IfInfoIfRegionMaker.restructureIf(BlockNode block, IfInfo info) private @Nullable BlockNodeRecursively traverse all blocks from 'block' until block from 'exits'private static voidSynchronizedRegionMaker.traverseMonitorExits(SynchronizedRegion region, InsnArg arg, BlockNode block, Set<BlockNode> exits, Set<BlockNode> visited) Traverse from monitor-enter thru successors and collect blocks contains monitor-exitprivate static BlockNodeSynchronizedRegionMaker.traverseMonitorExitsCross(BlockNode block, Set<BlockNode> exits, Set<BlockNode> visited) Traverse from monitor-enter thru successors and search for exit paths crossprivate BooleanLoopRegionMaker.validOutBlock(BlockNode outBlock, LoopInfo loop) private booleanLoopRegionMaker.viaValidUncleanSuccessor(BlockNode exitBlock, BlockNode crossing, LoopInfo loop) Method parameters in jadx.core.dex.visitors.regions.maker with type arguments of type BlockNodeModifier and TypeMethodDescriptionprivate voidSwitchRegionMaker.addCases(SwitchRegion sw, @Nullable BlockNode out, RegionStack stack, Map<BlockNode, List<Object>> blocksMap) voidRegionStack.addExits(Collection<BlockNode> exits) private static booleanLoopRegionMaker.canInsertContinue(BlockNode pred, List<BlockNode> predecessors, BlockNode loopEnd, Set<BlockNode> loopExitNodes) private static booleanLoopRegionMaker.canInsertContinue(BlockNode pred, List<BlockNode> predecessors, BlockNode loopEnd, Set<BlockNode> loopExitNodes) private static BlockNodeIfRegionMaker.getBranchBlock(BlockNode first, BlockNode second, Set<BlockNode> skipBlocks, MethodNode mth) private booleanSwitchRegionMaker.isBadCasesOrder(Map<BlockNode, List<Object>> blocksMap, Map<BlockNode, BlockNode> fallThroughCases) private static booleanLoopRegionMaker.isDominatedOnBlocks(BlockNode dom, List<BlockNode> blocks) private LoopRegionLoopRegionMaker.makeLoopRegion(IRegion curRegion, LoopInfo loop, List<BlockNode> exitBlocks) Select loop exit and construct LoopRegionprivate voidExcHandlersRegionMaker.processExcHandler(ExceptionHandler handler, Set<BlockNode> exits) SwitchRegionMaker.reOrderSwitchCases(Map<BlockNode, List<Object>> blocksMap, Map<BlockNode, BlockNode> fallThroughCases) private static voidSynchronizedRegionMaker.traverseMonitorExits(SynchronizedRegion region, InsnArg arg, BlockNode block, Set<BlockNode> exits, Set<BlockNode> visited) Traverse from monitor-enter thru successors and collect blocks contains monitor-exitprivate static BlockNodeSynchronizedRegionMaker.traverseMonitorExitsCross(BlockNode block, Set<BlockNode> exits, Set<BlockNode> visited) Traverse from monitor-enter thru successors and search for exit paths cross -
Uses of BlockNode in jadx.core.dex.visitors.shrink
Methods in jadx.core.dex.visitors.shrink with parameters of type BlockNodeModifier and TypeMethodDescriptionprivate static booleanCodeShrinkVisitor.assignInline(MethodNode mth, RegisterArg arg, InsnNode assignInsn, BlockNode assignBlock) private static booleanCodeShrinkVisitor.canMoveBetweenBlocks(MethodNode mth, InsnNode assignInsn, BlockNode assignBlock, BlockNode useBlock, InsnNode useInsn) private static voidCodeShrinkVisitor.checkInline(MethodNode mth, BlockNode block, InsnList insnList, List<WrapInfo> wrapList, ArgsInfo argsInfo, RegisterArg arg) private static booleanCodeShrinkVisitor.inline(MethodNode mth, RegisterArg arg, InsnNode insn, BlockNode block) private static voidCodeShrinkVisitor.shrinkBlock(MethodNode mth, BlockNode block) private static voidCodeShrinkVisitor.simplifyMoveInsns(MethodNode mth, BlockNode block) -
Uses of BlockNode in jadx.core.dex.visitors.ssa
Fields in jadx.core.dex.visitors.ssa declared as BlockNodeMethods in jadx.core.dex.visitors.ssa that return BlockNodeMethods in jadx.core.dex.visitors.ssa with parameters of type BlockNodeModifier and TypeMethodDescriptionstatic PhiInsnSSATransform.addPhi(MethodNode mth, BlockNode block, int regNum) static RenameStateRenameState.copyFrom(RenameState state, BlockNode block) private static booleanSSATransform.fixPhiWithSameArgs(MethodNode mth, BlockNode block, PhiInsn phi) private static booleanSSATransform.inlinePhiInsn(MethodNode mth, BlockNode block, PhiInsn phi, RegisterArg inlineArg) booleanprivate static booleanSSATransform.replacePhiWithMove(MethodNode mth, BlockNode block, PhiInsn phi, RegisterArg arg) Constructors in jadx.core.dex.visitors.ssa with parameters of type BlockNodeModifierConstructorDescriptionprivateRenameState(MethodNode mth, BlockNode block, SSAVar[] vars, int[] versions) -
Uses of BlockNode in jadx.core.dex.visitors.typeinference
Methods in jadx.core.dex.visitors.typeinference that return BlockNodeModifier and TypeMethodDescriptionprivate @Nullable BlockNodeFixTypesVisitor.checkBlockForInsnInsert(BlockNode blockNode) Methods in jadx.core.dex.visitors.typeinference with parameters of type BlockNodeModifier and TypeMethodDescriptionprivate @Nullable BlockNodeFixTypesVisitor.checkBlockForInsnInsert(BlockNode blockNode) private voidFixTypesVisitor.insertMove(MethodNode mth, BlockNode blockNode, PhiInsn phiInsn, RegisterArg reg) -
Uses of BlockNode in jadx.core.utils
Methods in jadx.core.utils that return BlockNodeModifier and TypeMethodDescriptionstatic @Nullable BlockNodeBlockUtils.bitSetToOneBlock(MethodNode mth, BitSet bs) static BlockNodeBlockUtils.followEmptyPath(BlockNode start) Follow empty blocks and return end of path block (first not empty).static BlockNodeBlockUtils.followEmptyPath(BlockNode start, Boolean reverse) static BlockNodeBlockUtils.followEmptyPath(BlockNode start, Boolean reverse, boolean cleanOnly) static @Nullable BlockNodeBlockUtils.getBlockByInsn(MethodNode mth, @Nullable InsnNode insn) static @Nullable BlockNodeBlockUtils.getBlockByInsn(MethodNode mth, @Nullable InsnNode insn, List<BlockNode> blocks) static BlockNodeBlockUtils.getBlockByOffset(int offset, Iterable<BlockNode> casesBlocks) private static BlockNodeBlockUtils.getBlockByWrappedInsn(MethodNode mth, InsnNode insn) static @Nullable BlockNodeBlockUtils.getBlockWithFlag(List<BlockNode> blocks, AFlag flag) static @Nullable BlockNodeBlockUtils.getBottomBlock(List<BlockNode> blocks) Search last block in control flow graph from input set.static BlockNodeBlockUtils.getBottomBlock(List<BlockNode> blocks, boolean clean) static @Nullable BlockNodeBlockUtils.getBottomCommonPredecessor(MethodNode mth, List<BlockNode> blocks, Set<BlockNode> containedBlocks) static @Nullable BlockNodeBlockUtils.getBottomCommonPredecessor(MethodNode mth, List<BlockNode> blocks, Set<BlockNode> containedBlocks, boolean addTopBlock) static @Nullable BlockNodeBlockUtils.getCommonDominator(MethodNode mth, List<BlockNode> blocks) Search the lowest common ancestor in dominator tree for input set.static @Nullable BlockNodeRegionUtils.getFirstBlockNode(IContainer container) private static @Nullable BlockNodeRegionUtils.getFirstBlockNode(List<IContainer> containers) static @Nullable BlockNodeBlockUtils.getNextBlock(BlockNode block) Return first successor which not exception handler and not follow loop back edgeprivate static @Nullable BlockNodeBlockUtils.getNextBlockOnEmptyPath(BlockNode block) private static @Nullable BlockNodeBlockUtils.getNextBlockOnEmptyPath(BlockNode block, Boolean reverse) private static @Nullable BlockNodeBlockUtils.getNextBlockOnEmptyPath(BlockNode block, Boolean reverse, boolean cleanOnly) static BlockNodeBlockUtils.getNextBlockToPath(BlockNode block, BlockNode pathEnd) Return successor on path to 'pathEnd' blockstatic @Nullable BlockNodeBlockUtils.getNextSinglePathBlock(BlockNode block) static BlockNodeBlockUtils.getPathCross(MethodNode mth, BlockNode b1, BlockNode b2) static @Nullable BlockNodeBlockUtils.getPathCross(MethodNode mth, Collection<BlockNode> blocks) Return common cross block for input set.static @Nullable BlockNodeBlockUtils.getPrevBlock(BlockNode block) static @Nullable BlockNodeBlockUtils.getPrevBlockOnPath(MethodNode mth, BlockNode block, BlockNode pathStart) Return predecessor on path from 'pathStart' blockstatic BlockNodeBlockUtils.getTopBlock(List<BlockNode> blocks) static @Nullable BlockNodeBlockUtils.getTopCommonSuccessor(MethodNode mth, List<BlockNode> blocks, boolean cleanOnly) static @Nullable BlockNodeBlockUtils.getTopCommonSuccessor(MethodNode mth, List<BlockNode> blocks, boolean cleanOnly, boolean addTopBlock) static BlockNodeBlockUtils.getTopSplitterForHandler(BlockNode handlerBlock) static @Nullable BlockNodeBlockUtils.getTryAndHandlerCrossBlock(MethodNode mth, ExceptionHandler handler) Return out block of try catch, by finding where try branch meets catch branch.static BlockNodeBlockUtils.searchBlockWithPhi(MethodNode mth, PhiInsn insn) static BlockNodeBlockUtils.selectOther(BlockNode node, List<BlockNode> blocks) static BlockNodeBlockUtils.selectOtherSafe(BlockNode node, List<BlockNode> blocks) static BlockNodeBlockUtils.skipSyntheticPredecessor(BlockNode block) Return predecessor of synthetic block or same block otherwise.static BlockNodeBlockUtils.traverseWhileDominates(BlockNode dom, BlockNode start) Search for first node which not dominated by dom, starting from startMethods in jadx.core.utils that return types with arguments of type BlockNodeModifier and TypeMethodDescriptionBlockUtils.bitSetToBlocks(MethodNode mth, BitSet bs) BlockUtils.buildSimplePath(BlockNode block) BlockUtils.cleanBlockList(List<BlockNode> list) Remove exception handlers from block nodes listBlockUtils.collectAllPredecessors(MethodNode mth, BlockNode startBlock) BlockUtils.collectAllSuccessors(MethodNode mth, BlockNode startBlock, boolean clean) BlockUtils.collectAllSuccessorsUntil(MethodNode mth, BlockNode startBlock, boolean clean, Predicate<BlockNode> stopCondition) BlockUtils.collectBlocksDominatedBy(MethodNode mth, BlockNode dominator, BlockNode start) Collect all block dominated by 'dominator', starting from 'start'BlockUtils.collectBlocksDominatedByWithExcHandlers(MethodNode mth, BlockNode dominator, BlockNode start) Collect all block dominated by 'dominator', starting from 'start', including exception handlersBlockUtils.collectPathUntil(BlockNode from, BlockNode until, boolean clean, Predicate<BlockNode> pred) Traverse succcessors until a node is found, collecting the path to the nodeBlockUtils.collectPredecessors(MethodNode mth, BlockNode start, Collection<BlockNode> stopBlocks) BlockUtils.followEmptyUpPathWithinSet(BlockNode start, Collection<BlockNode> traversableBlocks) BlockUtils.getAllPathsBlocks(BlockNode start, BlockNode end) Collect blocks from all possible execution paths from 'start' to 'end'BlockUtils.getOneEmptyPath(BlockNode start, BlockNode end) Collect blocks from one possible execution path from 'start' to 'end' containing no instructionsBlockUtils.getOnePath(BlockNode start, BlockNode end) Collect blocks from one possible execution path from 'start' to 'end'BlockUtils.internalCollectPathUntil(BlockNode from, BlockNode until, BitSet visited, boolean clean, Predicate<BlockNode> pred) Traverse succcessors until a node is found, collecting the path to the nodeMethods in jadx.core.utils with parameters of type BlockNodeModifier and TypeMethodDescriptionprivate voidprivate static voidBlockUtils.addPredecessors(Set<BlockNode> set, BlockNode from, BlockNode until) static booleanBlockUtils.atLeastOnePathExists(Collection<BlockNode> startBlocks, BlockNode end) Search at least one path from startBlocks to endstatic booleanBlockUtils.blockContains(BlockNode block, InsnNode insn) Check if instruction contains in block (use == for comparison, not equals)BlockUtils.buildSimplePath(BlockNode block) private voidDotGraphUtils.checkAndFixFloatingBlocks(MethodNode mth, BlockNode block, Set<IBlock> regionBlocks) A block is floating if it exists in no regions at all.private static voidDebugChecks.checkBlock(MethodNode mth, BlockNode block, Supplier<String> source) private static voidDebugChecks.checkInsn(MethodNode mth, BlockNode block, InsnNode insn) BlockUtils.collectAllPredecessors(MethodNode mth, BlockNode startBlock) BlockUtils.collectAllSuccessors(MethodNode mth, BlockNode startBlock, boolean clean) BlockUtils.collectAllSuccessorsUntil(MethodNode mth, BlockNode startBlock, boolean clean, Predicate<BlockNode> stopCondition) private static voidBlockUtils.collectAllSuccessorsUntil(MethodNode mth, List<BlockNode> blocks, BlockNode currentBlock, boolean clean, Predicate<BlockNode> stopCondition) BlockUtils.collectBlocksDominatedBy(MethodNode mth, BlockNode dominator, BlockNode start) Collect all block dominated by 'dominator', starting from 'start'BlockUtils.collectBlocksDominatedByWithExcHandlers(MethodNode mth, BlockNode dominator, BlockNode start) Collect all block dominated by 'dominator', starting from 'start', including exception handlersBlockUtils.collectPathUntil(BlockNode from, BlockNode until, boolean clean, Predicate<BlockNode> pred) Traverse succcessors until a node is found, collecting the path to the nodeBlockUtils.collectPredecessors(MethodNode mth, BlockNode start, Collection<BlockNode> stopBlocks) private static voidBlockUtils.collectWhileDominates(BlockNode dominator, BlockNode child, Collection<BlockNode> result, BitSet visited, boolean includeExcHandlers) static BlockNodeBlockUtils.followEmptyPath(BlockNode start) Follow empty blocks and return end of path block (first not empty).static BlockNodeBlockUtils.followEmptyPath(BlockNode start, Boolean reverse) static BlockNodeBlockUtils.followEmptyPath(BlockNode start, Boolean reverse, boolean cleanOnly) BlockUtils.followEmptyUpPathWithinSet(BlockNode start, Collection<BlockNode> traversableBlocks) static voidBlockUtils.followEmptyUpPathWithinSet(List<BlockNode> results, BlockNode start, Collection<BlockNode> traversableBlocks, Collection<BlockNode> traversedBlocks) BlockUtils.getAllPathsBlocks(BlockNode start, BlockNode end) Collect blocks from all possible execution paths from 'start' to 'end'static intBlockUtils.getInsnIndexInBlock(BlockNode block, InsnNode insn) static @Nullable BlockNodeBlockUtils.getNextBlock(BlockNode block) Return first successor which not exception handler and not follow loop back edgeprivate static @Nullable BlockNodeBlockUtils.getNextBlockOnEmptyPath(BlockNode block) private static @Nullable BlockNodeBlockUtils.getNextBlockOnEmptyPath(BlockNode block, Boolean reverse) private static @Nullable BlockNodeBlockUtils.getNextBlockOnEmptyPath(BlockNode block, Boolean reverse, boolean cleanOnly) static BlockNodeBlockUtils.getNextBlockToPath(BlockNode block, BlockNode pathEnd) Return successor on path to 'pathEnd' blockstatic @Nullable BlockNodeBlockUtils.getNextSinglePathBlock(BlockNode block) BlockUtils.getOneEmptyPath(BlockNode start, BlockNode end) Collect blocks from one possible execution path from 'start' to 'end' containing no instructionsBlockUtils.getOnePath(BlockNode start, BlockNode end) Collect blocks from one possible execution path from 'start' to 'end'static BlockNodeBlockUtils.getPathCross(MethodNode mth, BlockNode b1, BlockNode b2) static @Nullable BlockNodeBlockUtils.getPrevBlock(BlockNode block) static @Nullable BlockNodeBlockUtils.getPrevBlockOnPath(MethodNode mth, BlockNode block, BlockNode pathStart) Return predecessor on path from 'pathStart' blockstatic BlockNodeBlockUtils.getTopSplitterForHandler(BlockNode handlerBlock) static booleanRegionUtils.hasPathThroughBlock(BlockNode block, IContainer cont) private static booleanDebugChecks.hasTmpEdge(BlockNode start, BlockNode end) static booleanBlockUtils.insertAfterInsn(BlockNode block, InsnNode insn, InsnNode newInsn) static booleanBlockUtils.insertBeforeInsn(BlockNode block, InsnNode insn, InsnNode newInsn) BlockUtils.internalCollectPathUntil(BlockNode from, BlockNode until, BitSet visited, boolean clean, Predicate<BlockNode> pred) Traverse succcessors until a node is found, collecting the path to the nodestatic booleanBlockUtils.isAllPathExists(Collection<BlockNode> startBlocks, BlockNode end) Check if exist path from every startBlocks to endstatic booleanBlockUtils.isAnyPathExists(BlockNode start, BlockNode end) static booleanBlockUtils.isBackEdge(BlockNode from, BlockNode to) static booleanRegionUtils.isBlocksInSameRegion(MethodNode mth, BlockNode firstBlock, BlockNode secondBlock) Check if two blocks in same region on same level TODO: Add 'region' annotation to all blocks to speed up checksstatic booleanRegionUtils.isDominatedBy(BlockNode dom, IContainer cont) static booleanBlockUtils.isDuplicateBlockPath(BlockNode first, BlockNode second) static booleanBlockUtils.isEmptySimplePath(BlockNode start, BlockNode end) Return true if on path from start to end no instructions and no branches.private static booleanBlockUtils.isEmptySyntheticPath(BlockNode b1, BlockNode b2) static booleanBlockUtils.isEqualPaths(BlockNode b1, BlockNode b2) static booleanBlockUtils.isEqualReturnBlocks(BlockNode b1, BlockNode b2) static booleanBlockUtils.isExceptionHandlerPath(BlockNode b) static booleanBlockUtils.isExitBlock(BlockNode block) static booleanBlockUtils.isExitBlock(MethodNode mth, BlockNode block) static booleanBlockUtils.isFollowBackEdge(BlockNode block) static booleanBlockUtils.isOnlyOnePathExists(BlockNode start, BlockNode end) static booleanBlockUtils.isPathExists(BlockNode start, BlockNode end) static booleanBlockUtils.isPathExists(BlockNode start, BlockNode end, Predicate<BlockNode> pred) static booleanRegionUtils.isPathExists(BlockNode block, IContainer container) Check if path exists from block to container start.static booleanRegionUtils.isRegionContainsBlock(IContainer container, BlockNode block) static booleanBlockUtils.isSameInsnsBlocks(BlockNode first, BlockNode second) voidInsnRemover.performForBlock(BlockNode block) static voidDebugUtils.printRegionsWithBlock(MethodNode mth, BlockNode block) private voidDotGraphUtils.processBlock(MethodNode mth, BlockNode block) private voidDotGraphUtils.processBlock(MethodNode mth, BlockNode block, boolean error, boolean pseudoInRegion) static voidstatic voidInsnRemover.remove(MethodNode mth, BlockNode block, int index) static voidInsnRemover.remove(MethodNode mth, BlockNode block, InsnNode insn) static voidInsnRemover.removeAllAndUnbind(MethodNode mth, BlockNode block, List<InsnNode> insns) static voidInsnRemover.removeAllWithoutUnbind(BlockNode block, List<InsnNode> insns) static booleanInsnRemover.removeWithoutUnbind(MethodNode mth, BlockNode block, InsnNode insn) static voidBlockUtils.replaceInsn(MethodNode mth, BlockNode block, int i, InsnNode insn) Replace insn by index i in block, for proper copy attributes, assume attributes are not overlapstatic booleanBlockUtils.replaceInsn(MethodNode mth, BlockNode block, InsnNode oldInsn, InsnNode newInsn) static BlockNodeBlockUtils.selectOther(BlockNode node, List<BlockNode> blocks) static BlockNodeBlockUtils.selectOtherSafe(BlockNode node, List<BlockNode> blocks) voidstatic voidBlockUtils.skipPredSyntheticPaths(BlockNode block) Set 'SKIP' flag for all synthetic predecessors from start block.static BlockNodeBlockUtils.skipSyntheticPredecessor(BlockNode block) Return predecessor of synthetic block or same block otherwise.private static voidBlockUtils.traversePredecessors(BlockNode start, BitSet visited, Predicate<BlockNode> visitor) Up BFS.private static booleanBlockUtils.traverseSuccessorsUntil(BlockNode from, BlockNode until, BitSet visited, boolean clean) private static booleanBlockUtils.traverseSuccessorsUntil(BlockNode from, BlockNode until, BitSet visited, boolean clean, Predicate<BlockNode> pred) Traverse succcessors until a node is foundstatic BlockNodeBlockUtils.traverseWhileDominates(BlockNode dom, BlockNode start) Search for first node which not dominated by dom, starting from startstatic voidBlockUtils.visitBlocksOnEmptyPath(BlockNode start, Consumer<BlockNode> visitor) static voidBlockUtils.visitBlocksOnEmptyPath(BlockNode start, Consumer<BlockNode> visitor, boolean reverse) static booleanBlockUtils.visitBlocksOnPath(MethodNode mth, BlockNode start, BlockNode end, Consumer<BlockNode> visitor) Visit blocks on any path from start to end.private static voidBlockUtils.visitDFS(MethodNode mth, BlockNode startBlock, Function<BlockNode, List<BlockNode>> nextFunc, Consumer<BlockNode> visitor) static voidBlockUtils.visitPredecessorsUntil(MethodNode mth, BlockNode start, Predicate<BlockNode> visitor) static voidBlockUtils.visitSinglePath(BlockNode startBlock, Consumer<BlockNode> visitor) Visit blocks on path without branching or merging paths.Method parameters in jadx.core.utils with type arguments of type BlockNodeModifier and TypeMethodDescriptionprivate static voidBlockUtils.addPredecessors(Set<BlockNode> set, BlockNode from, BlockNode until) static booleanBlockUtils.atLeastOnePathExists(Collection<BlockNode> startBlocks, BlockNode end) Search at least one path from startBlocks to endstatic BitSetBlockUtils.blocksToBitSet(MethodNode mth, Collection<BlockNode> blocks) BlockUtils.cleanBlockList(List<BlockNode> list) Remove exception handlers from block nodes listBlockUtils.collectAllInsns(List<BlockNode> blocks) BlockUtils.collectAllSuccessorsUntil(MethodNode mth, BlockNode startBlock, boolean clean, Predicate<BlockNode> stopCondition) private static voidBlockUtils.collectAllSuccessorsUntil(MethodNode mth, List<BlockNode> blocks, BlockNode currentBlock, boolean clean, Predicate<BlockNode> stopCondition) private static voidBlockUtils.collectAllSuccessorsUntil(MethodNode mth, List<BlockNode> blocks, BlockNode currentBlock, boolean clean, Predicate<BlockNode> stopCondition) BlockUtils.collectInsnsWithLimit(List<BlockNode> blocks, int limit) Return limited number of instructions from method.BlockUtils.collectPathUntil(BlockNode from, BlockNode until, boolean clean, Predicate<BlockNode> pred) Traverse succcessors until a node is found, collecting the path to the nodeBlockUtils.collectPredecessors(MethodNode mth, BlockNode start, Collection<BlockNode> stopBlocks) private static voidBlockUtils.collectWhileDominates(BlockNode dominator, BlockNode child, Collection<BlockNode> result, BitSet visited, boolean includeExcHandlers) BlockUtils.followEmptyUpPathWithinSet(BlockNode start, Collection<BlockNode> traversableBlocks) static voidBlockUtils.followEmptyUpPathWithinSet(List<BlockNode> results, BlockNode start, Collection<BlockNode> traversableBlocks, Collection<BlockNode> traversedBlocks) static voidBlockUtils.followEmptyUpPathWithinSet(List<BlockNode> results, BlockNode start, Collection<BlockNode> traversableBlocks, Collection<BlockNode> traversedBlocks) static voidBlockUtils.forEachBlockFromBitSet(MethodNode mth, BitSet bs, Consumer<BlockNode> consumer) static @Nullable BlockNodeBlockUtils.getBlockByInsn(MethodNode mth, @Nullable InsnNode insn, List<BlockNode> blocks) static BlockNodeBlockUtils.getBlockByOffset(int offset, Iterable<BlockNode> casesBlocks) static @Nullable BlockNodeBlockUtils.getBlockWithFlag(List<BlockNode> blocks, AFlag flag) static @Nullable BlockNodeBlockUtils.getBottomBlock(List<BlockNode> blocks) Search last block in control flow graph from input set.static BlockNodeBlockUtils.getBottomBlock(List<BlockNode> blocks, boolean clean) static @Nullable BlockNodeBlockUtils.getBottomCommonPredecessor(MethodNode mth, List<BlockNode> blocks, Set<BlockNode> containedBlocks) static @Nullable BlockNodeBlockUtils.getBottomCommonPredecessor(MethodNode mth, List<BlockNode> blocks, Set<BlockNode> containedBlocks) static @Nullable BlockNodeBlockUtils.getBottomCommonPredecessor(MethodNode mth, List<BlockNode> blocks, Set<BlockNode> containedBlocks, boolean addTopBlock) static @Nullable BlockNodeBlockUtils.getBottomCommonPredecessor(MethodNode mth, List<BlockNode> blocks, Set<BlockNode> containedBlocks, boolean addTopBlock) static @Nullable BlockNodeBlockUtils.getCommonDominator(MethodNode mth, List<BlockNode> blocks) Search the lowest common ancestor in dominator tree for input set.static @Nullable BlockNodeBlockUtils.getPathCross(MethodNode mth, Collection<BlockNode> blocks) Return common cross block for input set.static BlockNodeBlockUtils.getTopBlock(List<BlockNode> blocks) static @Nullable BlockNodeBlockUtils.getTopCommonSuccessor(MethodNode mth, List<BlockNode> blocks, boolean cleanOnly) static @Nullable BlockNodeBlockUtils.getTopCommonSuccessor(MethodNode mth, List<BlockNode> blocks, boolean cleanOnly, boolean addTopBlock) BlockUtils.internalCollectPathUntil(BlockNode from, BlockNode until, BitSet visited, boolean clean, Predicate<BlockNode> pred) Traverse succcessors until a node is found, collecting the path to the nodestatic booleanBlockUtils.isAllBlocksEmpty(List<BlockNode> blocks) static booleanBlockUtils.isAllPathExists(Collection<BlockNode> startBlocks, BlockNode end) Check if exist path from every startBlocks to endstatic booleanBlockUtils.isPathExists(BlockNode start, BlockNode end, Predicate<BlockNode> pred) static BlockNodeBlockUtils.selectOther(BlockNode node, List<BlockNode> blocks) static BlockNodeBlockUtils.selectOtherSafe(BlockNode node, List<BlockNode> blocks) private static voidBlockUtils.traversePredecessors(BlockNode start, BitSet visited, Predicate<BlockNode> visitor) Up BFS.private static booleanBlockUtils.traverseSuccessorsUntil(BlockNode from, BlockNode until, BitSet visited, boolean clean, Predicate<BlockNode> pred) Traverse succcessors until a node is foundstatic voidRegionUtils.visitBlockNodes(MethodNode mth, IContainer container, Consumer<BlockNode> visitor) static voidBlockUtils.visitBlocksOnEmptyPath(BlockNode start, Consumer<BlockNode> visitor) static voidBlockUtils.visitBlocksOnEmptyPath(BlockNode start, Consumer<BlockNode> visitor, boolean reverse) static booleanBlockUtils.visitBlocksOnPath(MethodNode mth, BlockNode start, BlockNode end, Consumer<BlockNode> visitor) Visit blocks on any path from start to end.private static voidBlockUtils.visitDFS(MethodNode mth, BlockNode startBlock, Function<BlockNode, List<BlockNode>> nextFunc, Consumer<BlockNode> visitor) private static voidBlockUtils.visitDFS(MethodNode mth, BlockNode startBlock, Function<BlockNode, List<BlockNode>> nextFunc, Consumer<BlockNode> visitor) private static voidBlockUtils.visitDFS(MethodNode mth, BlockNode startBlock, Function<BlockNode, List<BlockNode>> nextFunc, Consumer<BlockNode> visitor) static voidBlockUtils.visitDFS(MethodNode mth, Consumer<BlockNode> visitor) static voidBlockUtils.visitPredecessorsUntil(MethodNode mth, BlockNode start, Predicate<BlockNode> visitor) static voidBlockUtils.visitReverseDFS(MethodNode mth, Consumer<BlockNode> visitor) static voidBlockUtils.visitSinglePath(BlockNode startBlock, Consumer<BlockNode> visitor) Visit blocks on path without branching or merging paths.Constructors in jadx.core.utils with parameters of type BlockNode -
Uses of BlockNode in jadx.core.utils.blocks
Fields in jadx.core.utils.blocks declared as BlockNodeModifier and TypeFieldDescriptionprivate final BlockNodeBlockPair.firstprivate final BlockNodeBlockPair.secondFields in jadx.core.utils.blocks with type parameters of type BlockNodeModifier and TypeFieldDescriptionBlockSet.BlockSetIterator.blocksDFSIteration.nextFuncDFSIteration.nextFuncDFSIteration.queueMethods in jadx.core.utils.blocks that return BlockNodeModifier and TypeMethodDescriptionBlockPair.getFirst()BlockSet.getFirst()@Nullable BlockNodeBlockSet.getOne()BlockPair.getSecond()BlockSet.BlockSetIterator.next()@Nullable BlockNodeDFSIteration.next()Methods in jadx.core.utils.blocks that return types with arguments of type BlockNodeMethods in jadx.core.utils.blocks with parameters of type BlockNodeMethod parameters in jadx.core.utils.blocks with type arguments of type BlockNodeModifier and TypeMethodDescriptionvoidBlockSet.addAll(Collection<BlockNode> blocks) booleanBlockSet.containsAll(List<BlockNode> blocks) voidstatic BlockSetBlockSet.from(MethodNode mth, Collection<BlockNode> blocks) booleanBlockSet.intersects(List<BlockNode> blocks) voidBlockSet.remove(Collection<BlockNode> blocks) Constructors in jadx.core.utils.blocks with parameters of type BlockNodeModifierConstructorDescriptionDFSIteration(MethodNode mth, BlockNode startBlock, Function<BlockNode, List<BlockNode>> next) Constructor parameters in jadx.core.utils.blocks with type arguments of type BlockNodeModifierConstructorDescriptionBlockSetIterator(BitSet bs, int size, List<BlockNode> blocks) DFSIteration(MethodNode mth, BlockNode startBlock, Function<BlockNode, List<BlockNode>> next) DFSIteration(MethodNode mth, BlockNode startBlock, Function<BlockNode, List<BlockNode>> next)