org.objectweb.asm.tree.TryCatchBlockNode类的使用及代码示例

x33g5p2x  于2022-01-30 转载在 其他  
字(8.2k)|赞(0)|评价(0)|浏览(129)

本文整理了Java中org.objectweb.asm.tree.TryCatchBlockNode类的一些代码示例,展示了TryCatchBlockNode类的具体用法。这些代码示例主要来源于Github/Stackoverflow/Maven等平台,是从一些精选项目中提取出来的代码,具有较强的参考意义,能在一定程度帮忙到你。TryCatchBlockNode类的具体详情如下:
包路径:org.objectweb.asm.tree.TryCatchBlockNode
类名称:TryCatchBlockNode

TryCatchBlockNode介绍

[英]A node that represents a try catch block.
[中]表示try-catch块的节点。

代码示例

代码示例来源:origin: jphp-group/jphp

new TryCatchBlockNode(tryStart, tryEnd, catchStart, Type.getInternalName(BaseBaseException.class))
);

代码示例来源:origin: pxb1988/dex2jar

tryCatchBlockNode.accept(mv);
try {
  pw.print(" " + buf.get(t));

代码示例来源:origin: kilim/kilim

void visitTryCatchBlocks(MethodVisitor mv) {
  MethodFlow mf = methodFlow;
  ArrayList<BasicBlock> bbs = mf.getBasicBlocks();
  ArrayList<Handler> allHandlers = new ArrayList<Handler>(bbs.size() * 2);
  for (BasicBlock bb : bbs) {
    allHandlers.addAll(bb.handlers);
  }
  allHandlers = Handler.consolidate(allHandlers);
  for (Handler h : allHandlers) {
    new TryCatchBlockNode(mf.getLabelAt(h.from), mf.getOrCreateLabelAtPos(h.to+1), h.catchBB.startLabel, h.type).accept(mv);
  }
}

代码示例来源:origin: org.ow2.asm/asm-debug-all

tryCatchBlocks.get(i).updateIndex(i);
tryCatchBlocks.get(i).accept(mv);

代码示例来源:origin: org.ow2.asm/asm-commons

@Override
 public void visitEnd() {
  // Sort the TryCatchBlockNode elements by the length of their "try" block.
  Collections.sort(
    tryCatchBlocks,
    new Comparator<TryCatchBlockNode>() {

     @Override
     public int compare(
       final TryCatchBlockNode tryCatchBlockNode1,
       final TryCatchBlockNode tryCatchBlockNode2) {
      return blockLength(tryCatchBlockNode1) - blockLength(tryCatchBlockNode2);
     }

     private int blockLength(final TryCatchBlockNode tryCatchBlockNode) {
      int startIndex = instructions.indexOf(tryCatchBlockNode.start);
      int endIndex = instructions.indexOf(tryCatchBlockNode.end);
      return endIndex - startIndex;
     }
    });
  // Update the 'target' of each try catch block annotation.
  for (int i = 0; i < tryCatchBlocks.size(); ++i) {
   tryCatchBlocks.get(i).updateIndex(i);
  }
  if (mv != null) {
   accept(mv);
  }
 }
}

代码示例来源:origin: org.ow2.asm/asm-tree

tryCatchBlocks.get(i).updateIndex(i);
tryCatchBlocks.get(i).accept(methodVisitor);

代码示例来源:origin: org.ow2.asm/asm-debug-all

@Override
  public void visitEnd() {
    // Compares TryCatchBlockNodes by the length of their "try" block.
    Comparator<TryCatchBlockNode> comp = new Comparator<TryCatchBlockNode>() {

      public int compare(TryCatchBlockNode t1, TryCatchBlockNode t2) {
        int len1 = blockLength(t1);
        int len2 = blockLength(t2);
        return len1 - len2;
      }

      private int blockLength(TryCatchBlockNode block) {
        int startidx = instructions.indexOf(block.start);
        int endidx = instructions.indexOf(block.end);
        return endidx - startidx;
      }
    };
    Collections.sort(tryCatchBlocks, comp);
    // Updates the 'target' of each try catch block annotation.
    for (int i = 0; i < tryCatchBlocks.size(); ++i) {
      tryCatchBlocks.get(i).updateIndex(i);
    }
    if (mv != null) {
      accept(mv);
    }
  }
}

