Search in sources :

Example 1 with Field

use of com.oracle.truffle.espresso.impl.Field in project graal by oracle.

the class BytecodeNode method resolveField.

private Field resolveField(int opcode, char cpi) {
    assert opcode == GETFIELD || opcode == GETSTATIC || opcode == PUTFIELD || opcode == PUTSTATIC;
    Field field = getConstantPool().resolvedFieldAt(getMethod().getDeclaringKlass(), cpi);
    if (field.needsReResolution()) {
        CompilerDirectives.transferToInterpreterAndInvalidate();
        getMethod().getContext().getClassRedefinition().check();
        field = getConstantPool().resolveFieldAndUpdate(getMethod().getDeclaringKlass(), cpi, field);
    }
    return field;
}
Also used : Field(com.oracle.truffle.espresso.impl.Field)

Example 2 with Field

use of com.oracle.truffle.espresso.impl.Field in project graal by oracle.

the class AbstractLookupFieldNode method doLookup.

@TruffleBoundary
protected Field doLookup(Klass klass, String name, boolean publicOnly, FieldLookupKind kind) {
    Field[] table = getFieldArray(klass);
    int len = table.length;
    for (int i = len - 1; i >= 0; i--) {
        Field f = table[i];
        if (!f.isRemoved() && (kind == FieldLookupKind.All) || (kind == FieldLookupKind.Static && f.isStatic()) || (kind == FieldLookupKind.Instance && !f.isStatic())) {
            if (f.getNameAsString().equals(name) && (f.isPublic() || !publicOnly)) {
                return f;
            }
        }
    }
    return null;
}
Also used : Field(com.oracle.truffle.espresso.impl.Field) TruffleBoundary(com.oracle.truffle.api.CompilerDirectives.TruffleBoundary)

Example 3 with Field

use of com.oracle.truffle.espresso.impl.Field in project graal by oracle.

the class JniEnv method SetLongField.

@JniImpl
public void SetLongField(@JavaType(Object.class) StaticObject obj, @Handle(Field.class) long fieldId, long val) {
    Field field = fieldIds.getObject(fieldId);
    field.set(obj, val);
}
Also used : Field(com.oracle.truffle.espresso.impl.Field)

Example 4 with Field

use of com.oracle.truffle.espresso.impl.Field in project graal by oracle.

the class JniEnv method SetFloatField.

@JniImpl
public void SetFloatField(@JavaType(Object.class) StaticObject obj, @Handle(Field.class) long fieldId, float val) {
    Field field = fieldIds.getObject(fieldId);
    field.set(obj, val);
}
Also used : Field(com.oracle.truffle.espresso.impl.Field)

Example 5 with Field

use of com.oracle.truffle.espresso.impl.Field in project graal by oracle.

the class JniEnv method SetStaticFloatField.

@JniImpl
public void SetStaticFloatField(@SuppressWarnings("unused") @JavaType(Class.class) StaticObject unused, @Handle(Field.class) long fieldId, float val) {
    Field field = fieldIds.getObject(fieldId);
    assert field.isStatic();
    field.set(field.getDeclaringKlass().tryInitializeAndGetStatics(), val);
}
Also used : Field(com.oracle.truffle.espresso.impl.Field)

Aggregations

Field (com.oracle.truffle.espresso.impl.Field)60 TruffleBoundary (com.oracle.truffle.api.CompilerDirectives.TruffleBoundary)14 ObjectKlass (com.oracle.truffle.espresso.impl.ObjectKlass)8 Klass (com.oracle.truffle.espresso.impl.Klass)7 Method (com.oracle.truffle.espresso.impl.Method)5 StaticObject (com.oracle.truffle.espresso.runtime.StaticObject)5 JavaType (com.oracle.truffle.espresso.substitutions.JavaType)5 ExportMessage (com.oracle.truffle.api.library.ExportMessage)4 ArrayKlass (com.oracle.truffle.espresso.impl.ArrayKlass)4 Meta (com.oracle.truffle.espresso.meta.Meta)4 ArrayList (java.util.ArrayList)4 Name (com.oracle.truffle.espresso.descriptors.Symbol.Name)3 ParserField (com.oracle.truffle.espresso.impl.ParserField)3 REF_getField (com.oracle.truffle.espresso.classfile.Constants.REF_getField)2 REF_putField (com.oracle.truffle.espresso.classfile.Constants.REF_putField)2 Type (com.oracle.truffle.espresso.descriptors.Symbol.Type)2 NativeType (com.oracle.truffle.espresso.ffi.NativeType)2 ParserKlass (com.oracle.truffle.espresso.impl.ParserKlass)2 ParserMethod (com.oracle.truffle.espresso.impl.ParserMethod)2 RedefineAddedField (com.oracle.truffle.espresso.impl.RedefineAddedField)2