public void writeConditionalBranch16(ConditionalBranch16 _branch16, boolean _invert) throws CodeGenException { if (_branch16 instanceof If) { final If iff = (If) _branch16; writeInstruction(iff.getLhs()); write(_branch16.getOperator().getText(_invert)); writeInstruction(iff.getRhs()); } else if (_branch16 instanceof I_IFNULL) { final I_IFNULL iff = (I_IFNULL) _branch16; writeInstruction(iff.getFirstChild()); if (_invert) { write(" != NULL"); } else { write(" == NULL"); } } else if (_branch16 instanceof I_IFNONNULL) { final I_IFNONNULL iff = (I_IFNONNULL) _branch16; writeInstruction(iff.getFirstChild()); if (_invert) { write(" == NULL"); } else { write(" != NULL"); } } else if (_branch16 instanceof IfUnary) { final IfUnary branch16 = (IfUnary) _branch16; final Instruction comparison = branch16.getUnary(); final ByteCode comparisonByteCode = comparison.getByteCode(); final String comparisonOperator = _branch16.getOperator().getText(_invert); switch (comparisonByteCode) { case FCMPG: case DCMPG: case FCMPL: case DCMPL: if (Config.verboseComparitor) { write("/* bytecode=" + comparisonByteCode.getName() + " invert=" + _invert + "*/"); } writeInstruction(comparison.getFirstChild()); write(comparisonOperator); writeInstruction(comparison.getLastChild()); break; default: if (Config.verboseComparitor) { write( "/* default bytecode=" + comparisonByteCode.getName() + " invert=" + _invert + "*/"); } writeInstruction(comparison); write(comparisonOperator); write("0"); } } }