vstack.push1(FloatItem.createStack()); }
ref.release(eContext); idx.release(eContext);   final Item result = FloatItem.createFPUStack(); vstack.fpuStack.push(result); vstack.push(result); }
    public final void visit_faload() {        IntItem idx = vstack.popInt();        RefItem ref = vstack.popRef();        // flush vstack onto operand stack because result        // is also on stack        vstack.push(eContext);        idx.loadIf(eContext, ~Item.Kind.CONSTANT);        ref.load(eContext);        final Register refReg = ref.getRegister();        checkBounds(ref, idx);        //IMPROVE: load to ST        if (idx.getKind() == Item.Kind.CONSTANT) {            final int offset = idx.getValue();            //os.writeMOV(INTSIZE, refReg, refReg, offset+VmArray.DATA_OFFSET            // * 4);            os.writePUSH(refReg, offset + VmArray.DATA_OFFSET * 4);            idx.release(eContext);        } else {            //os.writeMOV(INTSIZE, refReg, refReg, idx.getRegister(), 2,            // VmArray.DATA_OFFSET * 4);            os.writePUSH(refReg, idx.getRegister(), 2, VmArray.DATA_OFFSET * 4);            ref.release(eContext);            idx.release(eContext);        }        // do not release ref, it is recycled into the result        vstack.push1(FloatItem.createStack());    }