Examples of VmField


Examples of org.jnode.vm.classmgr.VmField

     * @param fieldRef
     * @see org.jnode.vm.bytecode.BytecodeVisitor#visit_getfield(org.jnode.vm.classmgr.VmConstFieldRef)
     */
    public final void visit_getfield(VmConstFieldRef fieldRef) {
        fieldRef.resolve(loader);
        final VmField field = fieldRef.getResolvedVmField();
        if (field.isStatic()) {
            throw new IncompatibleClassChangeError(
                "getfield called on static field " + fieldRef.getName());
        }
        final VmInstanceField inf = (VmInstanceField) field;
        final int fieldOffset = inf.getOffset();
        final int type = JvmType.SignatureToType(fieldRef.getSignature());
        final boolean isfloat = JvmType.isFloat(type);

        // Pop & load
        final RefItem ref = vstack.popRef();
        ref.load(eContext);
        final GPR refr = ref.getRegister();

        // get field
        final Item result;
        if (!fieldRef.isWide()) {
            if (isfloat) {
                result = ifac.createFPUStack(JvmType.FLOAT);
                os.writeFLD32(refr, fieldOffset);
                pushFloat(result);
            } else {
                final char fieldType = field.getSignature().charAt(0);
                final WordItem iw = L1AHelper.requestWordRegister(eContext,
                    type, (fieldType != 'I') && (type != JvmType.REFERENCE));
                final GPR iwr = iw.getRegister();
                switch (fieldType) {
                    case 'Z': // boolean
View Full Code Here

Examples of org.jnode.vm.classmgr.VmField

    /**
     * @see org.jnode.vm.bytecode.BytecodeVisitor#visit_putfield(org.jnode.vm.classmgr.VmConstFieldRef)
     */
    public final void visit_putfield(VmConstFieldRef fieldRef) {
        fieldRef.resolve(loader);
        final VmField field = fieldRef.getResolvedVmField();
        if (field.isStatic()) {
            throw new IncompatibleClassChangeError(
                "getfield called on static field " + fieldRef.getName());
        }
        final VmInstanceField inf = (VmInstanceField) field;
        final int offset = inf.getOffset();
        final boolean wide = fieldRef.isWide();

        // Get operands
        final Item val = vstack.pop();
        assertCondition(val.getCategory() == ((wide) ? 2 : 1),
            "category mismatch");
        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
View Full Code Here

Examples of org.jnode.vm.classmgr.VmField

        if (countBytecode) {
            counters.getCounter("getfield").inc();
        }

        fieldRef.resolve(loader);
        final VmField field = fieldRef.getResolvedVmField();
        if (field.isStatic()) {
            throw new IncompatibleClassChangeError(
                "getfield called on static field " + fieldRef.getName());
        }
        final VmInstanceField inf = (VmInstanceField) field;
        final int fieldOffset = inf.getOffset();
        final int type = JvmType.SignatureToType(fieldRef.getSignature());
        final boolean isfloat = JvmType.isFloat(type);

        // Pop & load
        final RefItem ref = vstack.popRef();
        ref.load(eContext);
        final GPR refr = ref.getRegister();

        // get field
        final Item result;
        if (!fieldRef.isWide()) {
            if (isfloat) {
                result = ifac.createFPUStack(JvmType.FLOAT);
                os.writeFLD32(refr, fieldOffset);
                vstack.fpuStack.push(result);
            } else {
                final char fieldType = field.getSignature().charAt(0);
                final WordItem iw = L1AHelper.requestWordRegister(eContext,
                    type, (fieldType != 'I') && (type != JvmType.REFERENCE));
                final GPR iwr = iw.getRegister();
                switch (fieldType) {
                    case 'Z': // boolean
View Full Code Here

Examples of org.jnode.vm.classmgr.VmField

        if (countBytecode) {
            counters.getCounter("putfield").inc();
        }

        fieldRef.resolve(loader);
        final VmField field = fieldRef.getResolvedVmField();
        if (field.isStatic()) {
            throw new IncompatibleClassChangeError(
                "getfield called on static field " + fieldRef.getName());
        }
        final VmInstanceField inf = (VmInstanceField) field;
        final int offset = inf.getOffset();
        final boolean wide = fieldRef.isWide();

        // Get operands
        final Item val = vstack.pop();
        assertCondition(val.getCategory() == ((wide) ? 2 : 1),
            "category mismatch");
        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
View Full Code Here

Examples of org.jnode.vm.classmgr.VmField

            // final Field fields[] = cls.getDeclaredFields();
            final Field[] fields = fieldInfo.getJdkInstanceFields();
            final int len = fields.length;
            // AccessibleObject.setAccessible(fields, true);
            for (int i = 0; i < len; i++) {
                final VmField jnodeField = fieldInfo.getJNodeInstanceField(i);
                final Field jdkField = fields[i];
                final int modifiers = jnodeField.getModifiers();

                if ((modifiers & Modifier.STATIC) != 0) {
                    throw new BuildException("Static field in instance list");
                }

                final int fldOffset = offset
                    + ((VmInstanceField) jnodeField).getOffset();
                if ((jdkField == null)
                    || ((modifiers & Modifier.TRANSIENT) != 0)) {
                    if (jnodeField.isWide()) {
                        os.set64(fldOffset, 0);
                    } else if (!jnodeField.isPrimitive()) {
                        os.setWord(fldOffset, 0);
                    } else {
                        switch (jnodeField.getTypeSize()) {
                            case 1:
                                os.set8(fldOffset, 0);
                                break;
                            case 2:
                                os.set16(fldOffset, 0);
                                break;
                            case 4:
                                os.set32(fldOffset, 0);
                                break;
                            default:
                                throw new BuildException("Invalid typesize in: " + jnodeField);
                        }
                    }
                    if (debugWriter != null) {
                        debugWriter.println(jnodeField.getName()
                            + " transient: 0");
                    }
                } else if (jnodeField.isPrimitive()) {
                    final Class<?> fType = jdkField.getType();
                    if (debugWriter != null) {
                        debugWriter.println(jdkField.getName() + " "
                            + jdkField.get(obj));
                    }
                    if (fType == byte.class) {
                        os.set8(fldOffset, jdkField.getByte(obj));
                    } else if (fType == boolean.class) {
                        os.set8(fldOffset, (jdkField.getBoolean(obj)) ? 1 : 0);
                    } else if (fType == char.class) {
                        os.set16(fldOffset, jdkField.getChar(obj));
                    } else if (fType == short.class) {
                        os.set16(fldOffset, jdkField.getShort(obj));
                    } else if (fType == int.class) {
                        os.set32(fldOffset, jdkField.getInt(obj));
                    } else if (fType == float.class) {
                        os.set32(fldOffset, Float.floatToIntBits(jdkField
                            .getFloat(obj)));
                    } else if (fType == long.class) {
                        os.set64(fldOffset, jdkField.getLong(obj));
                    } else if (fType == double.class) {
                        os.set64(fldOffset, Double.doubleToLongBits(jdkField
                            .getDouble(obj)));
                    } else {
                        throw new BuildException("Unknown primitive class "
                            + fType.getName());
                    }
                } else if (jnodeField.isAddressType()) {
                    final Object value = jdkField.get(obj);
                    if (value == null) {
                        os.setWord(fldOffset, 0);
                    } else if (value instanceof UnboxedObject) {
                        final UnboxedObject uobj = (UnboxedObject) value;
View Full Code Here

Examples of org.jnode.vm.classmgr.VmField

                    final int max = jdkFields.length;

                    for (int k = 0; k < max; k++) {
                        final Field jdkField = jdkFields[k];
                        if (jdkField != null) {
                            final VmField f = fieldInfo.getJNodeStaticField(k);
                            if (!f.isTransient()) {
                                try {
                                    copyStaticField(type, f, jdkField,
                                        sharedStatics, isolatedStatics, os,
                                        emitter);
                                } catch (IllegalAccessException ex) {
View Full Code Here

Examples of org.jnode.vm.classmgr.VmField

                if (idx > 0) {
                    cname = cname.substring(idx + 1);
                }
                int cnt = vmClass.getNoDeclaredFields();
                for (int i = 0; i < cnt; i++) {
                    final VmField f = vmClass.getDeclaredField(i);
                    if (!f.isStatic()) {
                        final VmInstanceField instF = (VmInstanceField) f;
                        String name = cname + "_" + f.getName().toUpperCase();
                        if (f.getTypeSize() < 4) {
                            name = name + "_S" + f.getTypeSize();
                        }
                        name = name + "_OFS";
                        out.println(name + " equ " + instF.getOffset());
                    }
                }
View Full Code Here

Examples of org.jnode.vm.classmgr.VmField

     */
    private final Field[] toJdkFields(Class<?> jdkType, List<VmField> jnodeFields) {
        final int cnt = jnodeFields.size();
        final Field[] jdkFields = new Field[cnt];
        for (int i = 0; i < cnt; i++) {
            final VmField f = jnodeFields.get(i);
            try {
                jdkFields[i] = jdkType.getDeclaredField(f.getName());
                jdkFields[i].setAccessible(true);
                final boolean jdkStatic = ((jdkFields[i].getModifiers() & Modifier.STATIC) != 0);
                if (f.isStatic() != jdkStatic) {
                    jdkFields[i] = null;
                    exact = false;
                }
            } catch (SecurityException ex) {
                if (!f.isTransient()) {
                    exact = false;
                }
                // Ignore
            } catch (NoSuchFieldException ex) {
                if (!f.isTransient()) {
                    exact = false;
                }
                // Ignore
            }
        }
View Full Code Here

Examples of org.jnode.vm.classmgr.VmField

    private static List<VmField> getStaticFields(VmType<?> jnodeType) {
        if (jnodeType != null) {
            final int all = jnodeType.getNoDeclaredFields();
            final ArrayList<VmField> list = new ArrayList<VmField>(all);
            for (int i = 0; i < all; i++) {
                final VmField f = jnodeType.getDeclaredField(i);
                if (f.isStatic()) {
                    list.add(f);
                }
            }
            return list;
        } else {
View Full Code Here

Examples of org.jnode.vm.classmgr.VmField

    private static List<VmField> getInstanceFields(VmType<?> jnodeType) {
        if (jnodeType != null) {
            final int all = jnodeType.getNoDeclaredFields();
            final ArrayList<VmField> list = new ArrayList<VmField>(all);
            for (int i = 0; i < all; i++) {
                final VmField f = jnodeType.getDeclaredField(i);
                if (!f.isStatic()) {
                    list.add(f);
                }
            }
            return list;
        } else {
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.