final LongItem result = LongItem.createReg(lsb, msb);
final LongItem result = (LongItem)ifac.createReg(JvmType.LONG, lsb, msb);
    public final void visit_lshr() {        final IntItem cnt = vstack.popInt();        final LongItem val = vstack.popLong();        final X86RegisterPool pool = eContext.getPool();        // Get cnt into ECX        if (!cnt.uses(ECX)) {            val.spillIfUsing(eContext, ECX);            L1AHelper.requestRegister(eContext, ECX, cnt);            cnt.loadTo(eContext, ECX);        }        // Load val        val.load(eContext);        final Register lsb = val.getLsbRegister();        final Register msb = val.getMsbRegister();        // Calculate        os.writeAND(ECX, 63);        os.writeCMP_Const(ECX, 32);        final Label gt32Label = new Label(curInstrLabel + "gt32");        final Label endLabel = new Label(curInstrLabel + "end");        os.writeJCC(gt32Label, X86Constants.JAE); // JAE        /** ECX < 32 */        os.writeSHRD_CL(lsb, msb);        os.writeSAR_CL(msb);        os.writeJMP(endLabel);        /** ECX >= 32 */        os.setObjectRef(gt32Label);        os.writeMOV(INTSIZE, lsb, msb);        os.writeSAR(msb, 31);        os.writeSAR_CL(lsb);        os.setObjectRef(endLabel);        // Push        final LongItem result = LongItem.createReg(lsb, msb);        pool.transferOwnerTo(lsb, result);        pool.transferOwnerTo(msb, result);        vstack.push(result);        // Release        cnt.release(eContext);    }