Package jadx.core.dex.instructions.args

Examples of jadx.core.dex.instructions.args.RegisterArg


          break;

        case MOVE:
          // remove redundant moves:
          //   unused result and same args names (a = a;)
          RegisterArg result = insn.getResult();
          if (result.getSVar().getUseCount() == 0
              && result.isNameEquals(insn.getArg(0))) {
            it.remove();
          }
          break;
      }
    }
View Full Code Here


   */
  private static void modifyArith(BlockNode block) {
    List<InsnNode> list = block.getInstructions();
    for (InsnNode insn : list) {
      if (insn.getType() == InsnType.ARITH) {
        RegisterArg res = insn.getResult();
        InsnArg arg = insn.getArg(0);
        boolean replace = false;
        if (res.equals(arg)) {
          replace = true;
        } else if (arg.isRegister()) {
          RegisterArg regArg = (RegisterArg) arg;
          replace = res.equalRegisterAndType(regArg);
        }
        if (replace) {
          insn.add(AFlag.ARITH_ONEARG);
        }
View Full Code Here

    ExceptionHandler excHandler = handlerAttr.getHandler();
    block.addAttr(handlerAttr);
    // set correct type for 'move-exception' operation
    ArgType type = excHandler.isCatchAll() ? ArgType.THROWABLE : excHandler.getCatchType().getType();

    RegisterArg resArg = me.getResult();
    resArg = InsnArg.reg(resArg.getRegNum(), type);
    me.setResult(resArg);
    me.add(AFlag.DONT_INLINE);

    excHandler.setArg(resArg);
  }
View Full Code Here

    }
    return false;
  }

  private static boolean isReturnArgAssignInPred(List<BlockNode> preds, InsnNode returnInsn) {
    RegisterArg arg = (RegisterArg) returnInsn.getArg(0);
    int regNum = arg.getRegNum();
    for (BlockNode pred : preds) {
      for (InsnNode insnNode : pred.getInstructions()) {
        RegisterArg result = insnNode.getResult();
        if (result != null && result.getRegNum() == regNum) {
          return true;
        }
      }
    }
    return false;
View Full Code Here

  }

  private static InsnNode duplicateReturnInsn(InsnNode returnInsn) {
    InsnNode insn = new InsnNode(returnInsn.getType(), returnInsn.getArgsCount());
    if (returnInsn.getArgsCount() == 1) {
      RegisterArg arg = (RegisterArg) returnInsn.getArg(0);
      insn.addArg(InsnArg.reg(arg.getRegNum(), arg.getType()));
    }
    insn.copyAttributesFrom(returnInsn);
    insn.setOffset(returnInsn.getOffset());
    insn.setSourceLine(returnInsn.getSourceLine());
    return insn;
View Full Code Here

  public static void guessName(RegisterArg arg) {
    SSAVar sVar = arg.getSVar();
    if (sVar == null || sVar.getName() != null) {
      return;
    }
    RegisterArg assignArg = sVar.getAssign();
    InsnNode assignInsn = assignArg.getParentInsn();
    String name = makeNameFromInsn(assignInsn);
    if (name != null && !NameMapper.isReserved(name)) {
      assignArg.setName(name);
    }
  }
View Full Code Here

TOP

Related Classes of jadx.core.dex.instructions.args.RegisterArg

Copyright © 2018 www.massapicom. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.