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

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

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

LabelNode.<init>介绍

暂无

代码示例

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

public LabelNode getOrCreateGotoLabel(String name) {
  name = name.toLowerCase();
  if (gotoLabels == null)
    gotoLabels = new HashMap<String, LabelNode>();
  LabelNode label = gotoLabels.get(name);
  if (label == null)
    gotoLabels.put(name, label = new LabelNode());
  return label;
}

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

public LabelNode makeLabel() {
  LabelNode el;
  code.add(el = new LabelNode());
  return el;
}

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

public void writeUndefineVariables(Collection<VariableExprToken> values) {
  LabelNode end = new LabelNode();
  for (VariableExprToken value : values)
    writeUndefineVariable(value, end);
}

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

LabelNode getOrCreateLabelAtPos(int pos) {
  LabelNode ret = null;
  if (pos < posToLabelMap.size()) {
    ret = posToLabelMap.get(pos);
  }
  if (ret == null) {
    ret = new LabelNode();
    setLabel(pos, ret);
  }
  return ret;
}

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

public LabelNode writeLabel(MethodNode mv, int lineNumber){
  LabelNode node = new LabelNode(new Label());
  mv.instructions.add(node);
  if (lineNumber != -1)
    mv.instructions.add(new LineNumberNode(lineNumber, node));
  return node;
}

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

void dupBBAndLabels(boolean deepCopy,
    HashMap<BasicBlock, BasicBlock> bbCopyMap,
    HashMap<LabelNode, LabelNode> labelCopyMap, BasicBlock returnToBB)
                                 throws KilimException {
  for (BasicBlock orig : getSubBlocks()) {
    BasicBlock dup = new BasicBlock(flow, orig.startLabel); 
    bbCopyMap.put(orig, dup);
    if (deepCopy) {
      // copy labels for each instruction. This copy will be used
      // in dupCopyContents
      for (int i = orig.startPos; i <= orig.endPos; i++) {
        LabelNode origLabel = flow.getLabelAt(i);
        if (origLabel != null) {
          LabelNode l = labelCopyMap.put(origLabel, new LabelNode());
          assert l == null;
        }
      }
      // dup.startLabel reset later in dupCopyContents
    } 
  }
}

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

public void writeLineNumber(Token token) {
  if (token.getMeta().getStartLine() > lastLineNumber) {
    lastLineNumber = token.getMeta().getStartLine();
    code.add(new LineNumberNode(lastLineNumber, new LabelNode()));
  }
}

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

public CallWeaver(MethodWeaver mw, Detector d, BasicBlock aBB) {
  detector = d;
  methodWeaver = mw;
  bb = aBB;
  callLabel = bb.startLabel;
  varUsage = new BitSet(2 * bb.flow.maxLocals);
  resumeLabel = bb.flow.getLabelAt(bb.startPos + 1);
  if (resumeLabel == null)
    resumeLabel = new LabelNode();
  assignRegisters();
  stateClassName = createStateClass();
  methodWeaver.ensureMaxStack(getNumBottom() + 3); // 
}

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

@SuppressWarnings("unchecked")
void writeFooter(){
  LabelNode endL = new LabelNode();
  node.instructions.add(endL);
  for(LocalVariable variable : localVariables.values()){
    String description = Type.getDescriptor(variable.getClazz() == null ? Object.class : variable.getClazz());
    if (variable.name.equals("~this")) {
      //if (variable.getClazz() != Memory.class && !clazz.statement.isTrait()) {
        description = "L" + clazz.entity.getCompiledInternalName() + ";";
      //}
    }
    node.localVariables.add(new LocalVariableNode(
        variable.name,
        description,
        null,
        variable.label == null ? labelStart : variable.label,
        variable.getEndLabel() == null ? endL : variable.getEndLabel(),
        variable.index
    ));
  }
  //node.maxStack = this.stackMaxSize;  !!! we don't need this, see: ClassWriter.COMPUTE_FRAMES
  //node.maxLocals = this.localVariables.size();
}

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

