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

x33g5p2x  于2022-01-21 转载在 其他  
字(7.4k)|赞(0)|评价(0)|浏览(96)

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

JumpInsnNode.<init>介绍

[英]Constructs a new JumpInsnNode.
[中]构造一个新的JumpInsnNode。

代码示例

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

void changeLastInsnToGOTO(LabelNode label) {
  setInstruction(endPos, new JumpInsnNode(GOTO, label));
}

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

public void writeConditional(ExprStmtToken condition, LabelNode successLabel) {
  writeExpression(condition, true, false);
  writePopBoolean();
  code.add(new JumpInsnNode(IFEQ, successLabel));
  stackPop();
}

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

@Override
  public void write(JumpStmtToken token) {
    int level = token.getLevel();
    JumpItem jump = method.getJump(level);

    if (jump == null){
      env.error(
          token.toTraceInfo(compiler.getContext()),
          ErrorType.E_COMPILE_ERROR,
          level == 1
              ? Messages.ERR_CANNOT_JUMP.fetch()
              : Messages.ERR_CANNOT_JUMP_TO_LEVEL.fetch(level)
      );
      return;
    }

    if (token instanceof ContinueStmtToken){
      add(new JumpInsnNode(GOTO, jump.continueLabel));
    } else if (token instanceof BreakStmtToken){
      add(new JumpInsnNode(GOTO, jump.breakLabel));
    }
  }
}

代码示例来源: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

this.expr.writePopBoolean();
add(new JumpInsnNode(IFEQ, end));
this.expr.stackPop();
  this.expr.writeExpression(expr, false, false);
add(new JumpInsnNode(GOTO, start));
add(end);
add(new LineNumberNode(token.getMeta().getEndLine(), end));

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

add(new JumpInsnNode(GOTO, catchEnd));
add(catchStart);
    add(new JumpInsnNode(IFEQ, j == catchExceptions.size() - 1 ? nextCatch : nextCatchLocal));
    expr.stackPop();
      add(new JumpInsnNode(GOTO, bodyLabel));
  add(new JumpInsnNode(GOTO, catchEnd));
  add(new JumpInsnNode(GOTO, skip));
  } else {
    add(new JumpInsnNode(GOTO, method.getTryStack().peek().getReturnLabel()));

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

code.add(new JumpInsnNode(IFEQ, next));
  stackPop();
  if (returnValue) {
  code.add(new JumpInsnNode(IFNE, next));
  stackPop();
  if (returnValue) {
code.add(new JumpInsnNode(GOTO, end));

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

destructor.instructions.add(new JumpInsnNode(IFEQ, end));

代码示例来源: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

@Override
  public void write(GotoStmtToken token) {
    LabelNode labelNode = method.getOrCreateGotoLabel(token.getLabel().getName());
    LabelStmtToken labelStmtToken = method.statement.findLabel(token.getLabel().getName());
    if (labelStmtToken == null) {
      compiler.getEnvironment().error(
          token.getLabel().toTraceInfo(compiler.getContext()),
          "'goto' to undefined label '%s'", token.getLabel().getName()
      );
      return;
    }

    if (labelStmtToken.getLevel() > token.getLevel()) {
      compiler.getEnvironment().error(
          token.toTraceInfo(compiler.getContext()),
          "'goto' into loop, switch or finally statement is disallowed"
      );
    }

    add(new JumpInsnNode(GOTO, labelNode));
  }
}

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

writeSysDynamicCall(IObject.class, "isMock", Boolean.TYPE);
code.add(new JumpInsnNode(IFEQ, elseLabel));
stackPop();
code.add(new JumpInsnNode(GOTO, endLabel));
code.add(elseLabel);

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

expr.writeExpression(one.getConditional(), true, false);
  expr.writeSysDynamicCall(Memory.class, "equal", Boolean.TYPE, expr.stackPeek().type.toClass());
  add(new JumpInsnNode(IFEQ, jumps[i + 1][0]));
  expr.stackPop();
add(new JumpInsnNode(GOTO, jumps[i][1])); // if is done...
i++;

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

expr.writePushDup();
add(new JumpInsnNode(IFNONNULL, end));
expr.stackPop();

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

node.instructions.add(new JumpInsnNode(Opcodes.IFNONNULL, next));
expressionCompiler.stackPop();

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

add(new JumpInsnNode(GOTO, method.getTryStack().peek().getReturnLabel()));
} else {
  add(new InsnNode(ARETURN));

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

add(new JumpInsnNode(IFEQ, end));
expr.stackPop();
add(new JumpInsnNode(GOTO, start));
add(end);

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

code.add(new JumpInsnNode(Opcodes.IFEQ, elseL));
stackPop();
stackPop();
code.add(new JumpInsnNode(Opcodes.GOTO, end));
code.add(elseL);
writePopBoolean();
code.add(new JumpInsnNode(Opcodes.IFEQ, elseL));
stackPop();
writeExpression(valueIfElseToken.getValue(), true, false);
stackPop();
code.add(new JumpInsnNode(Opcodes.GOTO, end)); // goto end

代码示例来源:origin: hcoles/pitest

@Test
public void shouldMatchConditionalJumps() {
 assertFalse(aConditionalJump().test(this.context,new JumpInsnNode(Opcodes.GOTO, null)));
 assertFalse(aConditionalJump().test(this.context, new JumpInsnNode(Opcodes.JSR, null)));
 assertTrue(aConditionalJump().test(this.context, new JumpInsnNode(Opcodes.IFEQ, null)));
 assertTrue(aConditionalJump().test(this.context, new JumpInsnNode(Opcodes.IFNE, null)));
 assertTrue(aConditionalJump().test(this.context, new JumpInsnNode(Opcodes.IFLT, null)));
 assertTrue(aConditionalJump().test(this.context, new JumpInsnNode(Opcodes.IFGE, null)));
 assertTrue(aConditionalJump().test(this.context, new JumpInsnNode(Opcodes.IFGT, null)));
 assertTrue(aConditionalJump().test(this.context, new JumpInsnNode(Opcodes.IFLE, null)));
 assertTrue(aConditionalJump().test(this.context, new JumpInsnNode(Opcodes.IF_ICMPEQ, null)));
 assertTrue(aConditionalJump().test(this.context, new JumpInsnNode(Opcodes.IF_ICMPNE, null)));
 assertTrue(aConditionalJump().test(this.context, new JumpInsnNode(Opcodes.IF_ICMPLT, null)));
 assertTrue(aConditionalJump().test(this.context, new JumpInsnNode(Opcodes.IF_ICMPGE, null)));
 assertTrue(aConditionalJump().test(this.context, new JumpInsnNode(Opcodes.IF_ICMPGT, null)));
 assertTrue(aConditionalJump().test(this.context, new JumpInsnNode(Opcodes.IF_ICMPLE, null)));
 assertTrue(aConditionalJump().test(this.context, new JumpInsnNode(Opcodes.IF_ACMPEQ, null)));
 assertTrue(aConditionalJump().test(this.context, new JumpInsnNode(Opcodes.IF_ACMPNE, null)));
 assertTrue(aConditionalJump().test(this.context, new JumpInsnNode(Opcodes.IFNULL, null)));
 assertTrue(aConditionalJump().test(this.context, new JumpInsnNode(Opcodes.IFNONNULL, null)));
}

代码示例来源:origin: hcoles/pitest

@Test
public void shouldMatchJumps() {
 assertTrue(aJump().test(this.context,new JumpInsnNode(Opcodes.GOTO, null)));
 assertFalse(aJump().test(this.context, new InsnNode(Opcodes.ACONST_NULL)));
}

相关文章