@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; }
private Object newArray(JavaObject receiver, Object[] args) { if (args.length != 1) { throw ArityException.raise(1, args.length); } if (toJava == null) { CompilerDirectives.transferToInterpreterAndInvalidate(); toJava = insert(ToJavaNode.create()); } int length; try { length = (int) toJava.execute(args[0], int.class, null, receiver.languageContext); } catch (ClassCastException | NullPointerException e) { // conversion failed by ToJavaNode throw UnsupportedTypeException.raise(e, args); } Object array = Array.newInstance(receiver.asClass().getComponentType(), length); return JavaObject.forObject(array, receiver.languageContext); }
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); }