本文整理了Java中org.objectweb.asm.tree.LabelNode.getLabel()
方法的一些代码示例,展示了LabelNode.getLabel()
的具体用法。这些代码示例主要来源于Github
/Stackoverflow
/Maven
等平台,是从一些精选项目中提取出来的代码,具有较强的参考意义,能在一定程度帮忙到你。LabelNode.getLabel()
方法的具体详情如下:
包路径:org.objectweb.asm.tree.LabelNode
类名称:LabelNode
方法名:getLabel
[英]Returns the label encapsulated by this node. A new label is created and associated with this node if it was created without an encapsulated label.
[中]返回此节点封装的标签。如果此节点是在没有封装标签的情况下创建的,则会创建一个新标签并与之关联。
代码示例来源:origin: pxb1988/dex2jar
LabelStmt getLabel(LabelNode labelNode) {
Label label = labelNode.getLabel();
LabelStmt ls = map.get(label);
if (ls == null) {
ls = Stmts.nLabel();
map.put(label, ls);
}
return ls;
}
代码示例来源:origin: pxb1988/dex2jar
protected void print(final LabelNode l) {
print(l.getLabel());
}
代码示例来源:origin: kilim/kilim
void visitLineNumbers(MethodVisitor mv) {
for (LineNumberNode node : lineNumberNodes.values()) {
mv.visitLineNumber(node.line, node.start.getLabel());
}
}
代码示例来源:origin: konsoletyper/teavm
private void prepare(MethodNode method) {
InsnList instructions = method.instructions;
minLocal = 0;
if ((method.access & Opcodes.ACC_STATIC) != 0) {
minLocal = 1;
}
labelIndexes = new HashMap<>();
lineNumbers = new HashMap<>();
for (int i = 0; i < instructions.size(); ++i) {
AbstractInsnNode node = instructions.get(i);
if (node instanceof LabelNode) {
labelIndexes.put(((LabelNode) node).getLabel(), i);
}
if (node instanceof LineNumberNode) {
LineNumberNode lineNumberNode = (LineNumberNode) node;
lineNumbers.put(lineNumberNode.start.getLabel(), lineNumberNode.line);
}
}
for (LocalVariableNode localVar : method.localVariables) {
int location = labelIndexes.get(localVar.start.getLabel());
localVariableMap.computeIfAbsent(location, k -> new ArrayList<>()).add(localVar);
}
targetInstructions = new ArrayList<>(instructions.size());
targetInstructions.addAll(Collections.nCopies(instructions.size(), null));
basicBlocks.addAll(Collections.nCopies(instructions.size(), null));
stackBefore = new StackFrame[instructions.size()];
stackAfter = new StackFrame[instructions.size()];
}
代码示例来源:origin: konsoletyper/teavm
Label label = ((LabelNode) insnNode).getLabel();
Integer lineNumber = lineNumbers.get(label);
if (lineNumber != null && !lineNumber.equals(lastLineNumber)) {
代码示例来源:origin: konsoletyper/teavm
continue;
workStack.push(new Step(-2, labelIndexes.get(tryCatchNode.handler.getLabel())));
continue;
int start = labelIndexes.get(tryCatchNode.start.getLabel());
int end = labelIndexes.get(tryCatchNode.end.getLabel());
getBasicBlock(start);
getBasicBlock(end);
tryCatch.setExceptionType(referenceCache.getCached(tryCatchNode.type.replace('/', '.')));
tryCatch.setHandler(getBasicBlock(labelIndexes.get(tryCatchNode.handler.getLabel())));
tryCatch.getHandler().setExceptionVariable(program.variableAt(minLocal + method.maxLocals));
block.getTryCatchBlocks().add(tryCatch);
代码示例来源:origin: pxb1988/dex2jar
@SuppressWarnings("rawtypes")
public static void verify(final ClassReader cr, PrintWriter out) throws AnalyzerException,
IllegalArgumentException, IllegalAccessException {
ClassNode cn = new ClassNode();
cr.accept(new CheckClassAdapter(cn, false), ClassReader.SKIP_DEBUG);
List methods = cn.methods;
for (int i = 0; i < methods.size(); ++i) {
MethodNode method = (MethodNode) methods.get(i);
List tryCatchBlocks = method.tryCatchBlocks;
for (int j = 0; j < tryCatchBlocks.size(); j++) {
TryCatchBlockNode tcn = (TryCatchBlockNode) tryCatchBlocks.get(j);
if (tcn.start.equals(tcn.end)) {
throw new DexException("try/catch block %d in %s has same start(%s) and end(%s)", j, method.name,
tcn.start.getLabel(), tcn.end.getLabel());
}
}
BasicVerifier verifier = new BasicVerifier();
Analyzer a = new Analyzer(verifier);
try {
a.analyze(cn.name, method);
} catch (Exception e) {
out.println(cr.getClassName() + "." + method.name + method.desc);
printAnalyzerResult(method, a, out);
e.printStackTrace(out);
out.flush();
throw new DexException("method " + method.name + " " + method.desc, e);
}
}
}
代码示例来源:origin: kilim/kilim
mv.visitJumpInsn(GOTO, resumeLabel.getLabel());
代码示例来源:origin: kilim/kilim
mv.visitLabel(callLabel.getLabel());
loadVar(mv, TOBJECT, methodWeaver.getFiberVar());
mv.visitMethodInsn(INVOKEVIRTUAL, FIBER_CLASS, "down", "()" + D_FIBER, false);
代码示例来源:origin: kilim/kilim
mv.visitJumpInsn(GOTO, callLabel.getLabel());
代码示例来源:origin: org.ow2.asm/asm-tree
@Override
public void accept(final MethodVisitor methodVisitor) {
methodVisitor.visitLabel(getLabel());
}
代码示例来源:origin: org.ow2.asm/asm-tree
private static Object[] asArray(final List<Object> list) {
Object[] array = new Object[list.size()];
for (int i = 0, n = array.length; i < n; ++i) {
Object o = list.get(i);
if (o instanceof LabelNode) {
o = ((LabelNode) o).getLabel();
}
array[i] = o;
}
return array;
}
}
代码示例来源:origin: org.ow2.asm/asm-debug-all
/**
* Makes the given visitor visit this local variable declaration.
*
* @param mv
* a method visitor.
*/
public void accept(final MethodVisitor mv) {
mv.visitLocalVariable(name, desc, signature, start.getLabel(),
end.getLabel(), index);
}
}
代码示例来源:origin: org.ow2.asm/asm-tree
/**
* Makes the given visitor visit this local variable declaration.
*
* @param methodVisitor a method visitor.
*/
public void accept(final MethodVisitor methodVisitor) {
methodVisitor.visitLocalVariable(
name, desc, signature, start.getLabel(), end.getLabel(), index);
}
}
代码示例来源:origin: org.ow2.asm/asm-debug-all
private static Object[] asArray(final List<Object> l) {
Object[] objs = new Object[l.size()];
for (int i = 0; i < objs.length; ++i) {
Object o = l.get(i);
if (o instanceof LabelNode) {
o = ((LabelNode) o).getLabel();
}
objs[i] = o;
}
return objs;
}
}
代码示例来源:origin: org.ow2.asm/asm-tree
@Override
public void accept(final MethodVisitor methodVisitor) {
Label[] labelsArray = new Label[this.labels.size()];
for (int i = 0, n = labelsArray.length; i < n; ++i) {
labelsArray[i] = this.labels.get(i).getLabel();
}
methodVisitor.visitTableSwitchInsn(min, max, dflt.getLabel(), labelsArray);
acceptAnnotations(methodVisitor);
}
代码示例来源:origin: org.ow2.asm/asm-debug-all
@Override
public void accept(final MethodVisitor mv) {
Label[] labels = new Label[this.labels.size()];
for (int i = 0; i < labels.length; ++i) {
labels[i] = this.labels.get(i).getLabel();
}
mv.visitTableSwitchInsn(min, max, dflt.getLabel(), labels);
acceptAnnotations(mv);
}
代码示例来源:origin: org.ow2.asm/asm-debug-all
@Override
public void accept(final MethodVisitor mv) {
int[] keys = new int[this.keys.size()];
for (int i = 0; i < keys.length; ++i) {
keys[i] = this.keys.get(i).intValue();
}
Label[] labels = new Label[this.labels.size()];
for (int i = 0; i < labels.length; ++i) {
labels[i] = this.labels.get(i).getLabel();
}
mv.visitLookupSwitchInsn(dflt.getLabel(), keys, labels);
acceptAnnotations(mv);
}
代码示例来源:origin: org.ow2.asm/asm-debug-all
@Override
public void accept(final MethodVisitor mv) {
mv.visitJumpInsn(opcode, label.getLabel());
acceptAnnotations(mv);
}
代码示例来源:origin: org.ow2.asm/asm-tree
@Override
public void accept(final MethodVisitor methodVisitor) {
methodVisitor.visitJumpInsn(opcode, label.getLabel());
acceptAnnotations(methodVisitor);
}
内容来源于网络,如有侵权,请联系作者删除!