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