代码示例来源:origin: qmx/jitescript

public CodeBlock visitTryCatchBlock(final LabelNode scopeStart, final LabelNode scopeEnd, final LabelNode handler,
    final String exceptionType) {
  tryCatchBlockList.add(new TryCatchBlockNode(scopeStart, scopeEnd, handler, exceptionType));
  return this;
}

代码示例来源:origin: pxb1988/dex2jar

static void printAnalyzerResult(MethodNode method, Analyzer a, final PrintWriter pw)
    throws IllegalArgumentException, IllegalAccessException {
  Frame[] frames = a.getFrames();
  Textifier t = new Textifier();
  TraceMethodVisitor mv = new TraceMethodVisitor(t);
  String format = "%05d %-" + (method.maxStack + method.maxLocals + 6) + "s|%s";
  for (int j = 0; j < method.instructions.size(); ++j) {
    method.instructions.get(j).accept(mv);
    StringBuffer s = new StringBuffer();
    Frame f = frames[j];
    if (f == null) {
      s.append('?');
    } else {
      for (int k = 0; k < f.getLocals(); ++k) {
        s.append(getShortName(f.getLocal(k).toString()));
      }
      s.append(" : ");
      for (int k = 0; k < f.getStackSize(); ++k) {
        s.append(getShortName(f.getStack(k).toString()));
      }
    }
    pw.printf(format, j, s, buf.get(t)); // mv.text.get(j));
  }
  for (int j = 0; j < method.tryCatchBlocks.size(); ++j) {
    ((TryCatchBlockNode) method.tryCatchBlocks.get(j)).accept(mv);
    pw.print(" " + buf.get(t));
  }
  pw.println();
  pw.flush();
}

代码示例来源:origin: org.apache.aries.spifly/org.apache.aries.spifly.dynamic.bundle

@Override
 public void visitEnd() {
  // Sort the TryCatchBlockNode elements by the length of their "try" block.
  Collections.sort(
    tryCatchBlocks,
    new Comparator<TryCatchBlockNode>() {

     @Override
     public int compare(
       final TryCatchBlockNode tryCatchBlockNode1,
       final TryCatchBlockNode tryCatchBlockNode2) {
      return blockLength(tryCatchBlockNode1) - blockLength(tryCatchBlockNode2);
     }

     private int blockLength(final TryCatchBlockNode tryCatchBlockNode) {
      int startIndex = instructions.indexOf(tryCatchBlockNode.start);
      int endIndex = instructions.indexOf(tryCatchBlockNode.end);
      return endIndex - startIndex;
     }
    });
  // Update the 'target' of each try catch block annotation.
  for (int i = 0; i < tryCatchBlocks.size(); ++i) {
   tryCatchBlocks.get(i).updateIndex(i);
  }
  if (mv != null) {
   accept(mv);
  }
 }
}

代码示例来源:origin: qmx/jitescript

public CodeBlock trycatch(final LabelNode scopeStart, final LabelNode scopeEnd, final LabelNode handler, final String exceptionType) {
  tryCatchBlockList.add(new TryCatchBlockNode(scopeStart, scopeEnd, handler, exceptionType));
  return this;
}

代码示例来源:origin: org.jacoco/org.jacoco.core

/**
 * Marks all labels of the method with control flow information.
 * 
 * @param method
 *            Method to mark labels
 */
public static void markLabels(final MethodNode method) {
  // We do not use the accept() method as ASM resets labels after every
  // call to accept()
  final MethodVisitor lfa = new LabelFlowAnalyzer();
  for (int i = method.tryCatchBlocks.size(); --i >= 0;) {
    method.tryCatchBlocks.get(i).accept(lfa);
  }
  method.instructions.accept(lfa);
}

