Class<?> asClass() { assert isClass(); return (Class<?>) obj; }
public Object access(JavaObject receiver) { if (TruffleOptions.AOT) { return false; } return receiver.obj != null && !receiver.isClass() && lookupFunctionalInterfaceMethod(receiver) != null; }
@Override public String toString() { if (obj == null) { return "null"; } if (isClass()) { return "JavaClass[" + asClass().getTypeName() + "]"; } return "JavaObject[" + obj + " (" + getObjectClass().getTypeName() + ")" + "]"; } }
public Object access(JavaObject receiver) { if (TruffleOptions.AOT) { return false; } return receiver.isClass() && lookupConstructor().execute(receiver.asClass()) != null; }
public Object access(JavaObject receiver, Object[] args) { if (TruffleOptions.AOT) { throw UnsupportedMessageException.raise(NEW); } if (receiver.isClass()) { Class<?> javaClass = receiver.asClass(); if (javaClass.isArray()) { return newArray(receiver, args); } JavaMethodDesc constructor = lookupConstructor().execute(javaClass); if (constructor != null) { return executeMethod().execute(constructor, null, args, receiver.languageContext); } } throw UnsupportedMessageException.raise(NEW); }
public Object access(JavaObject receiver, Object[] args) { if (TruffleOptions.AOT) { throw UnsupportedMessageException.raise(EXECUTE); } if (receiver.obj != null && !receiver.isClass()) { JavaMethodDesc method = lookupFunctionalInterfaceMethod(receiver); if (method != null) { if (doExecute == null) { CompilerDirectives.transferToInterpreterAndInvalidate(); doExecute = insert(ExecuteMethodNode.create()); } return doExecute.execute(method, receiver.obj, args, receiver.languageContext); } } throw UnsupportedMessageException.raise(EXECUTE); }