private JavaMethodDesc lookupFunctionalInterfaceMethod(JavaObject receiver) { if (lookupMethod == null) { CompilerDirectives.transferToInterpreterAndInvalidate(); lookupMethod = insert(LookupFunctionalMethodNode.create()); } return lookupMethod.execute(receiver.getLookupClass()); } }
private JavaMethodDesc lookupFunctionalInterfaceMethod(JavaObject receiver) { if (lookupMethod == null) { CompilerDirectives.transferToInterpreterAndInvalidate(); lookupMethod = insert(LookupFunctionalMethodNode.create()); } return lookupMethod.execute(receiver.getLookupClass()); } }
public int access(JavaObject receiver, String name) { if (receiver.isNull()) { throw UnsupportedMessageException.raise(Message.KEY_INFO); } if (TruffleOptions.AOT) { return 0; } return keyInfoCache().execute(receiver.getLookupClass(), name, receiver.isStaticClass()); }
@TruffleBoundary public Object access(JavaObject receiver, boolean includeInternal) { if (receiver.isNull()) { throw UnsupportedMessageException.raise(Message.KEYS); } String[] fields = TruffleOptions.AOT ? new String[0] : JavaInteropReflect.findUniquePublicMemberNames(receiver.getLookupClass(), receiver.isStaticClass(), includeInternal); return JavaObject.forObject(fields, receiver.languageContext); } }
public Object access(JavaObject receiver, String name, Object value) { if (TruffleOptions.AOT || receiver.isNull()) { throw UnsupportedMessageException.raise(Message.WRITE); } JavaFieldDesc f = lookupField().execute(receiver.getLookupClass(), name, receiver.isStaticClass()); if (f == null) { throw UnknownIdentifierException.raise(name); } try { writeField().execute(f, receiver, value); } catch (ClassCastException | NullPointerException e) { // conversion failed by ToJavaNode throw UnsupportedTypeException.raise(e, new Object[]{value}); } return JavaObject.NULL; }
public Object access(JavaObject object, String name) { if (TruffleOptions.AOT || object.isNull()) { throw UnsupportedMessageException.raise(Message.READ); } boolean isStatic = object.isStaticClass(); Class<?> lookupClass = object.getLookupClass(); JavaFieldDesc foundField = lookupField().execute(lookupClass, name, isStatic); if (foundField != null) { return readField().execute(foundField, object); } JavaMethodDesc foundMethod = lookupMethod().execute(lookupClass, name, isStatic); if (foundMethod != null) { return new JavaFunctionObject(foundMethod, object.obj, object.languageContext); } if (isStatic) { LookupInnerClassNode lookupInnerClassNode = lookupInnerClass(); if ("class".equals(name)) { return JavaObject.forClass(lookupClass, object.languageContext); } Class<?> innerclass = lookupInnerClassNode.execute(lookupClass, name); if (innerclass != null) { return JavaObject.forStaticClass(innerclass, object.languageContext); } } throw UnknownIdentifierException.raise(name); }
Class<?> lookupClass = object.getLookupClass();