private void emit_cond(String comp) { Label lbl1 = b.createLabel(); Label lbl2 = b.createLabel(); b.ifComparisonBranch(lbl1, comp, TypeDesc.DOUBLE); b.loadConstant(1); b.branch(lbl2); lbl1.setLocation(); b.loadConstant(0); lbl2.setLocation(); }
mBuilder.ifComparisonBranch(noMatch, "!=");
mBuilder.ifComparisonBranch(loopEnd, "=="); } else { LocalVariable tempChar; mBuilder.ifComparisonBranch(loopEnd, "==");
void successIfComparisonElseFail(CodeBuilder b, RelOp relOp) { if (mSuccessLocation != null) { b.ifComparisonBranch(mSuccessLocation, relOpToChoice(relOp)); fail(b); } else if (mFailLocation != null) { b.ifComparisonBranch(mFailLocation, relOpToChoice(relOp.reverse())); success(b); } else { Label success = b.createLabel(); b.ifComparisonBranch(success, relOpToChoice(relOp)); b.loadConstant(false); b.returnValue(BOOLEAN); success.setLocation(); b.loadConstant(true); b.returnValue(BOOLEAN); } }
void successIfComparisonElseFail(CodeBuilder b, RelOp relOp) { if (mSuccessLocation != null) { b.ifComparisonBranch(mSuccessLocation, relOpToChoice(relOp)); fail(b); } else if (mFailLocation != null) { b.ifComparisonBranch(mFailLocation, relOpToChoice(relOp.reverse())); success(b); } else { Label success = b.createLabel(); b.ifComparisonBranch(success, relOpToChoice(relOp)); b.loadConstant(false); b.returnValue(BOOLEAN); success.setLocation(); b.loadConstant(true); b.returnValue(BOOLEAN); } }
/** * Generates code to branch if a property is dirty. * * @param propNumber property number from all properties map * @param target branch target * @param when true, branch if dirty; when false, branch when not dirty */ private void branchIfDirty(CodeBuilder b, int propNumber, Label target, boolean branchIfDirty) { String stateFieldName = StorableGenerator.PROPERTY_STATE_FIELD_NAME + (propNumber >> 4); b.loadThis(); b.loadField(stateFieldName, TypeDesc.INT); int shift = (propNumber & 0xf) * 2; b.loadConstant(StorableGenerator.PROPERTY_STATE_MASK << shift); b.math(Opcode.IAND); b.loadConstant(StorableGenerator.PROPERTY_STATE_DIRTY << shift); b.ifComparisonBranch(target, branchIfDirty ? "==" : "!="); }
/** * Generates code to branch if a property is dirty. * * @param propNumber property number from all properties map * @param target branch target * @param when true, branch if dirty; when false, branch when not dirty */ private void branchIfDirty(CodeBuilder b, int propNumber, Label target, boolean branchIfDirty) { String stateFieldName = StorableGenerator.PROPERTY_STATE_FIELD_NAME + (propNumber >> 4); b.loadThis(); b.loadField(stateFieldName, TypeDesc.INT); int shift = (propNumber & 0xf) * 2; b.loadConstant(StorableGenerator.PROPERTY_STATE_MASK << shift); b.math(Opcode.IAND); b.loadConstant(StorableGenerator.PROPERTY_STATE_DIRTY << shift); b.ifComparisonBranch(target, branchIfDirty ? "==" : "!="); }
mBuilder.ifComparisonBranch(noMatch, "!=");
mBuilder.ifComparisonBranch(loopEnd, "=="); } else { LocalVariable tempChar; mBuilder.ifComparisonBranch(loopEnd, "==");
b.loadConstant(StorableGenerator.PROPERTY_STATE_DIRTY << shift); b.ifComparisonBranch(skipNormalize, "!=");
b.loadConstant(StorableGenerator.PROPERTY_STATE_DIRTY << shift); b.ifComparisonBranch(skipNormalize, "!=");
} else { b.loadConstant(state); b.ifComparisonBranch(isFalse, "!=");
} else { b.loadConstant(state); b.ifComparisonBranch(isFalse, "!=");
b.ifZeroComparisonBranch(label, choice ? "==" : "!="); } else { b.ifComparisonBranch(label, choice ? "==" : "!=", valueType);
b.loadConstant(StorableGenerator.PROPERTY_STATE_CLEAN << ((property.getNumber() & 0xf) * 2)); Label isMutable = b.createLabel(); b.ifComparisonBranch(isMutable, "!="); CodeBuilderUtil.throwException (b, IllegalStateException.class, "Cannot alter partition key"); b.ifComparisonBranch(allowedVersion, ">", primVersionType); } else if (Comparable.class.isAssignableFrom(versionProperty.getType())) { b.loadLocal(newVersion);
b.ifZeroComparisonBranch(label, choice ? "==" : "!="); } else { b.ifComparisonBranch(label, choice ? "==" : "!=", valueType);
b.loadConstant(StorableGenerator.PROPERTY_STATE_CLEAN << ((property.getNumber() & 0xf) * 2)); Label isMutable = b.createLabel(); b.ifComparisonBranch(isMutable, "!="); CodeBuilderUtil.throwException (b, IllegalStateException.class, "Cannot alter partition key"); b.ifComparisonBranch(allowedVersion, ">", primVersionType); } else if (Comparable.class.isAssignableFrom(versionProperty.getType())) { b.loadLocal(newVersion);
b.math(Opcode.IAND); b.loadConstant(PROPERTY_STATE_DIRTY << ((ordinal & 0xf) * 2)); b.ifComparisonBranch(skipCopy, "!=");
b.math(Opcode.IAND); b.loadConstant(PROPERTY_STATE_DIRTY << ((ordinal & 0xf) * 2)); b.ifComparisonBranch(skipCopy, "!=");
b.loadConstant(PROPERTY_STATE_CLEAN << ((ordinal & 0xf) * 2)); Label isMutable = b.createLabel(); b.ifComparisonBranch(isMutable, "!="); CodeBuilderUtil.throwException (b, IllegalStateException.class, "Cannot alter primary key"); b.loadConstant(PROPERTY_STATE_CLEAN << ((ord & 0xf) * 2)); b.ifComparisonBranch(setInternalProp, "!=");