Package jadx.core.dex.nodes

Examples of jadx.core.dex.nodes.IRegion


    if (container instanceof BlockNode) {
      BlockNode block = (BlockNode) container;
      return !block.getSuccessors().isEmpty()
          && !block.contains(AFlag.RETURN);
    } else if (container instanceof IRegion) {
      IRegion region = (IRegion) container;
      List<IContainer> blocks = region.getSubBlocks();
      return !blocks.isEmpty() && hasExitEdge(blocks.get(blocks.size() - 1));
    } else {
      throw new JadxRuntimeException("Unknown container type: " + container.getClass());
    }
  }
View Full Code Here


      return insnList.get(insnList.size() - 1);
    } else if (container instanceof IfRegion
        || container instanceof SwitchRegion) {
      return null;
    } else if (container instanceof IRegion) {
      IRegion region = (IRegion) container;
      List<IContainer> blocks = region.getSubBlocks();
      if (blocks.isEmpty()) {
        return null;
      }
      return getLastInsn(blocks.get(blocks.size() - 1));
    } else {
View Full Code Here

  public static int insnsCount(IContainer container) {
    if (container instanceof BlockNode) {
      return ((BlockNode) container).getInstructions().size();
    } else if (container instanceof IRegion) {
      IRegion region = (IRegion) container;
      int count = 0;
      for (IContainer block : region.getSubBlocks()) {
        count += insnsCount(block);
      }
      return count;
    } else {
      throw new JadxRuntimeException("Unknown container type: " + container.getClass());
View Full Code Here

  public static boolean notEmpty(IContainer container) {
    if (container instanceof BlockNode) {
      return !((BlockNode) container).getInstructions().isEmpty();
    } else if (container instanceof IRegion) {
      IRegion region = (IRegion) container;
      for (IContainer block : region.getSubBlocks()) {
        if (notEmpty(block)) {
          return true;
        }
      }
      return false;
View Full Code Here

  public static void getAllRegionBlocks(IContainer container, Set<BlockNode> blocks) {
    if (container instanceof BlockNode) {
      blocks.add((BlockNode) container);
    } else if (container instanceof IRegion) {
      IRegion region = (IRegion) container;
      for (IContainer block : region.getSubBlocks()) {
        getAllRegionBlocks(block, blocks);
      }
    } else {
      throw new JadxRuntimeException("Unknown container type: " + container.getClass());
    }
View Full Code Here

  public static boolean isRegionContainsBlock(IContainer container, BlockNode block) {
    if (container instanceof BlockNode) {
      return container == block;
    } else if (container instanceof IRegion) {
      IRegion region = (IRegion) container;
      for (IContainer b : region.getSubBlocks()) {
        if (isRegionContainsBlock(b, block)) {
          return true;
        }
      }
      return false;
View Full Code Here

  private static boolean isRegionContainsExcHandlerRegion(IContainer container, IRegion region) {
    if (container == region) {
      return true;
    }
    if (container instanceof IRegion) {
      IRegion r = (IRegion) container;

      // process sub blocks
      for (IContainer b : r.getSubBlocks()) {
        // process try block
        CatchAttr cb = b.get(AType.CATCH_BLOCK);
        if (cb != null && (b instanceof IRegion)) {
          TryCatchBlock tb = cb.getTryBlock();
          for (ExceptionHandler eh : tb.getHandlers()) {
View Full Code Here

      return true;
    }
    if (region == null) {
      return false;
    }
    IRegion parent = region.getParent();
    while (container != parent) {
      if (parent == null) {
        if (region.contains(AType.EXC_HANDLER)) {
          return isRegionContainsExcHandlerRegion(container, region);
        }
View Full Code Here

    }
    if (cont instanceof BlockNode) {
      BlockNode block = (BlockNode) cont;
      return block.isDominator(dom);
    } else if (cont instanceof IRegion) {
      IRegion region = (IRegion) cont;
      for (IContainer c : region.getSubBlocks()) {
        if (!isDominatedBy(dom, c)) {
          return false;
        }
      }
      return true;
View Full Code Here

      return true;
    }
    if (cont instanceof BlockNode) {
      return BlockUtils.isPathExists(block, (BlockNode) cont);
    } else if (cont instanceof IRegion) {
      IRegion region = (IRegion) cont;
      for (IContainer c : region.getSubBlocks()) {
        if (!hasPathThruBlock(block, c)) {
          return false;
        }
      }
      return true;
View Full Code Here

TOP

Related Classes of jadx.core.dex.nodes.IRegion

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.