final IntItem res = IntItem.createReg(resr);
final ItemFactory ifac = ec.getItemFactory(); final IntItem res = (IntItem)ifac.createReg(JvmType.INT, resr);
	final static void compare(AbstractX86Stream os, EmitterContext ec,			VirtualStack vstack, boolean gt, int type, Label curInstrLabel) {		final Item v2 = vstack.pop(type);		final Item v1 = vstack.pop(type);		// Prepare operands		final FPUStack fpuStack = vstack.fpuStack;		final Register reg;		reg = prepareForOperation(os, ec, vstack, fpuStack, v2, v1, false);		// We need reg to be ST1.		fxchST1(os, fpuStack, reg);		final X86RegisterPool pool = ec.getPool();		pool.request(EAX);		final Register resr = pool.request(JvmType.INT);		if (!gt) {			// Reverse order			fxch(os, fpuStack, Register.ST1);		}		os.writeFUCOMPP(); // Compare, Pop twice		os.writeFNSTSW_AX(); // Store fp status word in AX		os.writeSAHF(); // Store AH to Flags		// Pop fpu stack twice (FUCOMPP)		fpuStack.pop();		fpuStack.pop();		final Label eqLabel = new Label(curInstrLabel + "eq");		final Label ltLabel = new Label(curInstrLabel + "lt");		final Label endLabel = new Label(curInstrLabel + "end");		os.writeJCC(eqLabel, X86Constants.JE);		os.writeJCC(ltLabel, X86Constants.JB);		// Greater		if (gt) {			os.writeMOV_Const(resr, -1);		} else {			os.writeMOV_Const(resr, 1);		}		os.writeJMP(endLabel);		// Equal		os.setObjectRef(eqLabel);		os.writeXOR(resr, resr);		os.writeJMP(endLabel);		// Less		os.setObjectRef(ltLabel);		if (gt) {			os.writeMOV_Const(resr, 1);		} else {			os.writeMOV_Const(resr, -1);		}		// End		os.setObjectRef(endLabel);		// Push result		final IntItem res = IntItem.createReg(resr);		pool.transferOwnerTo(resr, res);		vstack.push(res);		// Release		pool.release(EAX);	}