org.objectweb.asm.tree.LabelNode.getLabel()方法的使用及代码示例

x33g5p2x  于2022-01-23 转载在 其他  
字(6.6k)|赞(0)|评价(0)|浏览(62)

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

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);
}

相关文章

微信公众号

最新文章

更多