代码示例来源:origin: org.apache.aries.spifly/org.apache.aries.spifly.dynamic.framework.extension

@Override
 public void visitEnd() {
  // Sort the TryCatchBlockNode elements by the length of their "try" block.
  Collections.sort(
    tryCatchBlocks,
    new Comparator<TryCatchBlockNode>() {

     @Override
     public int compare(
       final TryCatchBlockNode tryCatchBlockNode1,
       final TryCatchBlockNode tryCatchBlockNode2) {
      return blockLength(tryCatchBlockNode1) - blockLength(tryCatchBlockNode2);
     }

     private int blockLength(final TryCatchBlockNode tryCatchBlockNode) {
      int startIndex = instructions.indexOf(tryCatchBlockNode.start);
      int endIndex = instructions.indexOf(tryCatchBlockNode.end);
      return endIndex - startIndex;
     }
    });
  // Update the 'target' of each try catch block annotation.
  for (int i = 0; i < tryCatchBlocks.size(); ++i) {
   tryCatchBlocks.get(i).updateIndex(i);
  }
  if (mv != null) {
   accept(mv);
  }
 }
}

代码示例来源:origin: fge/grappa

public CodeBlock trycatch(final LabelNode scopeStart,
  final LabelNode scopeEnd, final LabelNode handler,
  @Nullable final String exceptionType)
{
  tryCatchBlockList.add(new TryCatchBlockNode(scopeStart, scopeEnd,
    handler, exceptionType));
  return this;
}

代码示例来源:origin: org.jacoco/org.jacoco.core

@Override
public void accept(final MethodNode methodNode,
    final MethodVisitor methodVisitor) {
  methodVisitor.visitCode();
  for (final TryCatchBlockNode n : methodNode.tryCatchBlocks) {
    n.accept(methodVisitor);
  }
  currentNode = methodNode.instructions.getFirst();
  while (currentNode != null) {
    currentNode.accept(methodVisitor);
    currentNode = currentNode.getNext();
  }
  methodVisitor.visitEnd();
}

代码示例来源:origin: fge/grappa

public CodeBlock visitTryCatchBlock(final LabelNode scopeStart,
  final LabelNode scopeEnd, final LabelNode handler,
  @Nullable final String exceptionType)
{
  tryCatchBlockList.add(new TryCatchBlockNode(scopeStart, scopeEnd,
    handler, exceptionType));
  return this;
}

代码示例来源:origin: org.ow2.asm/asm-debug-all

method.tryCatchBlocks.get(j).accept(mv);
pw.print(" " + t.text.get(t.text.size() - 1));

代码示例来源:origin: org.multiverse/multiverse-instrumentation

public static List<TryCatchBlockNode> cloneTryCatchBlockNodes(List<TryCatchBlockNode> originalBlocks, CloneMap cloneMap) {
  List<TryCatchBlockNode> result = new LinkedList<TryCatchBlockNode>();
  for (TryCatchBlockNode originalBlock : originalBlocks) {
    TryCatchBlockNode clonedBlock = new TryCatchBlockNode(
        cloneMap.get(originalBlock.start),
        cloneMap.get(originalBlock.end),
        cloneMap.get(originalBlock.handler),
        originalBlock.type
    );
    result.add(clonedBlock);
  }
  return result;
}

代码示例来源:origin: org.apache.aries.spifly/org.apache.aries.spifly.dynamic.framework.extension

tryCatchBlock.accept(traceMethodVisitor);
printWriter.print(" " + textifier.text.get(textifier.text.size() - 1));

代码示例来源:origin: org.ow2.asm/asm-debug-all

@Override
public void visitTryCatchBlock(final Label start, final Label end,
    final Label handler, final String type) {
  tryCatchBlocks.add(new TryCatchBlockNode(getLabelNode(start),
      getLabelNode(end), getLabelNode(handler), type));
}

相关文章

微信公众号

最新文章

更多