loadVar(mv, TOBJECT, methodWeaver.getFiberVar());
mv.visitMethodInsn(INVOKEVIRTUAL, FIBER_CLASS, "up", "()I", false);
LabelNode restoreLabel = new LabelNode();
LabelNode saveLabel = new LabelNode();
LabelNode unwindLabel = new LabelNode();
LabelNode[] labels = new LabelNode[] { resumeLabel, restoreLabel, saveLabel,
    unwindLabel };

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

LabelNode resumeLabel = new LabelNode();
VMType.loadVar(mv, VMType.TOBJECT, getFiberVar());
mv.visitMethodInsn(INVOKEVIRTUAL, FIBER_CLASS, "upEx", "()I", false);
int[] keys = new int[cwList.size()];
for (int i = 0; i < cwList.size(); i++) {
  labels[i] = new LabelNode();
  keys[i] = callWeavers.indexOf(cwList.get(i)) + 1;

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

private void writeBody(IfStmtToken token) {
  LabelNode end = new LabelNode();
  LabelNode elseL = new LabelNode();
  expr.writePopBoolean();
  add(new JumpInsnNode(IFEQ, token.getElseBody() != null ? elseL : end));
  expr.stackPop();
  if (token.getBody() != null) {
    expr.write(token.getBody());
  }
  if (token.getElseBody() != null){
    add(new JumpInsnNode(GOTO, end));
    add(elseL);
    expr.write(token.getElseBody());
  }
  add(end);
  add(new LineNumberNode(token.getMeta().getEndLine(), end));
}

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

LabelNode iter = new LabelNode();
LabelNode end = new LabelNode();

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

expr.writeDefineVariables(token.getLocal());
LabelNode l = new LabelNode();
LabelNode end = new LabelNode();
int i = 0;
for(CaseStmtToken one : token.getCases()) {
  jumps[i] = new LabelNode[]{ new LabelNode(), new LabelNode() }; // checkLabel, bodyLabel
  if (i == jumps.length - 1)
    jumps[i] = new LabelNode[]{ end, end };

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

methodCompiler.writeHeader();
LabelNode end = new LabelNode();
LabelNode l0 = writeLabel(destructor, statement.getMeta().getStartLine());
methodCompiler.addLocalVariable("~this", l0);

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

@Override
  public void write(WhileStmtToken token) {
    expr.writeDefineVariables(token.getLocal());

    LabelNode start = expr.writeLabel(node, token.getMeta().getStartLine());
    LabelNode end = new LabelNode();

    expr.writeConditional(token.getCondition(), end);

    method.pushJump(end, start);
    expr.write(BodyStmtToken.class, token.getBody());
    method.popJump();

    add(new JumpInsnNode(GOTO, start));
    add(end);
    add(new LineNumberNode(token.getMeta().getEndLine(), end));

    expr.writeUndefineVariables(token.getLocal());
  }
}

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

@Override
  public void write(DoStmtToken token) {
    expr.writeDefineVariables(token.getLocal());

    LabelNode start = expr.writeLabel(node, token.getMeta().getStartLine());
    LabelNode end = new LabelNode();

    method.pushJump(end, start);
    expr.write(token.getBody());
    method.popJump();

    expr.writeConditional(token.getCondition(), end);

    add(new JumpInsnNode(GOTO, start));
    add(end);
    add(new LineNumberNode(token.getMeta().getEndLine(), end));

    expr.writeUndefineVariables(token.getLocal());
  }
}

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

stackPop();
} else {
  LabelNode endLabel = new LabelNode();
  LabelNode elseLabel = new LabelNode();

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

writePopBoolean();
LabelNode end = new LabelNode();
LabelNode next = new LabelNode();

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

assert local != null;
LabelNode end = new LabelNode();
boolean isClosure = method.clazz.isClosure();

相关文章

微信公众号

最新文章

更多