Examples of GPR


Examples of org.jnode.assembler.x86.X86Register.GPR

            vstack.push(ifac.createLConst(eContext, -v.getValue()));
        } else {
            // Load val
            v.load(eContext);
            if (os.isCode32()) {
                final GPR lsb = v.getLsbRegister(eContext);
                final GPR msb = v.getMsbRegister(eContext);

                // Calculate
                os.writeNEG(msb); // msb := -msb
                os.writeNEG(lsb); // lsb := -lsb
                os.writeSBB(msb, 0); // high += borrow
View Full Code Here

Examples of org.jnode.assembler.x86.X86Register.GPR

        final int n = matchValues.length;
        // BootLogInstance.get().debug("lookupswitch length=" + n);

        final IntItem key = vstack.popInt();
        key.load(eContext);
        final GPR keyr = key.getRegister();
        // Conservative assumption, flush stack
        vstack.push(eContext);
        key.release(eContext);

        for (int i = 0; i < n; i++) {
View Full Code Here

Examples of org.jnode.assembler.x86.X86Register.GPR

    /**
     * @see org.jnode.vm.bytecode.BytecodeVisitor#visit_lshl()
     */
    public final void visit_lshl() {
        final GPR ECX = X86Register.ECX;

        final IntItem cnt = vstack.popInt();
        final LongItem val = vstack.popLong();

        if (!cnt.uses(ECX)) {
            val.spillIfUsing(eContext, ECX);
            L1AHelper.requestRegister(eContext, ECX, cnt);
            cnt.loadTo(eContext, ECX);
        }
        val.load(eContext);

        if (os.isCode32()) {
            final GPR v1_lsb = val.getLsbRegister(eContext);
            final GPR v1_msb = val.getMsbRegister(eContext);
            final Label curInstrLabel = getCurInstrLabel();

            os.writeAND(ECX, 63);
            os.writeCMP_Const(ECX, 32);
            final Label gt32Label = new Label(curInstrLabel + "gt32");
View Full Code Here

Examples of org.jnode.assembler.x86.X86Register.GPR

    /**
     * @see org.jnode.vm.bytecode.BytecodeVisitor#visit_lshr()
     */
    public final void visit_lshr() {
        final GPR ECX = X86Register.ECX;

        final IntItem cnt = vstack.popInt();
        final LongItem val = vstack.popLong();

        // Get cnt into ECX
View Full Code Here

Examples of org.jnode.assembler.x86.X86Register.GPR

    /**
     * @see org.jnode.vm.bytecode.BytecodeVisitor#visit_lushr()
     */
    public final void visit_lushr() {
        final GPR ECX = X86Register.ECX;

        final IntItem cnt = vstack.popInt();
        final LongItem val = vstack.popLong();

        // Get cnt into ECX
View Full Code Here

Examples of org.jnode.assembler.x86.X86Register.GPR

        helper.writePushStaticsEntry(getCurInstrLabel(), helper.getMethod().getDeclaringClass()); /* currentClass */
        os.writePUSH(10); /* type=int */
        os.writePUSH(dimensions); /* elements */
        invokeJavaMethod(context.getAllocPrimitiveArrayMethod());
        final RefItem dims = vstack.popRef();
        final GPR dimsr = dims.getRegister();
        // Dimension array is now in dimsr

        // Pop all dimensions (note the reverse order that allocMultiArray
        // expects)
        for (int i = 0; i < dimensions; i++) {
            final int ofs = arrayDataOffset + (i * 4);
            final IntItem v = vstack.popInt();
            v.release1(eContext);
            os.writePOP(dimsr, ofs);
        }

        // Allocate tmp register
        final GPR classr = (GPR) L1AHelper.requestRegister(eContext,
            JvmType.REFERENCE, false);

        // Resolve the array class
        writeResolveAndLoadClassToReg(clazz, classr);

View Full Code Here

Examples of org.jnode.assembler.x86.X86Register.GPR

        // Push all
        vstack.push(eContext);

        // Allocate tmp register
        final GPR classr = (GPR) L1AHelper.requestRegister(eContext,
            JvmType.REFERENCE, false);

        writeResolveAndLoadClassToReg(classRef, classr);
        /* Setup a call to SoftByteCodes.allocObject */
        os.writePUSH(classr); /* vmClass */
 
View Full Code Here

Examples of org.jnode.assembler.x86.X86Register.GPR

        final RefItem ref = vstack.popRef();

        // Load value & ref
        val.load(eContext);
        ref.load(eContext);
        final GPR refr = ref.getRegister();

        if (!wide) {
            final WordItem wval = (WordItem) val;
            final GPR valr = wval.getRegister();
            final char fieldType = field.getSignature().charAt(0);

            // Store field
            switch (fieldType) {
                case 'Z': // boolean
                case 'B': // byte
                    wval.loadToBITS8GPR(eContext);
                    os.writeMOV(BITS8, refr, offset, wval.getRegister());
                    break;
                case 'C': // char
                case 'S': // short
                    os.writeMOV(BITS16, refr, offset, valr);
                    break;
                case 'F': // float
                case 'I': // int
                case 'L': // Object
                case '[': // array
                    os.writeMOV(valr.getSize(), refr, offset, valr);
                    break;
                default:
                    throw new IllegalArgumentException("Unknown fieldType: " + fieldType);
            }
            // Writebarrier
            if (!inf.isPrimitive() && helper.needsWriteBarrier()) {
                final GPR tmp = (GPR) L1AHelper.requestRegister(eContext,
                    JvmType.REFERENCE, false);
                helper.writePutfieldWriteBarrier(inf, refr, valr, tmp);
                L1AHelper.releaseRegister(eContext, tmp);
            }
        } else {
View Full Code Here

Examples of org.jnode.assembler.x86.X86Register.GPR

        val.load(eContext);

        // Put static field
        if (!fieldRef.isWide()) {
            final WordItem wval = (WordItem) val;
            final GPR valr = wval.getRegister();

            if (os.isCode32() || (wval.getType() != JvmType.REFERENCE)) {
                if (sf.isShared()) {
                    helper.writePutStaticsEntry(curInstrLabel, valr, sf);
                } else {
                    final GPR tmp = (GPR) L1AHelper.requestRegister(eContext,
                        JvmType.REFERENCE, false);
                    helper.writePutStaticsEntry(curInstrLabel, valr, sf, tmp);
                    L1AHelper.releaseRegister(eContext, tmp);
                }
            } else {
                if (sf.isShared()) {
                    helper.writePutStaticsEntry64(curInstrLabel, (GPR64) valr, sf);
                } else {
                    final GPR tmp = (GPR) L1AHelper.requestRegister(eContext, JvmType.REFERENCE, false);
                    helper.writePutStaticsEntry64(curInstrLabel, (GPR64) valr, sf, tmp);
                    L1AHelper.releaseRegister(eContext, tmp);
                }
            }
            if (!sf.isPrimitive() && helper.needsWriteBarrier()) {
                final GPR tmp = (GPR) L1AHelper.requestRegister(eContext, JvmType.INT, false);
                helper.writePutstaticWriteBarrier(sf, valr, tmp);
                L1AHelper.releaseRegister(eContext, tmp);
            }
        } else {
            final DoubleWordItem dval = (DoubleWordItem) val;
            if (os.isCode32()) {
                if (sf.isShared()) {
                    helper.writePutStaticsEntry64(curInstrLabel, dval.getLsbRegister(eContext), dval
                        .getMsbRegister(eContext), sf);
                } else {
                    final GPR tmp = (GPR) L1AHelper.requestRegister(eContext, JvmType.REFERENCE, false);
                    helper.writePutStaticsEntry64(curInstrLabel, dval.getLsbRegister(eContext),
                        dval.getMsbRegister(eContext), sf, tmp);
                    L1AHelper.releaseRegister(eContext, tmp);
                }
            } else {
                if (sf.isShared()) {
                    helper.writePutStaticsEntry64(curInstrLabel, dval.getRegister(eContext), sf);
                } else {
                    final GPR tmp = (GPR) L1AHelper.requestRegister(eContext, JvmType.REFERENCE, false);
                    helper.writePutStaticsEntry64(curInstrLabel, dval.getRegister(eContext), sf, tmp);
                    L1AHelper.releaseRegister(eContext, tmp);
                }
            }
        }
View Full Code Here

Examples of org.jnode.assembler.x86.X86Register.GPR

     */
    public final void visit_tableswitch(int defAddress, int lowValue, int highValue, int[] addresses) {
        // IMPROVE: check Jaos implementation
        final IntItem val = vstack.popInt();
        val.load(eContext);
        GPR valr = val.getRegister();
        vstack.push(eContext);

        final int n = addresses.length;
        if ((n > 4) && os.isCode32()) {
            // Optimized version.  Needs some overhead, so only useful for
            // larger tables.
            counters.getCounter("tableswitch-opt").inc();

            final GPR tmp = (GPR) L1AHelper.requestRegister(eContext, JvmType.REFERENCE, false);
            if (os.isCode64()) {
                GPR64 valr64 = L1AHelper.get64BitReg(eContext, valr);
                os.writeMOVSXD(valr64, (GPR32) valr);
                valr = valr64;
            }
View Full Code Here
TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.