/** * @return negation of instruction */ public IfInstruction negate() { return new IFNONNULL(target); }
/** * @return negation of instruction */ public IfInstruction negate() { return new IFNONNULL(target); }
/** * Translates an external (primitive) Java type into a string. * * @see com.sun.org.apache.xalan.internal.xsltc.compiler.util.Type#translateFrom */ public void translateFrom(ClassGenerator classGen, MethodGenerator methodGen, Class clazz) { final ConstantPoolGen cpg = classGen.getConstantPool(); final InstructionList il = methodGen.getInstructionList(); if (clazz.getName().equals("java.lang.String")) { // same internal representation, convert null to "" il.append(DUP); final BranchHandle ifNonNull = il.append(new IFNONNULL(null)); il.append(POP); il.append(new PUSH(cpg, "")); ifNonNull.setTarget(il.append(NOP)); } else { ErrorMsg err = new ErrorMsg(ErrorMsg.DATA_CONVERSION_ERR, toString(), clazz.getName()); classGen.getParser().reportError(Constants.FATAL, err); } }
/** * Translates an external (primitive) Java type into a string. * * @see com.sun.org.apache.xalan.internal.xsltc.compiler.util.Type#translateFrom */ public void translateFrom(ClassGenerator classGen, MethodGenerator methodGen, Class clazz) { final ConstantPoolGen cpg = classGen.getConstantPool(); final InstructionList il = methodGen.getInstructionList(); if (clazz.getName().equals("java.lang.String")) { // same internal representation, convert null to "" il.append(DUP); final BranchHandle ifNonNull = il.append(new IFNONNULL(null)); il.append(POP); il.append(new PUSH(cpg, "")); ifNonNull.setTarget(il.append(NOP)); } else { ErrorMsg err = new ErrorMsg(ErrorMsg.DATA_CONVERSION_ERR, toString(), clazz.getName()); classGen.getParser().reportError(Constants.FATAL, err); } }
/** Create branch instruction by given opcode, except LOOKUPSWITCH and TABLESWITCH. * For those you should use the SWITCH compound instruction. */ public static BranchInstruction createBranchInstruction(short opcode, InstructionHandle target) { switch(opcode) { case Constants.IFEQ: return new IFEQ(target); case Constants.IFNE: return new IFNE(target); case Constants.IFLT: return new IFLT(target); case Constants.IFGE: return new IFGE(target); case Constants.IFGT: return new IFGT(target); case Constants.IFLE: return new IFLE(target); case Constants.IF_ICMPEQ: return new IF_ICMPEQ(target); case Constants.IF_ICMPNE: return new IF_ICMPNE(target); case Constants.IF_ICMPLT: return new IF_ICMPLT(target); case Constants.IF_ICMPGE: return new IF_ICMPGE(target); case Constants.IF_ICMPGT: return new IF_ICMPGT(target); case Constants.IF_ICMPLE: return new IF_ICMPLE(target); case Constants.IF_ACMPEQ: return new IF_ACMPEQ(target); case Constants.IF_ACMPNE: return new IF_ACMPNE(target); case Constants.GOTO: return new GOTO(target); case Constants.JSR: return new JSR(target); case Constants.IFNULL: return new IFNULL(target); case Constants.IFNONNULL: return new IFNONNULL(target); case Constants.GOTO_W: return new GOTO_W(target); case Constants.JSR_W: return new JSR_W(target); default: throw new RuntimeException("Invalid opcode: " + opcode); } }
/** Create branch instruction by given opcode, except LOOKUPSWITCH and TABLESWITCH. * For those you should use the SWITCH compound instruction. */ public static BranchInstruction createBranchInstruction(short opcode, InstructionHandle target) { switch(opcode) { case Constants.IFEQ: return new IFEQ(target); case Constants.IFNE: return new IFNE(target); case Constants.IFLT: return new IFLT(target); case Constants.IFGE: return new IFGE(target); case Constants.IFGT: return new IFGT(target); case Constants.IFLE: return new IFLE(target); case Constants.IF_ICMPEQ: return new IF_ICMPEQ(target); case Constants.IF_ICMPNE: return new IF_ICMPNE(target); case Constants.IF_ICMPLT: return new IF_ICMPLT(target); case Constants.IF_ICMPGE: return new IF_ICMPGE(target); case Constants.IF_ICMPGT: return new IF_ICMPGT(target); case Constants.IF_ICMPLE: return new IF_ICMPLE(target); case Constants.IF_ACMPEQ: return new IF_ACMPEQ(target); case Constants.IF_ACMPNE: return new IF_ACMPNE(target); case Constants.GOTO: return new GOTO(target); case Constants.JSR: return new JSR(target); case Constants.IFNULL: return new IFNULL(target); case Constants.IFNONNULL: return new IFNONNULL(target); case Constants.GOTO_W: return new GOTO_W(target); case Constants.JSR_W: return new JSR_W(target); default: throw new RuntimeException("Invalid opcode: " + opcode); } }
final BranchHandle ifBlock1 = il.append(new IFNONNULL(null));
final BranchHandle ifBlock1 = il.append(new IFNONNULL(null));
BranchHandle ifBlock = il.append(new IFNONNULL(null)); translateValue(classGen, methodGen); il.append(storeInstruction());
BranchHandle ifBlock = il.append(new IFNONNULL(null)); translateValue(classGen, methodGen); il.append(storeInstruction());
il.append(DUP); il.append(new ASTORE(iter.getIndex())); ifBlock = il.append(new IFNONNULL(null)); il.append(classGen.loadTranslet());
il.append(DUP); il.append(new ASTORE(iter.getIndex())); ifBlock = il.append(new IFNONNULL(null)); il.append(classGen.loadTranslet());