Uses of Class
jadx.core.dex.nodes.MethodNode
Packages that use MethodNode
Package
Description
-
Uses of MethodNode in jadx.analysis.callgraph
Fields in jadx.analysis.callgraph declared as MethodNodeMethods in jadx.analysis.callgraph that return MethodNodeMethods in jadx.analysis.callgraph with parameters of type MethodNodeModifier and TypeMethodDescriptionprivate static CallGraphNodeCallGraphBuilder.getCallGraphNode(MethodNode mth, Map<MethodInfo, CallGraphNode> nodes, AtomicInteger nodeId) Constructors in jadx.analysis.callgraph with parameters of type MethodNodeModifierConstructorDescriptionCallGraphNode(int id, MethodInfo mthInfo, @Nullable MethodNode mthNode) CallGraphNode(int id, MethodNode mthNode) -
Uses of MethodNode in jadx.analysis.callgraph.api
Methods in jadx.analysis.callgraph.api that return MethodNode -
Uses of MethodNode in jadx.api
Fields in jadx.api declared as MethodNodeMethods in jadx.api that return MethodNodeMethods in jadx.api with parameters of type MethodNodeModifier and TypeMethodDescription(package private) JavaMethodJadxDecompiler.convertMethodNode(MethodNode mth) Constructors in jadx.api with parameters of type MethodNode -
Uses of MethodNode in jadx.api.deobf
Methods in jadx.api.deobf with parameters of type MethodNodeModifier and TypeMethodDescriptionIDeobfCondition.check(MethodNode mth) IAliasProvider.forMethod(MethodNode mth) booleanIRenameCondition.shouldRename(MethodNode mth) -
Uses of MethodNode in jadx.api.deobf.impl
Methods in jadx.api.deobf.impl with parameters of type MethodNodeModifier and TypeMethodDescriptionbooleanAlwaysRename.shouldRename(MethodNode mth) booleanAnyRenameCondition.shouldRename(MethodNode mth) booleanCombineDeobfConditions.shouldRename(MethodNode mth) -
Uses of MethodNode in jadx.api.impl.passes
Methods in jadx.api.impl.passes with parameters of type MethodNode -
Uses of MethodNode in jadx.api.metadata.annotations
Fields in jadx.api.metadata.annotations declared as MethodNodeMethods in jadx.api.metadata.annotations that return MethodNodeMethods in jadx.api.metadata.annotations with parameters of type MethodNodeModifier and TypeMethodDescriptionstatic @Nullable VarNodeVarNode.get(MethodNode mth, CodeVar codeVar) static @Nullable VarNodeVarNode.get(MethodNode mth, RegisterArg reg) static @Nullable VarNodeVarNode.get(MethodNode mth, SSAVar ssaVar) static @Nullable ICodeAnnotationVarNode.getRef(MethodNode mth, RegisterArg reg) Constructors in jadx.api.metadata.annotations with parameters of type MethodNodeModifierConstructorDescriptionVarNode(MethodNode mth, int reg, int ssa, ArgType type, String name) protectedVarNode(MethodNode mth, SSAVar ssaVar) -
Uses of MethodNode in jadx.api.plugins.pass.types
Methods in jadx.api.plugins.pass.types with parameters of type MethodNode -
Uses of MethodNode in jadx.api.usage
Methods in jadx.api.usage with parameters of type MethodNodeModifier and TypeMethodDescriptionvoidIUsageInfoVisitor.visitIsSelfCall(MethodNode mth, boolean isSelfCall) voidIUsageInfoVisitor.visitMethodsUsage(MethodNode mth, List<MethodNode> methods) voidIUsageInfoVisitor.visitMethodsUses(MethodNode mth, List<MethodNode> methods) voidIUsageInfoVisitor.visitUnresolvedMethodsUsage(MethodNode mth, List<MethodInfo> methods) Method parameters in jadx.api.usage with type arguments of type MethodNodeModifier and TypeMethodDescriptionvoidIUsageInfoVisitor.visitClassUseInMethods(ClassNode cls, List<MethodNode> methods) voidIUsageInfoVisitor.visitFieldsUsage(FieldNode fld, List<MethodNode> methods) voidIUsageInfoVisitor.visitMethodsUsage(MethodNode mth, List<MethodNode> methods) voidIUsageInfoVisitor.visitMethodsUses(MethodNode mth, List<MethodNode> methods) -
Uses of MethodNode in jadx.api.utils
Methods in jadx.api.utils with parameters of type MethodNodeModifier and TypeMethodDescriptionstatic StringCodeUtils.extractMethodCode(MethodNode mth, ICodeInfo codeInfo) Cut method code (including comments and annotations) from class code.static intCodeUtils.getMethodEnd(MethodNode mth, ICodeInfo codeInfo) Search method end position in provided class code info.private static intCodeUtils.getMethodStart(MethodNode mth, ICodeInfo codeInfo) Search first empty line before method definition to include comments and annotations -
Uses of MethodNode in jadx.core
Methods in jadx.core with parameters of type MethodNodeModifier and TypeMethodDescriptionbooleanProcessClass.processMethodToVisitor(MethodNode mth, IDexTreeVisitor lastPassToProcess) booleanProcessClass.processMethodUntilVisitor(MethodNode mth, String visitorName, boolean includeVisitor) -
Uses of MethodNode in jadx.core.clsp
Methods in jadx.core.clsp with parameters of type MethodNodeModifier and TypeMethodDescriptionprivate voidClsSet.processMethodDetails(MethodNode mth, List<ClspMethod> methods) -
Uses of MethodNode in jadx.core.codegen
Fields in jadx.core.codegen declared as MethodNodeModifier and TypeFieldDescriptionprotected final MethodNodeInsnGen.mthprivate final MethodNodeMethodGen.mthprivate final MethodNodeNameGen.mthprivate final MethodNodeSimpleModeHelper.mthMethods in jadx.core.codegen that return MethodNodeModifier and TypeMethodDescriptionprivate MethodNodeMethodGen.getMethodForDefinition()MethodGen.getMethodNode()Methods in jadx.core.codegen with parameters of type MethodNodeModifier and TypeMethodDescriptionstatic voidMethodGen.addFallbackInsns(ICodeWriter code, MethodNode mth, InsnNode[] insnArr, MethodGen.FallbackOption option) voidAnnotationGen.addForMethod(ICodeWriter code, MethodNode mth) private voidClassGen.addMethod(ICodeWriter code, MethodNode mth) voidClassGen.addMethodCode(ICodeWriter code, MethodNode mth) (package private) static voidClassGen.addMthUsageInfo(ICodeWriter code, MethodNode mth) private booleanInsnGen.addOuterClassInstance(ConstructorInsn insn, ICodeWriter code, MethodNode callMth) private voidMethodGen.addOverrideAnnotation(ICodeWriter code, MethodNode mth) voidAnnotationGen.addThrows(MethodNode mth, ICodeWriter code) (package private) voidInsnGen.generateMethodArguments(ICodeWriter code, BaseInvokeNode insn, int startArgNum, @Nullable MethodNode mthNode) AnnotationGen.getAnnotationDefaultValue(MethodNode mth) private intClassGen.getEnumCtrSkipArgsCount(@Nullable MethodNode callMth) static MethodGenMethodGen.getFallbackMethodGen(MethodNode mth) Return fallback variant of method codegenprivate voidInsnGen.makeInlinedLambdaMethod(ICodeWriter code, InvokeCustomNode customNode, MethodNode callMth) private InsnGenClassGen.makeInsnGen(MethodNode mth) private voidInsnGen.makeInvokeCustomRaw(InvokeCustomRawNode insn, @Nullable MethodNode callMthNode, ICodeWriter code) private booleanClassGen.skipMethod(MethodNode mth) Additional checks for inlined methodsConstructors in jadx.core.codegen with parameters of type MethodNodeModifierConstructorDescriptionMethodGen(ClassGen classGen, MethodNode mth) NameGen(MethodNode mth, ClassGen classGen) -
Uses of MethodNode in jadx.core.codegen.json
Methods in jadx.core.codegen.json with parameters of type MethodNodeModifier and TypeMethodDescriptionprivate List<JsonCodeLine> JsonCodeGen.fillMthCode(MethodNode mth, MethodGen mthGen) -
Uses of MethodNode in jadx.core.deobf
Methods in jadx.core.deobf with parameters of type MethodNode -
Uses of MethodNode in jadx.core.deobf.conditions
Methods in jadx.core.deobf.conditions with parameters of type MethodNodeModifier and TypeMethodDescriptionAbstractDeobfCondition.check(MethodNode mth) BaseDeobfCondition.check(MethodNode mth) DeobfLengthCondition.check(MethodNode mth) -
Uses of MethodNode in jadx.core.dex.attributes
Fields in jadx.core.dex.attributes declared as MethodNodeMethods in jadx.core.dex.attributes that return MethodNodeConstructors in jadx.core.dex.attributes with parameters of type MethodNode -
Uses of MethodNode in jadx.core.dex.attributes.nodes
Fields in jadx.core.dex.attributes.nodes declared as MethodNodeModifier and TypeFieldDescriptionprivate final MethodNodeMethodBridgeAttr.bridgeMthprivate final MethodNodeMethodReplaceAttr.replaceMthprivate MethodNodeEnumClassAttr.staticMethodFields in jadx.core.dex.attributes.nodes with type parameters of type MethodNodeModifier and TypeFieldDescriptionprivate SortedSet<MethodNode> MethodOverrideAttr.relatedMthNodesAll method nodes from override hierarchy.Methods in jadx.core.dex.attributes.nodes that return MethodNodeModifier and TypeMethodDescriptionMethodBridgeAttr.getBridgeMth()MethodReplaceAttr.getReplaceMth()EnumClassAttr.getStaticMethod()Methods in jadx.core.dex.attributes.nodes that return types with arguments of type MethodNodeMethods in jadx.core.dex.attributes.nodes with parameters of type MethodNodeModifier and TypeMethodDescriptionstatic voidCodeFeaturesAttr.add(MethodNode mth, CodeFeaturesAttr.CodeFeature feature) static booleanCodeFeaturesAttr.contains(MethodNode mth, CodeFeaturesAttr.CodeFeature feature) static MethodInlineAttrMethodInlineAttr.inlineNotNeeded(MethodNode mth) static booleanSkipMethodArgsAttr.isSkip(@Nullable MethodNode mth, int argNum) static MethodInlineAttrMethodInlineAttr.markForInline(MethodNode mth, InsnNode replaceInsn) voidEnumClassAttr.setStaticMethod(MethodNode staticMethod) static voidSkipMethodArgsAttr.skipArg(MethodNode mth, int argNum) static voidSkipMethodArgsAttr.skipArg(MethodNode mth, RegisterArg arg) Method parameters in jadx.core.dex.attributes.nodes with type arguments of type MethodNodeModifier and TypeMethodDescriptionvoidMethodOverrideAttr.setRelatedMthNodes(SortedSet<MethodNode> relatedMthNodes) Constructors in jadx.core.dex.attributes.nodes with parameters of type MethodNodeModifierConstructorDescriptionMethodBridgeAttr(MethodNode bridgeMth) MethodReplaceAttr(MethodNode replaceMth) privateConstructor parameters in jadx.core.dex.attributes.nodes with type arguments of type MethodNodeModifierConstructorDescriptionMethodOverrideAttr(List<IMethodDetails> overrideList, SortedSet<MethodNode> relatedMthNodes, Set<IMethodDetails> baseMethods) -
Uses of MethodNode in jadx.core.dex.instructions
Fields in jadx.core.dex.instructions declared as MethodNodeMethods in jadx.core.dex.instructions with parameters of type MethodNodeModifier and TypeMethodDescriptionstatic InsnNodeInvokeCustomBuilder.build(MethodNode mth, InsnData insn, boolean isRange) Constructors in jadx.core.dex.instructions with parameters of type MethodNode -
Uses of MethodNode in jadx.core.dex.instructions.args
Methods in jadx.core.dex.instructions.args with parameters of type MethodNodeModifier and TypeMethodDescriptionRegisterArg.duplicateWithNewSSAVar(MethodNode mth) SSAVar.getDetailedVarInfo(MethodNode mth) @Nullable("if wrap failed") InsnArgInsnArg.wrapInstruction(MethodNode mth, InsnNode insn) @Nullable("if wrap failed") InsnArgInsnArg.wrapInstruction(MethodNode mth, InsnNode insn, boolean unbind) -
Uses of MethodNode in jadx.core.dex.instructions.invokedynamic
Methods in jadx.core.dex.instructions.invokedynamic with parameters of type MethodNodeModifier and TypeMethodDescriptionstatic InsnNodeCustomRawCall.build(MethodNode mth, InsnData insn, boolean isRange, List<EncodedValue> values) CustomRawCall.buildArgs(MethodNode mth, List<EncodedValue> values) static InvokeCustomNodeCustomLambdaCall.buildLambdaMethodCall(MethodNode mth, InsnData insn, boolean isRange, List<EncodedValue> values) private static @NotNull InvokeCustomNodeCustomLambdaCall.buildMethodCall(MethodNode mth, InsnData insn, boolean isRange, List<EncodedValue> values, IMethodHandle callMthHandle) -
Uses of MethodNode in jadx.core.dex.instructions.mods
Methods in jadx.core.dex.instructions.mods with parameters of type MethodNodeModifier and TypeMethodDescriptionprivate ConstructorInsn.CallTypeConstructorInsn.getCallType(MethodNode mth, ClassInfo classType, InsnArg instanceArg) Constructors in jadx.core.dex.instructions.mods with parameters of type MethodNodeModifierConstructorDescriptionConstructorInsn(MethodNode mth, InvokeNode invoke) ConstructorInsn(MethodNode mth, InvokeNode invoke, MethodInfo callMth) -
Uses of MethodNode in jadx.core.dex.nodes
Fields in jadx.core.dex.nodes with type parameters of type MethodNodeModifier and TypeFieldDescriptionprivate List<MethodNode> ClassNode.methodsprivate Set<MethodNode> MethodNode.methodsUsedprivate Map<MethodInfo, MethodNode> ClassNode.mthInfoMapprivate List<MethodNode> FieldNode.useInprivate List<MethodNode> MethodNode.useInprivate List<MethodNode> ClassNode.useInMthMethods which uses this class (by instructions only, definition is excluded)Methods in jadx.core.dex.nodes that return MethodNodeModifier and TypeMethodDescriptionstatic MethodNodeMethodNode.build(ClassNode classNode, IMethodData methodData) private @Nullable MethodNodeRootNode.deepResolveMethod(@NotNull ClassNode cls, String signature) @Nullable MethodNodeClassNode.getClassInitMth()@Nullable MethodNodeClassNode.getDefaultConstructor()@NotNull MethodNodeRootNode.resolveDirectMethod(String rawClsName, String mthShortId) @Nullable MethodNodeRootNode.resolveMethod(@NotNull MethodInfo mth) ClassNode.searchMethod(MethodInfo mth) ClassNode.searchMethodByShortId(String shortId) @Nullable MethodNodeClassNode.searchMethodByShortName(String name) Return first method by original short name Note: methods are not unique by name (class can have several methods with same name but different signature)Methods in jadx.core.dex.nodes that return types with arguments of type MethodNodeModifier and TypeMethodDescriptionClassNode.getMethods()MethodNode.getUsed()FieldNode.getUseIn()MethodNode.getUseIn()ClassNode.getUseInMth()Methods in jadx.core.dex.nodes with parameters of type MethodNodeModifier and TypeMethodDescriptionvoidMethodNode.addUsed(MethodNode used) voidFieldNode.addUseIn(MethodNode mth) intMethodNode.compareTo(@NotNull MethodNode o) InsnNode.copyWithNewSsaVar(MethodNode mth) SeeInsnNode.copy()Method parameters in jadx.core.dex.nodes with type arguments of type MethodNodeModifier and TypeMethodDescriptionvoidMethodNode.setUsed(List<MethodNode> methodsUsed) voidFieldNode.setUseIn(List<MethodNode> useIn) voidMethodNode.setUseIn(List<MethodNode> useIn) voidClassNode.setUseInMth(List<MethodNode> useInMth) -
Uses of MethodNode in jadx.core.dex.nodes.utils
Methods in jadx.core.dex.nodes.utils that return MethodNodeModifier and TypeMethodDescription@Nullable MethodNodeMethodUtils.resolveMethod(BaseInvokeNode invokeNode) Methods in jadx.core.dex.nodes.utils with parameters of type MethodNodeModifier and TypeMethodDescription@Nullable ArgTypeTypeUtils.checkForUnknownTypeVars(MethodNode mth, ArgType checkType) Search for unknown type vars at current method.TypeUtils.collectKnownTypeVarsAtMethod(MethodNode mth) booleanTypeUtils.containsUnknownTypeVar(MethodNode mth, ArgType type) TypeUtils.expandTypeVariables(MethodNode mth, ArgType type) TypeUtils.getKnownTypeVarsAtMethod(MethodNode mth) MethodUtils.getMethodOriginDeclClass(MethodNode mth) @Nullable IMethodDetailsMethodUtils.getOverrideBaseMth(MethodNode mth) -
Uses of MethodNode in jadx.core.dex.regions.conditions
Fields in jadx.core.dex.regions.conditions declared as MethodNodeMethods in jadx.core.dex.regions.conditions that return MethodNodeConstructors in jadx.core.dex.regions.conditions with parameters of type MethodNodeModifierConstructorDescriptionIfInfo(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) -
Uses of MethodNode in jadx.core.dex.trycatch
Methods in jadx.core.dex.trycatch with parameters of type MethodNodeModifier and TypeMethodDescriptionbooleanExceptionHandler.addCatchType(MethodNode mth, @Nullable ClassInfo type) Add exception type to catch blockvoidExceptionHandler.addCatchTypes(MethodNode mth, Collection<ClassInfo> types) static ExceptionHandlerExceptionHandler.build(MethodNode mth, int addr, @Nullable ClassInfo type) TryCatchBlockAttr.getExecutionScopeGroups(MethodNode mth) 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) Constructors in jadx.core.dex.trycatch with parameters of type MethodNodeModifierConstructorDescriptionTryEdgeScopeGroupMap(MethodNode mth, TryCatchBlockAttr tryCatch, int initialCapacity) -
Uses of MethodNode in jadx.core.dex.visitors
Fields in jadx.core.dex.visitors declared as MethodNodeModifier and TypeFieldDescription(package private) final MethodNodeEnumVisitor.EnumData.classInitMth(package private) final MethodNodeExtractFieldInit.ConstructorInitInfo.constructorMthFields in jadx.core.dex.visitors with type parameters of type MethodNodeMethods in jadx.core.dex.visitors that return MethodNodeModifier and TypeMethodDescriptionprivate @Nullable MethodNodeMethodThrowsVisitor.searchOverriddenMethod(ClassNode cls, MethodInfo mth, String signature) private @Nullable MethodNodeOverrideMethodVisitor.searchOverriddenMethod(ClassNode cls, MethodNode mth, String signature) Methods in jadx.core.dex.visitors that return types with arguments of type MethodNodeModifier and TypeMethodDescriptionprivate static List<MethodNode> ExtractFieldInit.getConstructorsList(ClassNode cls) private @NotNull List<MethodNode> OverrideMethodVisitor.getMethodNodes(MethodNode mth, List<IMethodDetails> overrideList) Methods in jadx.core.dex.visitors with parameters of type MethodNodeModifier and TypeMethodDescriptionprivate static voidExtractFieldInit.addFieldInitAttr(MethodNode mth, FieldNode field, IndexInsnNode putInsn) static voidModVisitor.addFieldUsage(IFieldInfoRef fieldData, MethodNode mth) private static @Nullable MethodInlineAttrMarkMethodsForInline.addInlineAttr(MethodNode mth, InsnNode insn, boolean isCopy) private static voidProcessInstructionsVisitor.addJump(MethodNode mth, InsnNode[] insnByOffset, int offset, int target) private voidPrepareForCodeGen.addNullCasts(MethodNode mth, BlockNode block) private MethodOverrideAttrOverrideMethodVisitor.applyOverrideAttr(MethodNode mth, List<IMethodDetails> overrideList, Set<IMethodDetails> baseMethods, boolean update) private voidGenericTypesVisitor.attachGenericTypesInfo(MethodNode mth, ConstructorInsn insn) private static booleanProcessAnonymous.badMethodUsage(ClassNode cls, MethodNode useMth, AccessInfo accessFlags) private @Nullable MethodOverrideAttrOverrideMethodVisitor.buildOverrideAttr(MethodNode mth, List<IMethodDetails> overrideList, Set<IMethodDetails> baseMethods, @Nullable MethodOverrideAttr attr) private static booleanConstInlineVisitor.canInline(MethodNode mth, RegisterArg arg) private static booleanProcessMethodsForInline.canInline(MethodNode mth) private static booleanProcessMethodsForInline.canInlineMethod(MethodNode mth, AccessInfo accessFlags) private static booleanConstructorVisitor.canRemoveConstructor(MethodNode mth, ConstructorInsn co) private booleanCheckCode.canRemoveMethod(MethodNode mth) SignatureProcessor.checkArgTypes(MethodNode mth, SignatureParser sp, List<ArgType> parsedArgTypes) private static booleanModVisitor.checkArrSizes(MethodNode mth, NewArrayNode newArrInsn, FillArrayInsn fillArrInsn) private voidPrepareForCodeGen.checkEncodedValue(MethodNode mth, EncodedValue encodedValue) private static booleanProcessAnonymous.checkForCommonFieldInit(MethodNode ctrMth) Checks: + all in constructors + all usage in one class - same field put (ignored: methods not loaded yet)private static booleanProcessAnonymous.checkForInstanceFieldUsage(ClassNode cls, MethodNode ctr) private static voidConstInlineVisitor.checkInsn(MethodNode mth, InsnNode insn, List<InsnNode> toRemove) private voidMethodThrowsVisitor.checkInsn(MethodNode mth, InsnNode insn, Set<String> excludedExceptions, boolean skipExceptions) voidCheckCode.checkInstructions(MethodNode mth) private voidOverrideMethodVisitor.checkMethodSignatureCollisions(MethodNode mth, boolean rename) private static booleanProcessAnonymous.checkMethodsUsage(ClassNode cls, MethodNode ctr, MethodNode ctrUseMth) private static booleanClassModifier.checkSyntheticWrapper(MethodNode mth, InsnNode insn) private static AnonymousClassAttr.InlineTypeProcessAnonymous.checkUsage(ClassNode cls, MethodNode ctr) Checks: - class have only one constructor which used only once (allow common code for field init) - methods or fields not used outside (allow only nested inner classes with synthetic usage) - if constructor used only in class init check if possible inline by instance fieldprivate static List<ExtractFieldInit.FieldInitInfo> ExtractFieldInit.collectFieldsInit(ClassNode cls, MethodNode mth, InsnType putType) private voidPrepareForCodeGen.collectFieldsUsageInAnnotations(MethodNode mth, AttrNode attrNode) SimplifyVisitor.collectUseChain(MethodNode mth, InvokeNode insn, RegisterArg instanceArg) private static ArithNodeSimplifyVisitor.convertFieldArith(MethodNode mth, InsnNode insn) Convert field arith operation to arith instruction (IPUT (ARITH (IGET, lit)) -> ARITH ((IGET))= lit)) private static InsnNodeSimplifyVisitor.convertInvoke(MethodNode mth, InvokeNode insn) Simplify chains of calls to StringBuilder#append() plus constructor of StringBuilder.private static InsnNodeSimplifyVisitor.convertStringBuilderChain(MethodNode mth, InvokeNode toStrInsn, List<InsnNode> chain) private static List<ExceptionHandler> AttachTryCatchVisitor.convertToHandlers(MethodNode mth, ICatch catchBlock, InsnNode[] insnByOffset) private booleanAdjustForIfMergeVisitor.couldMerge(MethodNode mth, BlockNode pred, BlockNode blk, BlockNode succ) private static @Nullable ExceptionHandlerAttachTryCatchVisitor.createHandler(MethodNode mth, InsnNode[] insnByOffset, int handlerOffset, @Nullable ClassInfo type) private static booleanMoveInlineVisitor.deleteMove(MethodNode mth, InsnNode move) private voidAdjustForIfMergeVisitor.doMove(MethodNode mth, BlockNode target, BlockNode bottomIf, List<InsnNode> movableInstructions) MethodInvokeVisitor.expandTypes(MethodNode parentMth, IMethodDetails methodDetails, List<ArgType> castTypes) Use generified types if availableprivate static voidProcessMethodsForInline.fixClassDependencies(MethodNode mth) private static voidShadowFieldVisitor.fixFieldAccess(MethodNode mth, FieldInfo fieldInfo, ShadowFieldVisitor.FieldFixType fieldFixType, InsnArg arg) private static voidModVisitor.fixFieldUsage(MethodNode mth, IndexInsnNode insn) If field is not visible from use site => cast to origin classprivate booleanOverrideMethodVisitor.fixMethodArgTypes(MethodNode mth, IMethodDetails baseMth, OverrideMethodVisitor.SuperTypesData superData) private booleanOverrideMethodVisitor.fixMethodReturnType(MethodNode mth, IMethodDetails baseMth, OverrideMethodVisitor.SuperTypesData superData) private static voidModVisitor.fixPrimitiveCast(MethodNode mth, BlockNode block, int i, InsnNode insn) private static voidShadowFieldVisitor.fixShadowFieldAccess(MethodNode mth, Map<String, ShadowFieldVisitor.FieldFixInfo> fixInfoMap) private voidEnumVisitor.fixValuesAccess(MethodNode mth, FieldInfo valuesFieldInfo, ArgType clsType, @Nullable MethodNode valuesMethod) private static booleanMarkMethodsForInline.fixVisibilityOfInlineCode(MethodNode mth, InsnNode insn) AnonymousClassVisitor.getArgsToFieldsMapping(MethodNode mth, List<InsnNode> usedInsns) private ArgTypeMethodInvokeVisitor.getCallClassFromInvoke(MethodNode parentMth, BaseInvokeNode invokeInsn, MethodInfo callMth) private static InsnNodeAttachCommentsVisitor.getInsnByOffset(MethodNode mth, int offset) private @NotNull List<MethodNode> OverrideMethodVisitor.getMethodNodes(MethodNode mth, List<IMethodDetails> overrideList) static voidInitCodeVariables.initCodeVar(MethodNode mth, RegisterArg regArg) private static voidInitCodeVariables.initCodeVars(MethodNode mth) private static voidProcessInstructionsVisitor.initJumps(MethodNode mth, InsnNode[] insnByOffset) private static voidAttachTryCatchVisitor.initTryCatches(MethodNode mth, InsnNode[] insnByOffset, List<ITry> tries) 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 @Nullable MethodInlineAttrMarkMethodsForInline.inlineMth(MethodNode mth) private static RegisterArgConstructorVisitor.insertPhiInsn(MethodNode mth, BlockNode curBlock, RegisterArg instArg, ConstructorInsn otherCtr) private booleanInlineMethods.isAssignNeeded(InsnNode inlineInsn, InvokeNode parentInsn, MethodNode callMthNode) private booleanEnumVisitor.isDefaultConstructor(MethodNode mth, String shortId) private static booleanModVisitor.isFieldVisibleInMethod(FieldNode field, MethodNode mth) private booleanOverrideMethodVisitor.isMethodVisibleInCls(MethodNode superMth, ClassNode cls) NOTE: Simplified version of method from ModVisitor.isFieldVisibleInMethodprivate static booleanClassModifier.isNonDefaultConstructorExists(MethodNode defCtor) private static booleanMarkMethodsForInline.isSyntheticAccessPattern(MethodNode mth, InsnNode firstInsn, InsnNode retInsn) private booleanMethodThrowsVisitor.isThrowsRequired(MethodNode mth, ArgType type) private booleanEnumVisitor.isValuesMethod(MethodNode mth, ArgType clsType) private static voidModVisitor.iterativeRemoveStep(MethodNode mth) private static InsnNodeModVisitor.makeFilledArrayInsn(MethodNode mth, NewArrayNode newArrayNode, FillArrayInsn insn) private static StringOverrideMethodVisitor.makeNewAlias(MethodNode mth) private voidEnumVisitor.markArgsForSkip(MethodNode mth) private static voidClassModifier.modifySyntheticMethod(ClassNode cls, MethodNode mth, InsnNode insn, List<RegisterArg> args) Remove synthetic constructor and redirect calls to existing constructorprivate voidPrepareForCodeGen.moveConstructorInConstructor(MethodNode mth) Check that 'super' or 'this' call in constructor is a first instruction.static voidMoveInlineVisitor.moveInline(MethodNode mth) private voidSignatureProcessor.parseMethodSignature(MethodNode mth) static voidConstInlineVisitor.process(MethodNode mth) static @Nullable MethodInlineAttrMarkMethodsForInline.process(MethodNode mth) private static voidAnonymousClassVisitor.processAnonymousConstructor(MethodNode mth) private static voidModVisitor.processAnonymousConstructor(MethodNode mth, ConstructorInsn co) For args in anonymous constructor invoke apply: - forbid inline into constructor call - make variables final (compiler require this implicitly)private static voidModVisitor.processArith(MethodNode mth, ClassNode parentClass, ArithNode arithNode) private static InsnNodeSimplifyVisitor.processCast(MethodNode mth, IndexInsnNode castInsn, @Nullable InsnNode parentInsn) private static @Nullable ConstructorInsnConstructorVisitor.processConstructor(MethodNode mth, ConstructorInsn co) Replace call of synthetic constructor with all 'null' args to a non-synthetic or default constructor if possible.private voidEnumVisitor.processConstructorInsn(EnumVisitor.EnumData data, EnumClassAttr.EnumField enumField, MethodNode classInitMth) private static voidAttachCommentsVisitor.processCustomAttach(MethodNode mth, IJavaCodeRef codeRef, ICodeComment comment) private static booleanFixSwitchOverEnum.processDirectEnumSwitch(MethodNode mth, SwitchInsn swInsn, InvokeNode invInsn, InsnArg arg) private static booleanFixSwitchOverEnum.processEnumSwitch(MethodNode mth, SwitchInsn insn) private static booleanReplaceNewArray.processInsn(MethodNode mth, List<InsnNode> instructions, int i, InsnRemover remover) private static voidShadowFieldVisitor.processInsn(MethodNode mth, InsnNode insn, Map<String, ShadowFieldVisitor.FieldFixInfo> fixInfoMap) private voidMethodThrowsVisitor.processInstructions(MethodNode mth) private static booleanConstructorVisitor.processInvoke(MethodNode mth, BlockNode block, int indexInBlock, InsnRemover remover) private voidMethodInvokeVisitor.processInvoke(MethodNode parentMth, BaseInvokeNode invokeInsn) private voidInlineMethods.processInvokeInsn(MethodNode mth, BlockNode block, InvokeNode insn) private static booleanMoveInlineVisitor.processMove(MethodNode mth, InsnNode move) private static voidModVisitor.processMoveException(MethodNode mth, BlockNode block, InsnNode insn, InsnRemover remover) private voidOverrideMethodVisitor.processMth(MethodNode mth, OverrideMethodVisitor.SuperTypesData superData) private static booleanReplaceNewArray.processNewArray(MethodNode mth, NewArrayNode newArrayInsn, List<InsnNode> instructions, InsnRemover remover) private voidMethodInvokeVisitor.processOverloaded(MethodNode parentMth, BaseInvokeNode invokeInsn, IMethodDetails mthDetails) private MethodOverrideAttrOverrideMethodVisitor.processOverrideMethods(MethodNode mth, OverrideMethodVisitor.SuperTypesData superData) private static booleanFixSwitchOverEnum.processRemappedEnumSwitch(MethodNode mth, SwitchInsn insn, InsnNode wrapInsn, InsnArg arg) private static booleanExtractFieldInit.processStaticFields(ClassNode cls, MethodNode classInitMth) private static InsnNodeConstructorVisitor.removeAssignChain(MethodNode mth, InsnNode insn, InsnRemover remover, InsnType insnType) Remove instructions on 'move' chain until instruction with type 'insnType'private static booleanClassModifier.removeBridgeMethod(ClassNode cls, MethodNode mth) private static voidModVisitor.removeCheckCast(MethodNode mth, BlockNode block, int i, IndexInsnNode insn) private static voidClassModifier.removeEmptyMethods(MethodNode mth) Remove public empty constructors (static or default)private static booleanClassModifier.removeFieldUsageFromConstructor(MethodNode mth, FieldNode field, ClassNode fieldsCls) private static voidModVisitor.removeStep(MethodNode mth, InsnRemover remover) Remove unnecessary instructionsprivate static voidSimplifyVisitor.removeStringBuilderInsns(MethodNode mth, InvokeNode toStrInsn, List<InsnNode> chain) Remove and unbind all instructions with StringBuilderprivate static voidClassModifier.removeSyntheticMethods(MethodNode mth) private static booleanConstInlineVisitor.replaceArg(MethodNode mth, RegisterArg arg, InsnArg constArg, InsnNode constInsn) private voidInlineMethods.replaceClsUsage(MethodNode mth, MethodNode inlinedMth, ClassNode parentClass) private static booleanConstInlineVisitor.replaceConst(MethodNode mth, InsnNode constInsn, InsnArg constArg) private static voidModVisitor.replaceConst(MethodNode mth, ClassNode parentClass, BlockNode block, int i, InsnNode insn) private static InsnArgReplaceNewArray.replaceConstInArg(MethodNode mth, InsnArg valueArg) private static voidModVisitor.replaceConstKeys(MethodNode mth, ClassNode parentClass, SwitchInsn insn) private voidModVisitor.replaceConstsInAnnotationForMethodParamsAttr(ClassNode cls, MethodNode m) private static booleanConstructorVisitor.replaceInvoke(MethodNode mth) private booleanInlineMethods.replaceRegs(MethodNode mth, MethodNode callMth, MethodInlineAttr mia, InvokeNode insn, InsnNode inlCopy) private static voidModVisitor.replaceStep(MethodNode mth, InsnRemover remover) static voidInitCodeVariables.rerun(MethodNode mth) voidDotGraphVisitor.save(File dir, MethodNode mth) MethodInvokeVisitor.searchCastTypes(MethodNode parentMth, IMethodDetails mthDetails, List<IMethodDetails> overloadedMethods, List<ArgType> compilerVarTypes) private @Nullable ConstructorInsnPrepareForCodeGen.searchConstructorCall(MethodNode mth) private @Nullable ConstructorInsnEnumVisitor.searchEnumSuperCtrInsn(MethodNode ctrMth) private @Nullable MethodNodeOverrideMethodVisitor.searchOverriddenMethod(ClassNode cls, MethodNode mth, String signature) private booleanEnumVisitor.simpleValueOfMth(MethodNode mth, ArgType clsType) private voidSimplifyVisitor.simplifyArgs(MethodNode mth, InsnNode insn) private booleanSimplifyVisitor.simplifyBlock(MethodNode mth, BlockNode block) private static voidSimplifyVisitor.simplifyIf(MethodNode mth, IfNode insn) Simplify 'cmp' instruction in if conditionprivate InsnNodeSimplifyVisitor.simplifyInsn(MethodNode mth, InsnNode insn, @Nullable InsnNode parentInsn) private InsnNodeSimplifyVisitor.simplifyStringConstructor(MethodNode mth, ConstructorInsn insn) private static voidSimplifyVisitor.simplifyTernary(MethodNode mth, TernaryInsn insn) Simplify condition in ternary operationprivate ArgTypeOverrideMethodVisitor.updateArgType(MethodNode mth, IMethodDetails baseMth, OverrideMethodVisitor.SuperTypesData superData, int argNum) private booleanOverrideMethodVisitor.updateReturnType(MethodNode mth, IMethodDetails baseMth, OverrideMethodVisitor.SuperTypesData superData) private voidInlineMethods.updateUsageInfo(MethodNode mth, MethodNode inlinedMth, InsnNode insn) private booleanSignatureProcessor.validateAndApplyTypes(MethodNode mth, SignatureParser sp, ArgType retType, List<ArgType> argTypes) private voidPrepareForCodeGen.verifyNullCast(MethodNode mth, InsnArg arg) voidAbstractVisitor.visit(MethodNode mth) voidAdjustForIfMergeVisitor.visit(MethodNode mth) voidApplyVariableNames.visit(MethodNode mth) voidAttachMethodDetails.visit(MethodNode mth) voidAttachTryCatchVisitor.visit(MethodNode mth) voidCheckCode.visit(MethodNode mth) voidConstInlineVisitor.visit(MethodNode mth) voidConstructorVisitor.visit(MethodNode mth) voidDeboxingVisitor.visit(MethodNode mth) static voidDepthTraversal.visit(IDexTreeVisitor visitor, MethodNode mth) voidDotGraphVisitor.visit(MethodNode mth) voidFallbackModeVisitor.visit(MethodNode mth) voidFixSwitchOverEnum.visit(MethodNode mth) voidGenericTypesVisitor.visit(MethodNode mth) voidIDexTreeVisitor.visit(MethodNode mth) Visit methodvoidInitCodeVariables.visit(MethodNode mth) voidInlineMethods.visit(MethodNode mth) voidMarkMethodsForInline.visit(MethodNode mth) voidMethodInvokeVisitor.visit(MethodNode mth) voidMethodThrowsVisitor.visit(MethodNode mth) voidMethodVisitor.visit(MethodNode mth) voidModVisitor.visit(MethodNode mth) voidMoveInlineVisitor.visit(MethodNode mth) voidPrepareForCodeGen.visit(MethodNode mth) voidProcessInstructionsVisitor.visit(MethodNode mth) voidReplaceNewArray.visit(MethodNode mth) voidShadowFieldVisitor.visit(MethodNode mth) voidSimplifyVisitor.visit(MethodNode mth) private voidMethodThrowsVisitor.visitThrows(MethodNode mth, ArgType excType, Set<String> excludedExceptions) Constructors in jadx.core.dex.visitors with parameters of type MethodNodeModifierConstructorDescriptionprivateConstructorInitInfo(MethodNode constructorMth, List<ExtractFieldInit.FieldInitInfo> fieldInits) EnumData(ClassNode cls, MethodNode classInitMth, List<BlockNode> staticBlocks) Constructor parameters in jadx.core.dex.visitors with type arguments of type MethodNode -
Uses of MethodNode in jadx.core.dex.visitors.blocks
Methods in jadx.core.dex.visitors.blocks with parameters of type MethodNodeModifier and TypeMethodDescriptionprivate static voidBlockSplitter.addTempConnectionsForExcHandlers(MethodNode mth, Map<Integer, BlockNode> blocksMap) Connect exception handlers to the throw block.(package private) static BlockNodeBlockSplitter.blockSplitTop(MethodNode mth, BlockNode block) private static voidBlockExceptionHandler.checkForMultiCatch(MethodNode mth, List<TryCatchBlockAttr> tryBlocks) private static voidBlockProcessor.checkForUnreachableBlocks(MethodNode mth) private static booleanBlockProcessor.checkLoops(MethodNode mth, BlockNode block) private static voidBlockProcessor.clearBlocksState(MethodNode mth) private static voidBlockExceptionHandler.clearTryBlocks(MethodNode mth, List<TryCatchBlockAttr> tryBlocks) private static voidFixMultiEntryLoops.colorDFS(MethodNode mth, FixMultiEntryLoops.BlockColor[] colors, BlockNode block) static voidDominatorTree.compute(MethodNode mth) static voidPostDominatorTree.compute(MethodNode mth) static voidDominatorTree.computeDominanceFrontier(MethodNode mth) private static voidBlockProcessor.computeDominators(MethodNode mth) private static voidBlockProcessor.computeUnreachableFromBlock(Set<BlockNode> toRemove, BlockNode block, MethodNode mth) private static voidBlockExceptionHandler.connectExcHandlers(MethodNode mth, List<TryCatchBlockAttr> tryBlocks) Wrap try blocks with top/bottom splitter and connect them to handler block.(package private) static BlockNodeBlockSplitter.connectNewBlock(MethodNode mth, BlockNode block, int offset) BlockSplitter.copyBlocksTree(MethodNode mth, List<BlockNode> blocks) private static booleanBlockProcessor.deduplicateBlockInsns(MethodNode mth, BlockNode block) static voidBlockSplitter.detachMarkedBlocks(MethodNode mth) private static voidFixMultiEntryLoops.detectSpecialEdges(MethodNode mth) 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 voidBlockSplitter.expandMoveMulti(MethodNode mth) private static booleanFixMultiEntryLoops.fixLoop(MethodNode mth, SpecialEdgeAttr backEdge, List<SpecialEdgeAttr> crossEdges) 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 BlockNodeBlockExceptionHandler.getTopSplitterBlock(MethodNode mth, BlockNode top) private static booleanBlockProcessor.independentBlockTreeMod(MethodNode mth) private static voidBlockSplitter.initBlocksInTargetNodes(MethodNode mth) Init 'then' and 'else' blocks for 'if' instruction.private static voidBlockExceptionHandler.initExcHandlers(MethodNode mth) static BlockNodeBlockSplitter.insertBlockBetween(MethodNode mth, BlockNode source, BlockNode target) private static booleanBlockProcessor.insertBlocksForBreak(MethodNode mth, LoopInfo loop) Insert additional blocks for possible 'break' insertionprivate static booleanBlockProcessor.insertBlocksForContinue(MethodNode mth, LoopInfo loop) Insert additional blocks for possible 'continue' insertionprivate static booleanBlockProcessor.insertPreHeader(MethodNode mth, LoopInfo loop) Insert simple path block before loop headerprivate static booleanFixMultiEntryLoops.isEndBlockEntry(MethodNode mth, SpecialEdgeAttr backEdge, List<SpecialEdgeAttr> crossEdges) private static booleanFixMultiEntryLoops.isHeaderSuccessorEntry(MethodNode mth, SpecialEdgeAttr backEdge, List<SpecialEdgeAttr> crossEdges) private static voidBlockProcessor.markLoops(MethodNode mth) private static voidBlockProcessor.mergeConstAndReturnBlocks(MethodNode mth, BlockNode retBlock, BlockNode pred) private static booleanBlockProcessor.mergeConstReturn(MethodNode mth) private static booleanBlockExceptionHandler.mergeMultiCatch(MethodNode mth, TryCatchBlockAttr tryCatch) private static booleanBlockProcessor.modifyBlocksTree(MethodNode mth) private static List<TryCatchBlockAttr> BlockExceptionHandler.prepareTryBlocks(MethodNode mth) static booleanBlockExceptionHandler.process(MethodNode mth) static booleanFixMultiEntryLoops.process(MethodNode mth) static voidResolveJavaJSR.process(MethodNode mth) private static voidResolveJavaJSR.processBlocks(MethodNode mth, BlockNode retBlock, BlockNode startBlock, List<BlockNode> jsrBlocks, List<BlockNode> dupBlocks) private static voidBlockProcessor.processBlocksTree(MethodNode mth) private static voidBlockExceptionHandler.processCatchAttr(MethodNode mth) private static voidBlockProcessor.processNestedLoops(MethodNode mth) private static voidBlockProcessor.registerLoops(MethodNode mth) (package private) static booleanBlockSplitter.removeEmptyDetachedBlocks(MethodNode mth) private static voidBlockExceptionHandler.removeExcHandler(MethodNode mth, ExceptionHandler excHandler) private static voidBlockProcessor.removeFromMethod(Set<BlockNode> toRemove, MethodNode mth) private static voidBlockSplitter.removeInsns(MethodNode mth) private static voidBlockSplitter.removeJumpAttr(MethodNode mth) static voidBlockProcessor.removeMarkedBlocks(MethodNode mth) private static voidBlockExceptionHandler.removeMonitorExitFromExcHandler(MethodNode mth, ExceptionHandler excHandler) static voidBlockProcessor.removeUnreachableBlock(BlockNode blockToRemove, MethodNode mth) private static voidBlockProcessor.removeUnreachableBlocks(MethodNode mth) private static voidBlockExceptionHandler.removeUnusedExcHandlers(MethodNode mth, List<TryCatchBlockAttr> tryBlocks, BlockSet blocks) Remove excHandlers that were not used when connecting.private static booleanResolveJavaJSR.resolve(MethodNode mth) private static voidResolveJavaJSR.resolveForRetBlock(MethodNode mth, BlockNode retBlock) 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) private static voidBlockSplitter.setupExitConnections(MethodNode mth) private static booleanBlockProcessor.simplifyLoopEnd(MethodNode mth, LoopInfo loop) DominatorTree.sortBlocks(MethodNode mth) private static voidBlockExceptionHandler.sortHandlers(MethodNode mth, List<TryCatchBlockAttr> tryBlocks) BlockSplitter.splitBasicBlocks(MethodNode mth) private static booleanBlockProcessor.splitExitBlocks(MethodNode mth) 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) (package private) static BlockNodeBlockSplitter.startNewBlock(MethodNode mth, int offset) static voidBlockProcessor.updateBlocksData(MethodNode mth) Recalculate all additional info attached to blocks:(package private) static voidBlockProcessor.updateCleanSuccessors(MethodNode mth) private static voidBlockProcessor.updateExitBlockConnections(MethodNode mth) voidBlockFinisher.visit(MethodNode mth) voidBlockProcessor.visit(MethodNode mth) voidBlockSplitter.visit(MethodNode mth) private static booleanBlockExceptionHandler.wrapBlocksWithTryCatch(MethodNode mth, TryCatchBlockAttr tryCatchBlock) -
Uses of MethodNode in jadx.core.dex.visitors.debuginfo
Methods in jadx.core.dex.visitors.debuginfo with parameters of type MethodNodeModifier and TypeMethodDescriptionprivate static voidDebugInfoApplyVisitor.applyDebugInfo(MethodNode mth) static booleanDebugInfoApplyVisitor.applyDebugInfo(MethodNode mth, SSAVar ssaVar, ArgType type, String varName) static booleanDebugInfoApplyVisitor.applyDebugInfo(MethodNode mth, SSAVar ssaVar, RegisterArg arg) private voidDebugInfoAttachVisitor.attachDebugInfo(MethodNode mth, List<ILocalVar> localVars, InsnNode[] insnArr) private voidDebugInfoAttachVisitor.attachSourceLines(MethodNode mth, Map<Integer, Integer> lineMapping, InsnNode[] insnArr) private static booleanDebugInfoAttachVisitor.checkSignature(MethodNode mth, ArgType type, ArgType gType) private static voidDebugInfoApplyVisitor.fixLinesForReturn(MethodNode mth) Fix debug info for splitter 'return' instructionsprivate static voidDebugInfoApplyVisitor.fixNamesForPhiInsns(MethodNode mth) static ArgTypeDebugInfoAttachVisitor.getVarType(MethodNode mth, ILocalVar var) private voidDebugInfoAttachVisitor.processDebugInfo(MethodNode mth, IDebugInfo debugInfo) private voidDebugInfoApplyVisitor.processMethodParametersAttribute(MethodNode mth) private static voidDebugInfoApplyVisitor.searchAndApplyVarDebugInfo(MethodNode mth, SSAVar ssaVar) private static voidDebugInfoApplyVisitor.searchDebugInfoByOffset(MethodNode mth, SSAVar ssaVar) private voidDebugInfoAttachVisitor.setMethodSourceLine(MethodNode mth, InsnNode[] insnArr) Set method source line from first instructionvoidDebugInfoApplyVisitor.visit(MethodNode mth) voidDebugInfoAttachVisitor.visit(MethodNode mth) -
Uses of MethodNode in jadx.core.dex.visitors.finaly
Methods in jadx.core.dex.visitors.finaly with parameters of type MethodNodeModifier and TypeMethodDescriptionMarkFinallyVisitor.cutHandlerBlocks(MethodNode mth, MarkFinallyVisitor.TryExtractInfo tryInfo, ExceptionHandler handler) private static booleanMarkFinallyVisitor.extractFinally(MethodNode mth, MarkFinallyVisitor.TryExtractInfo tryInfo) Search and mark common code from 'try' block and 'handlers'.MarkFinallyVisitor.findCommonInsns(MethodNode mth, MarkFinallyVisitor.TryExtractInfo tryInfo) static TryCatchEdgeBlockMapTryCatchEdgeBlockMap.getAllInScope(MethodNode mth, TryCatchBlockAttr tryCatch, TryEdgeScopeGroupMap scopeGroups, ExceptionHandler finallyHandler, Map<BlockNode, List<TryEdge>> scopeTerminusGroups) private static @Nullable MarkFinallyVisitor.TryExtractInfoMarkFinallyVisitor.getTryBlockData(MethodNode mth, TryCatchBlockAttr tryBlock) For a given try block, attempts to calculate try block data.private static booleanMarkFinallyVisitor.processTryBlock(MethodNode mth, MarkFinallyVisitor.TryExtractInfo tryInfo) Processes a try block, attempting to extract a finally by locating common instruction patterns between all try branches.private static voidMarkFinallyVisitor.resetTryBlocks(MethodNode mth, List<TryCatchBlockAttr> tryBlocks) private static voidMarkFinallyVisitor.undoFinallyVisitor(MethodNode mth) Reload method without applying this visitorvoidMarkFinallyVisitor.visit(MethodNode mth) -
Uses of MethodNode in jadx.core.dex.visitors.finaly.traverser.state
Fields in jadx.core.dex.visitors.finaly.traverser.state declared as MethodNodeMethods in jadx.core.dex.visitors.finaly.traverser.state that return MethodNodeConstructors in jadx.core.dex.visitors.finaly.traverser.state with parameters of type MethodNodeModifierConstructorDescriptionTraverserActivePathState(MethodNode mth, SameInstructionsStrategy sameInstructionsStrategy, BlockNode finallyBlockTerminus, BlockNode candidateBlockTerminus, List<BlockNode> finallyBlocks, List<BlockNode> candidateBlocks) Creates a new instance of a traversal active path. -
Uses of MethodNode in jadx.core.dex.visitors.fixaccessmodifiers
Methods in jadx.core.dex.visitors.fixaccessmodifiers with parameters of type MethodNodeModifier and TypeMethodDescriptionprivate voidFixAccessModifiers.fixMethodVisibility(MethodNode mth) voidFixAccessModifiers.visit(MethodNode mth) -
Uses of MethodNode in jadx.core.dex.visitors.gradle
Methods in jadx.core.dex.visitors.gradle with parameters of type MethodNodeModifier and TypeMethodDescriptionvoidNonFinalResIdsVisitor.visit(MethodNode mth) booleanNonFinalResIdsVisitor.visitRegion(MethodNode mth, IRegion region) -
Uses of MethodNode in jadx.core.dex.visitors.kotlin
Methods in jadx.core.dex.visitors.kotlin with parameters of type MethodNodeModifier and TypeMethodDescriptionprivate @Nullable StringProcessKotlinInternals.getConstString(MethodNode mth, InsnNode insn, int arg) private voidProcessKotlinInternals.processInvoke(MethodNode mth, InsnNode insn) private voidProcessKotlinInternals.processMth(MethodNode mth) -
Uses of MethodNode in jadx.core.dex.visitors.regions
Fields in jadx.core.dex.visitors.regions declared as MethodNodeMethods in jadx.core.dex.visitors.regions that return MethodNodeMethods in jadx.core.dex.visitors.regions with parameters of type MethodNodeModifier and TypeMethodDescriptionprivate static booleanLoopRegionVisitor.argInLoop(MethodNode mth, LoopRegion loopRegion, RegisterArg arg) private static booleanLoopRegionVisitor.assignOnlyInLoop(MethodNode mth, LoopRegion loopRegion, RegisterArg arg) private booleanReturnVisitor.ReturnRemoverVisitor.blockNotInLoop(MethodNode mth, BlockNode block) private static booleanProcessTryCatchRegions.checkAndWrap(MethodNode mth, List<TryCatchBlockAttr> tryBlocks, IRegion region) private static LoopTypeLoopRegionVisitor.checkArrayForEach(MethodNode mth, LoopRegion loopRegion, InsnNode initInsn, InsnNode incrInsn, IfCondition condition) private static booleanLoopRegionVisitor.checkForIndexedLoop(MethodNode mth, LoopRegion loopRegion, IfCondition condition) Check for indexed loop.private static booleanLoopRegionVisitor.checkIterableForEach(MethodNode mth, LoopRegion loopRegion, IfCondition condition) private static List<TryCatchBlockAttr> ProcessTryCatchRegions.collectTryCatchBlocks(MethodNode mth) booleanAbstractRegionVisitor.enterRegion(MethodNode mth, IRegion region) booleanCleanRegions.RemoveRegionVisitor.enterRegion(MethodNode mth, IRegion region) booleanDebugRegionCounter.RegionCounterVisitor.enterRegion(MethodNode mth, IRegion region) booleanIfRegionVisitor.ProcessIfRegionVisitor.enterRegion(MethodNode mth, IRegion region) booleanIRegionVisitor.enterRegion(MethodNode mth, IRegion region) booleanLoopRegionVisitor.enterRegion(MethodNode mth, IRegion region) booleanReturnVisitor.ReturnRemoverVisitor.enterRegion(MethodNode mth, IRegion region) booleanSwitchBreakVisitor.BaseSwitchRegionVisitor.enterRegion(MethodNode mth, IRegion region) booleanTernaryMod.enterRegion(MethodNode mth, IRegion region) booleanTracedRegionVisitor.enterRegion(MethodNode mth, IRegion region) private static booleanLoopRegionVisitor.fixIterableType(MethodNode mth, InsnArg iterableArg, RegisterArg iterVar) private static StringCheckRegions.getBlockInsnStr(MethodNode mth, IBlock block) private static booleanIfRegionVisitor.isSimpleExitBlock(MethodNode mth, IContainer container) voidAbstractRegionVisitor.leaveRegion(MethodNode mth, IRegion region) voidDebugRegionCounter.RegionCounterVisitor.leaveRegion(MethodNode mth, IRegion region) voidIRegionVisitor.leaveRegion(MethodNode mth, IRegion region) voidLoopRegionVisitor.leaveRegion(MethodNode mth, IRegion region) voidPostProcessRegions.leaveRegion(MethodNode mth, IRegion region) voidSwitchBreakVisitor.BaseSwitchRegionVisitor.leaveRegion(MethodNode mth, IRegion region) voidSwitchBreakVisitor.IterativeSwitchRegionVisitor.leaveRegion(MethodNode mth, IRegion region) voidTracedRegionVisitor.leaveRegion(MethodNode mth, IRegion region) private static booleanTernaryMod.makeTernaryInsn(MethodNode mth, IfRegion ifRegion) private static voidIfRegionVisitor.markElseIfChains(MethodNode mth, IfRegion ifRegion) Mark if-else-if chainsprivate static voidIfRegionVisitor.orderBranches(MethodNode mth, IfRegion ifRegion) static voidCleanRegions.process(MethodNode mth) private static voidIfRegionVisitor.process(MethodNode mth) (package private) static voidPostProcessRegions.process(MethodNode mth) static voidProcessTryCatchRegions.process(MethodNode mth) static voidTernaryMod.process(MethodNode mth) voidAbstractRegionVisitor.processBlock(MethodNode mth, IBlock block) voidDebugRegionCounter.RegionCounterVisitor.processBlock(MethodNode mth, IBlock container) voidIRegionVisitor.processBlock(MethodNode mth, IBlock container) voidLoopRegionVisitor.processBlock(MethodNode mth, IBlock container) voidTracedRegionVisitor.processBlock(MethodNode mth, IBlock block) voidReturnVisitor.ReturnRemoverVisitor.processBlockTraced(MethodNode mth, IBlock container, IRegion currentRegion) abstract voidTracedRegionVisitor.processBlockTraced(MethodNode mth, IBlock block, IRegion parentRegion) private voidSwitchBreakVisitor.ExtractCommonBreak.processBranchRegion(MethodNode mth, IRegion region) private static voidRegionMakerVisitor.processForceInlineInsns(MethodNode mth) static voidIfRegionVisitor.processIfRequested(MethodNode mth) private static booleanLoopRegionVisitor.processLoopRegion(MethodNode mth, LoopRegion loopRegion) private static booleanTernaryMod.processOneBranchTernary(MethodNode mth, IfRegion ifRegion) Convert one variable change with only 'then' branch: 'if (c) {r = a;}' to 'r = c ? a : r' Convert if 'r' used only onceabstract voidSwitchBreakVisitor.BaseSwitchRegionVisitor.processRegion(MethodNode mth, IRegion region) voidSwitchBreakVisitor.ExtractCommonBreak.processRegion(MethodNode mth, IRegion region) voidSwitchBreakVisitor.RemoveUnreachableBreak.processRegion(MethodNode mth, IRegion region) private static booleanTernaryMod.processRegion(MethodNode mth, IRegion region) private static booleanIfRegionVisitor.removeRedundantElseBlock(MethodNode mth, IfRegion ifRegion) private static voidTernaryMod.replaceWithTernary(MethodNode mth, IfRegion ifRegion, BlockNode block, InsnNode insn) private booleanSwitchOverStringVisitor.restoreSwitchOverString(MethodNode mth, IRegion part1Region) private static voidSwitchBreakVisitor.runSwitchTraverse(MethodNode mth, Supplier<SwitchBreakVisitor.BaseSwitchRegionVisitor> builder) static voidDepthRegionTraversal.traverse(MethodNode mth, IContainer container, IRegionVisitor visitor) static voidDepthRegionTraversal.traverse(MethodNode mth, IRegionVisitor visitor) static voidDepthRegionTraversal.traverseIncludingExcHandlers(MethodNode mth, IRegionIterativeVisitor visitor) private static voidDepthRegionTraversal.traverseInternal(MethodNode mth, IRegionVisitor visitor, IContainer startContainer) static voidDepthRegionTraversal.traverseIterative(MethodNode mth, IRegionIterativeVisitor visitor) private static booleanDepthRegionTraversal.traverseIterativeStepInternal(MethodNode mth, IRegionIterativeVisitor visitor, IRegion startRegion) static <R> RDepthRegionTraversal.traversePartial(MethodNode mth, IContainer container, IRegionPartialVisitor<R> visitor) static <R> RDepthRegionTraversal.traversePartial(MethodNode mth, IRegionPartialVisitor<R> visitor) private static <R> RDepthRegionTraversal.traversePartialInternal(MethodNode mth, IRegionPartialVisitor<R> visitor, IContainer startContainer) private static booleanLoopRegionVisitor.usedOnlyInLoop(MethodNode mth, LoopRegion loopRegion, RegisterArg arg) private static booleanTernaryMod.verifyLineHints(MethodNode mth, InsnNode thenInsn, InsnNode elseInsn) voidCheckRegions.visit(MethodNode mth) voidCleanRegions.visit(MethodNode mth) voidDebugRegionCounter.visit(MethodNode mth) voidIfRegionVisitor.visit(MethodNode mth) IRegionPartialVisitor.visit(MethodNode mth, IContainer container) Visit all containers in region until stoppedvoidLoopRegionVisitor.visit(MethodNode mth) voidRegionMakerVisitor.visit(MethodNode mth) voidReturnVisitor.visit(MethodNode mth) voidSwitchBreakVisitor.visit(MethodNode mth) voidSwitchOverStringVisitor.visit(MethodNode mth) booleanIfRegionVisitor.RemoveRedundantElseVisitor.visitRegion(MethodNode mth, IRegion region) booleanIRegionIterativeVisitor.visitRegion(MethodNode mth, IRegion region) If return 'true' traversal will be restarted.booleanSwitchOverStringVisitor.visitRegion(MethodNode mth, IRegion region) booleanTernaryMod.visitRegion(MethodNode mth, IRegion region) Constructors in jadx.core.dex.visitors.regions with parameters of type MethodNode -
Uses of MethodNode in jadx.core.dex.visitors.regions.maker
Fields in jadx.core.dex.visitors.regions.maker declared as MethodNodeModifier and TypeFieldDescriptionprivate final MethodNodeExcHandlersRegionMaker.mthprivate final MethodNodeIfRegionMaker.mthprivate final MethodNodeLoopRegionMaker.mthprivate final MethodNodeRegionMaker.mthprivate final MethodNodeSwitchRegionMaker.mthprivate final MethodNodeSynchronizedRegionMaker.mthMethods in jadx.core.dex.visitors.regions.maker with parameters of type MethodNodeModifier and TypeMethodDescriptionprivate static booleanSynchronizedRegionMaker.canRemoveSyncBlock(MethodNode mth, InsnNode synchInsn) (package private) static @Nullable BlockNodeIfRegionMaker.findOutBlock(MethodNode mth, BlockNode thenBlock, BlockNode elseBlock) private static BlockNodeIfRegionMaker.getBranchBlock(BlockNode first, BlockNode second, Set<BlockNode> skipBlocks, MethodNode mth) static voidSwitchRegionMaker.insertBreaks(MethodNode mth, SwitchRegion sw) Insert 'break' for all cases in switch region Executed inPostProcessRegionsafter try/catch wrap to handle all blocksprivate static voidSwitchRegionMaker.insertBreaksForCase(MethodNode mth, SwitchRegion switchRegion, IContainer caseContainer) Add break to every exit edge from 'case' region.(package private) static booleanIfRegionMaker.isCandidateForOutBlock(MethodNode mth, BlockNode thenBlock, BlockNode elseBlock, BlockNode candidate) (package private) static @Nullable IfInfoIfRegionMaker.makeIfInfo(MethodNode mth, BlockNode ifBlock) static voidSynchronizedRegionMaker.removeSynchronized(MethodNode mth) Constructors in jadx.core.dex.visitors.regions.maker with parameters of type MethodNodeModifierConstructorDescriptionExcHandlersRegionMaker(MethodNode mth, RegionMaker regionMaker) (package private)IfRegionMaker(MethodNode mth, RegionMaker regionMaker) (package private)LoopRegionMaker(MethodNode mth, RegionMaker regionMaker, IfRegionMaker ifMaker) RegionMaker(MethodNode mth) RegionStack(MethodNode mth) (package private)SwitchRegionMaker(MethodNode mth, RegionMaker regionMaker) (package private)SynchronizedRegionMaker(MethodNode mth, RegionMaker regionMaker) -
Uses of MethodNode in jadx.core.dex.visitors.regions.variables
Methods in jadx.core.dex.visitors.regions.variables with parameters of type MethodNodeModifier and TypeMethodDescriptionprivate voidProcessVariables.checkCodeVars(MethodNode mth, List<CodeVar> codeVars) ProcessVariables.collectCodeVars(MethodNode mth) private voidProcessVariables.declareVar(MethodNode mth, CodeVar codeVar, List<VarUsage> usageList) voidCollectUsageRegionVisitor.processBlockTraced(MethodNode mth, IBlock block, IRegion curRegion) private static voidProcessVariables.removeUnusedResults(MethodNode mth) voidProcessVariables.visit(MethodNode mth) -
Uses of MethodNode in jadx.core.dex.visitors.rename
Methods in jadx.core.dex.visitors.rename with parameters of type MethodNodeModifier and TypeMethodDescriptionprivate static booleanRenameVisitor.canRename(MethodNode mth) private static voidCodeRenameVisitor.processRename(MethodNode mth, IJavaCodeRef codeRef, ICodeRename rename) -
Uses of MethodNode in jadx.core.dex.visitors.shrink
Methods in jadx.core.dex.visitors.shrink with parameters of type MethodNodeModifier 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) static voidCodeShrinkVisitor.shrinkMethod(MethodNode mth) private static voidCodeShrinkVisitor.simplifyMoveInsns(MethodNode mth, BlockNode block) private static booleanCodeShrinkVisitor.varWithSameNameExists(MethodNode mth, SSAVar inlineVar) voidCodeShrinkVisitor.visit(MethodNode mth) -
Uses of MethodNode in jadx.core.dex.visitors.ssa
Fields in jadx.core.dex.visitors.ssa declared as MethodNodeModifier and TypeFieldDescriptionprivate final MethodNodeLiveVarAnalysis.mthprivate final MethodNodeRenameState.mthMethods in jadx.core.dex.visitors.ssa with parameters of type MethodNodeModifier and TypeMethodDescriptionstatic PhiInsnSSATransform.addPhi(MethodNode mth, BlockNode block, int regNum) private static voidSSATransform.fixLastAssignInTry(MethodNode mth) Fix last try/catch assign instructionprivate static voidSSATransform.fixPhiInTryCatch(MethodNode mth, PhiInsn phi, ExcHandlerAttr handlerAttr) private static booleanSSATransform.fixPhiWithSameArgs(MethodNode mth, BlockNode block, PhiInsn phi) private static booleanSSATransform.fixUselessPhi(MethodNode mth) private static voidSSATransform.hidePhiInsns(MethodNode mth) static RenameStateRenameState.init(MethodNode mth) private static booleanSSATransform.inlinePhiInsn(MethodNode mth, BlockNode block, PhiInsn phi, RegisterArg inlineArg) private static voidSSATransform.placePhi(MethodNode mth, int regNum, LiveVarAnalysis la) private static voidSSATransform.process(MethodNode mth) private static booleanSSATransform.removeBlockerInsns(MethodNode mth) private static booleanSSATransform.removePhiList(MethodNode mth, List<PhiInsn> insnToRemove) private static voidSSATransform.removeUnusedInvokeResults(MethodNode mth) private static voidSSATransform.renameVariables(MethodNode mth) private static voidSSATransform.renameVarsInBlock(MethodNode mth, RenameState state) private static booleanSSATransform.replacePhiWithMove(MethodNode mth, BlockNode block, PhiInsn phi, RegisterArg arg) private static booleanSSATransform.shouldSkipInsnResult(MethodNode mth, InsnNode insn, ExcHandlerAttr handlerAttr) private static voidSSATransform.tryToFixUselessPhi(MethodNode mth) voidSSATransform.visit(MethodNode mth) Constructors in jadx.core.dex.visitors.ssa with parameters of type MethodNodeModifierConstructorDescriptionprivateRenameState(MethodNode mth, BlockNode block, SSAVar[] vars, int[] versions) -
Uses of MethodNode in jadx.core.dex.visitors.typeinference
Fields in jadx.core.dex.visitors.typeinference declared as MethodNodeModifier and TypeFieldDescriptionprivate final MethodNodeTypeSearch.mthprivate final MethodNodeTypeUpdateInfo.mthFields in jadx.core.dex.visitors.typeinference with type parameters of type MethodNodeModifier and TypeFieldDescriptionprivate List<Function<MethodNode, Boolean>> FixTypesVisitor.resolversMethods in jadx.core.dex.visitors.typeinference that return MethodNodeMethods in jadx.core.dex.visitors.typeinference with parameters of type MethodNodeModifier and TypeMethodDescriptionTypeUpdate.apply(MethodNode mth, SSAVar ssaVar, ArgType candidateType) Perform type checking and type propagation for all related variablesprivate TypeUpdateResultTypeUpdate.apply(MethodNode mth, SSAVar ssaVar, ArgType candidateType, TypeUpdateFlags flags) TypeUpdate.applyDebugInfo(MethodNode mth, SSAVar ssaVar, ArgType candidateType) private BooleanFixTypesVisitor.applyFieldType(MethodNode mth) Use type for var assigned from field (IGET or SGET).TypeUpdate.applyWithWiderAllow(MethodNode mth, SSAVar ssaVar, ArgType candidateType) Allow wider types for apply from debug info and some special casesTypeUpdate.applyWithWiderIgnSame(MethodNode mth, SSAVar ssaVar, ArgType candidateType) Force type settingprivate voidTypeInferenceVisitor.assignImmutableTypes(MethodNode mth) private booleanFixTypesVisitor.calculateFromBounds(MethodNode mth, SSAVar ssaVar) private voidTypeInferenceVisitor.calculateFromBounds(MethodNode mth, SSAVar ssaVar) private booleanFixTypesVisitor.checkAndSplitConstInsn(MethodNode mth, SSAVar var) private booleanFixTypesVisitor.checkRawType(MethodNode mth, SSAVar var, ArgType objType) private static booleanFixTypesVisitor.checkTypes(MethodNode mth) Check if all types resolvedprivate booleanFixTypesVisitor.deduceType(MethodNode mth, SSAVar var) private booleanFixTypesVisitor.dupConst(MethodNode mth, SSAVar var) private booleanFixTypesVisitor.fixBooleanUsage(MethodNode mth, RegisterArg boundArg) (package private) voidTypeInferenceVisitor.initTypeBounds(MethodNode mth) Collect initial type bounds from assign and usagesprivate @Nullable IndexInsnNodeFixTypesVisitor.insertAssignCast(MethodNode mth, SSAVar var, ArgType castType) private booleanFixTypesVisitor.insertExplicitUseCast(MethodNode mth, SSAVar ssaVar, RegisterArg useArg, ArgType fieldType) private voidFixTypesVisitor.insertMove(MethodNode mth, BlockNode blockNode, PhiInsn phiInsn, RegisterArg reg) private intFixTypesVisitor.insertMovesForPhi(MethodNode mth, PhiInsn phiInsn, boolean apply) private @Nullable IndexInsnNodeFixTypesVisitor.insertUseCast(MethodNode mth, RegisterArg useArg, ArgType castType) private intFixTypesVisitor.insertUseCasts(MethodNode mth, SSAVar var) private booleanFixTypesVisitor.processIncompatiblePrimitives(MethodNode mth, SSAVar var) private booleanFixTypesVisitor.runMultiVariableSearch(MethodNode mth) (package private) booleanTypeInferenceVisitor.runTypePropagation(MethodNode mth) Guess type from usage and try to set it to current variable and all connected instructions withTypeUpdate.apply(MethodNode, SSAVar, ArgType)private booleanFixTypesVisitor.setBestType(MethodNode mth, SSAVar ssaVar) private voidTypeInferenceVisitor.setBestType(MethodNode mth, SSAVar ssaVar) private voidTypeInferenceVisitor.setImmutableType(MethodNode mth, SSAVar ssaVar) private static booleanFixTypesVisitor.splitByPhi(MethodNode mth, SSAVar var) For every PHI make separate CONST insnprivate booleanFixTypesVisitor.tryDeduceTypes(MethodNode mth) private booleanFixTypesVisitor.tryFieldTypeWithNewCasts(MethodNode mth, SSAVar ssaVar, boolean insertCasts) private intFixTypesVisitor.tryInsertAdditionalInsn(MethodNode mth, PhiInsn phiInsn) Add MOVE instruction before PHI in bound blocks to make 'soft' type link.private booleanFixTypesVisitor.tryInsertAdditionalMove(MethodNode mth) private booleanFixTypesVisitor.tryInsertCasts(MethodNode mth) private intFixTypesVisitor.tryInsertVarCast(MethodNode mth, SSAVar var) private booleanFixTypesVisitor.tryPossibleTypes(MethodNode mth, SSAVar var, ArgType type) private booleanFixTypesVisitor.tryRawType(MethodNode mth, SSAVar var) private booleanFixTypesVisitor.tryRemoveGenerics(MethodNode mth) private booleanFixTypesVisitor.tryRestoreTypeVarCasts(MethodNode mth) Fix check casts to type var extend type:
<T extends Comparable> T var = (Comparable) obj; => T var = (T) obj;private booleanFixTypesVisitor.trySplitConstInsns(MethodNode mth) private booleanFixTypesVisitor.tryToFixIncompatiblePrimitives(MethodNode mth) private booleanFixTypesVisitor.tryToForceImmutableTypes(MethodNode mth) private booleanFixTypesVisitor.tryWiderObjects(MethodNode mth, SSAVar var) voidFinishTypeInference.visit(MethodNode mth) voidFixTypesVisitor.visit(MethodNode mth) voidTypeInferenceVisitor.visit(MethodNode mth) Constructors in jadx.core.dex.visitors.typeinference with parameters of type MethodNodeModifierConstructorDescriptionTypeSearch(MethodNode mth) TypeUpdateInfo(MethodNode mth, TypeUpdateFlags flags, JadxArgs args) -
Uses of MethodNode in jadx.core.dex.visitors.usage
Fields in jadx.core.dex.visitors.usage with type parameters of type MethodNodeModifier and TypeFieldDescriptionprivate final UseSet<ClassNode, MethodNode> UsageInfo.clsUseInMthprivate final UseSet<FieldNode, MethodNode> UsageInfo.fieldUsageprivate final UseSet<MethodNode, MethodNode> UsageInfo.mthUsageprivate final UseSet<MethodNode, MethodNode> UsageInfo.mthUsageprivate final UseSet<MethodNode, MethodNode> UsageInfo.mthUsesprivate final UseSet<MethodNode, MethodNode> UsageInfo.mthUsesprivate final Map<MethodNode, Boolean> UsageInfo.selfCallsprivate final UseSet<MethodNode, MethodInfo> UsageInfo.unresolvedMthUsageMethods in jadx.core.dex.visitors.usage that return types with arguments of type MethodNodeModifier and TypeMethodDescriptionprivate List<MethodNode> UsageInfo.resolveMthList(List<MethodNode> mthNodeList) Methods in jadx.core.dex.visitors.usage with parameters of type MethodNodeModifier and TypeMethodDescriptionvoidUsageInfo.clsUse(MethodNode mth, ArgType useType) voidUsageInfo.clsUse(MethodNode mth, ClassNode useCls) voidUsageInfo.fieldUse(MethodNode mth, FieldNode useFld) voidUsageInfo.methodUse(MethodNode mth, MethodNode useMth) Add method usage:useMthoccurrence found inmthcodeprivate static voidUsageInfoVisitor.processInsn(RootNode root, MethodNode mth, InsnData insnData, UsageInfo usageInfo) private static voidUsageInfoVisitor.processInstructions(MethodNode mth, UsageInfo usageInfo) private static voidUsageInfoVisitor.processMethod(MethodNode mth, UsageInfo usageInfo) private static voidUsageInfoVisitor.processMethodAnnotations(MethodNode mth, UsageInfo usageInfo) static voidUsageInfoVisitor.replaceMethodUsage(MethodNode mergeIntoMth, MethodNode sourceMth) voidUsageInfo.unresolvedMethodUse(MethodNode mth, MethodInfo useMth) Add method usage:useMthoccurrence found inmthcodeMethod parameters in jadx.core.dex.visitors.usage with type arguments of type MethodNodeModifier and TypeMethodDescriptionprivate List<MethodNode> UsageInfo.resolveMthList(List<MethodNode> mthNodeList) -
Uses of MethodNode in jadx.core.utils
Fields in jadx.core.utils declared as MethodNodeFields in jadx.core.utils with type parameters of type MethodNodeMethods in jadx.core.utils with parameters of type MethodNodeModifier and TypeMethodDescriptionprivate static voidBlockUtils.addExcHandler(MethodNode mth, ExceptionHandler handler, BitSet set) static voidRegionUtils.addToAll(MethodNode mth, IContainer container, AFlag flag) BlockUtils.bitSetToBlocks(MethodNode mth, BitSet bs) static @Nullable BlockNodeBlockUtils.bitSetToOneBlock(MethodNode mth, BitSet bs) static BitSetBlockUtils.blocksToBitSet(MethodNode mth, Collection<BlockNode> blocks) 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) static voidDebugChecks.checkMethod(MethodNode mth) private static voidDebugChecks.checkPHI(MethodNode mth) private static voidDebugChecks.checkPhiArg(MethodNode mth, PhiInsn phiInsn, RegisterArg arg, Supplier<String> argName) private static voidDebugChecks.checkRegisterArg(MethodNode mth, RegisterArg reg) private static voidDebugChecks.checkSSAVars(MethodNode mth) private static voidDebugChecks.checkVar(MethodNode mth, InsnNode insn, RegisterArg reg) static voidBlockUtils.cleanBitSet(MethodNode mth, BitSet bs) Remove exception handlers from block nodes bitsetBlockUtils.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 handlersRegionUtils.collectInsns(MethodNode mth, IContainer container) BlockUtils.collectPredecessors(MethodNode mth, BlockNode start, Collection<BlockNode> stopBlocks) static BitSetBlockUtils.copyBlocksBitSet(MethodNode mth, BitSet bitSet) static voidInsnRemover.delistPhi(MethodNode mth, PhiInsn phiInsn) static voidDebugUtils.dump(MethodNode mth) static voidDebugUtils.dump(MethodNode mth, String desc) static voidDebugUtils.dumpRaw(MethodNode mth, String desc) static voidDebugUtils.dumpRaw(MethodNode mth, String desc, Predicate<MethodNode> dumpCondition) static voidDebugUtils.dumpRawTest(MethodNode mth, String desc) voidDotGraphUtils.dumpToFile(MethodNode mth) voidDotGraphUtils.dumpToFile(MethodNode mth, File dir) @Nullable StringDotGraphUtils.dumpToString(MethodNode mth) static voidBlockUtils.forEachBlockFromBitSet(MethodNode mth, BitSet bs, Consumer<BlockNode> consumer) static @Nullable BlockNodeBlockUtils.getBlockByInsn(MethodNode mth, @Nullable InsnNode insn) static @Nullable BlockNodeBlockUtils.getBlockByInsn(MethodNode mth, @Nullable InsnNode insn, List<BlockNode> blocks) private static BlockNodeBlockUtils.getBlockByWrappedInsn(MethodNode mth, InsnNode insn) 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 CatchAttrBlockUtils.getCatchAttrForInsn(MethodNode mth, InsnNode insn) static @Nullable BlockNodeBlockUtils.getCommonDominator(MethodNode mth, List<BlockNode> blocks) Search the lowest common ancestor in dominator tree for input set.DotGraphUtils.getFullFile(MethodNode mth) DotGraphUtils.getFullFile(MethodNode mth, File outDir) RegionUtils.getLoopsStartInRegion(MethodNode mth, IRegion r) static @Nullable IContainerRegionUtils.getNextContainer(MethodNode mth, IRegion region) static @Nullable InsnNodeBlockUtils.getOnlyOneInsnFromMth(MethodNode mth) Return insn if it is only one instruction in this method.static FileDotGraphUtils.getOutDir(MethodNode mth) 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.getPrevBlockOnPath(MethodNode mth, BlockNode block, BlockNode pathStart) Return predecessor on path from 'pathStart' blockstatic @Nullable BlockNodeBlockUtils.getTopCommonSuccessor(MethodNode mth, List<BlockNode> blocks, boolean cleanOnly) static @Nullable BlockNodeBlockUtils.getTopCommonSuccessor(MethodNode mth, List<BlockNode> blocks, boolean cleanOnly, boolean addTopBlock) static @Nullable BlockNodeBlockUtils.getTryAndHandlerCrossBlock(MethodNode mth, ExceptionHandler handler) Return out block of try catch, by finding where try branch meets catch branch.private StringDotGraphUtils.insertInsns(MethodNode mth, IBlock block) private static booleanDebugChecks.insnMissing(MethodNode mth, InsnNode insn) 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 booleanBlockUtils.isExitBlock(MethodNode mth, BlockNode block) static booleanRegionUtils.isExitBlock(MethodNode mth, IContainer container) static booleanBlockUtils.isFirstInsn(MethodNode mth, InsnNode insn) static StringDotGraphUtils.methodFormatName(MethodNode methodNode, boolean longName) static BitSetBlockUtils.newBlocksBitSet(MethodNode mth) private static voidDebugUtils.printInsns(MethodNode mth, ICodeWriter cw, String indent, IBlock block) static voidDebugUtils.printRegion(MethodNode mth, IRegion region, boolean printInsns) private static voidDebugUtils.printRegion(MethodNode mth, IRegion region, ICodeWriter cw, String indent, boolean printInsns) static voidDebugUtils.printRegions(MethodNode mth) static voidDebugUtils.printRegions(MethodNode mth, boolean printInsns) private static voidDebugUtils.printRegionSpecificInfo(ICodeWriter cw, String indent, MethodNode mth, IRegion region, boolean printInsns) 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) private voidDotGraphUtils.processIBlock(MethodNode mth, IBlock block) private voidDotGraphUtils.processIBlock(MethodNode mth, IBlock block, boolean error) private voidDotGraphUtils.processMethodRegion(MethodNode mth) private voidDotGraphUtils.processRegion(MethodNode mth, IContainer region, Set<IBlock> regionsBlocks) static voidDebugChecks.quickCheckPhiInsn(MethodNode mth) static voidInsnRemover.remove(MethodNode mth, @Nullable InsnNode insn) static 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.removeAllAndUnbind(MethodNode mth, IContainer container, List<InsnNode> insns) static voidInsnRemover.removeAllAndUnbind(MethodNode mth, List<InsnNode> insns) static voidInsnRemover.removeAllMarked(MethodNode mth) private static voidInsnRemover.removeSsaVar(MethodNode mth, SSAVar ssaVar) 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 booleanBlockUtils.replaceInsn(MethodNode mth, InsnNode oldInsn, InsnNode newInsn) static voidInsnUtils.replaceInsns(MethodNode mth, Function<InsnNode, InsnNode> replaceFunction) static voidInsnUtils.replaceInsnsInInsn(MethodNode mth, InsnNode insn, Function<InsnNode, InsnNode> replaceFunction) static voidDebugChecks.runChecksAfterVisitor(MethodNode mth, String visitor) static BlockNodeBlockUtils.searchBlockWithPhi(MethodNode mth, PhiInsn insn) static @Nullable InsnNodeInsnUtils.searchInsn(MethodNode mth, InsnType insnType, Predicate<InsnNode> test) Search instruction of specific type and condition in method.static InsnNodeBlockUtils.searchInsnParent(MethodNode mth, InsnNode insn) static @Nullable InsnNodeInsnUtils.searchSingleReturnInsn(MethodNode mth, Predicate<InsnNode> test) static InsnArgBlockUtils.searchWrappedInsnParent(MethodNode mth, InsnNode insn) static voidInsnRemover.unbindAllArgs(@Nullable MethodNode mth, InsnNode insn) static voidInsnRemover.unbindArgUsage(@Nullable MethodNode mth, InsnArg arg) static voidInsnRemover.unbindInsn(@Nullable MethodNode mth, InsnNode insn) static voidInsnRemover.unbindInsns(@Nullable MethodNode mth, List<InsnNode> insns) static voidInsnRemover.unbindResult(@Nullable MethodNode mth, InsnNode insn) voidDebugChecksPass.visit(MethodNode mth) static voidRegionUtils.visitBlockNodes(MethodNode mth, IContainer container, Consumer<BlockNode> visitor) static voidRegionUtils.visitBlocks(MethodNode mth, IContainer container, Consumer<IBlock> visitor) 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.visitDFS(MethodNode mth, Consumer<BlockNode> visitor) static voidBlockUtils.visitPredecessorsUntil(MethodNode mth, BlockNode start, Predicate<BlockNode> visitor) static voidRegionUtils.visitRegions(MethodNode mth, IContainer container, Predicate<IRegion> visitor) static voidBlockUtils.visitReverseDFS(MethodNode mth, Consumer<BlockNode> visitor) Method parameters in jadx.core.utils with type arguments of type MethodNodeModifier and TypeMethodDescriptionstatic voidDebugUtils.dumpRaw(MethodNode mth, String desc, Predicate<MethodNode> dumpCondition) static IDexTreeVisitorDebugUtils.dumpRawVisitor(String desc, Predicate<MethodNode> filter) Constructors in jadx.core.utils with parameters of type MethodNodeModifierConstructorDescriptionInsnRemover(MethodNode mth) InsnRemover(MethodNode mth, BlockNode block) -
Uses of MethodNode in jadx.core.utils.blocks
Fields in jadx.core.utils.blocks declared as MethodNodeMethods in jadx.core.utils.blocks with parameters of type MethodNodeModifier and TypeMethodDescriptionstatic BlockSetBlockSet.empty(MethodNode mth) static BlockSetBlockSet.from(MethodNode mth, Collection<BlockNode> blocks) Constructors in jadx.core.utils.blocks with parameters of type MethodNodeModifierConstructorDescriptionBlockSet(MethodNode mth) DFSIteration(MethodNode mth, BlockNode startBlock, Function<BlockNode, List<BlockNode>> next) -
Uses of MethodNode in jadx.core.utils.exceptions
Constructors in jadx.core.utils.exceptions with parameters of type MethodNodeModifierConstructorDescriptionCodegenException(MethodNode mth, String msg) CodegenException(MethodNode mth, String msg, Throwable th) DecodeException(MethodNode mth, String msg) DecodeException(MethodNode mth, String msg, Throwable th) JadxException(MethodNode mth, String msg, Throwable th)