本文整理了Java中org.objectweb.asm.tree.TryCatchBlockNode
类的一些代码示例,展示了TryCatchBlockNode
类的具体用法。这些代码示例主要来源于Github
/Stackoverflow
/Maven
等平台,是从一些精选项目中提取出来的代码,具有较强的参考意义,能在一定程度帮忙到你。TryCatchBlockNode
类的具体详情如下:
包路径:org.objectweb.asm.tree.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));
}
内容来源于网络,如有侵权,请联系作者删除!