MessageNodes() { keyInfo = Message.KEY_INFO.createNode(); keys = Message.KEYS.createNode(); hasSize = Message.HAS_SIZE.createNode(); getSize = Message.GET_SIZE.createNode(); read = Message.READ.createNode(); write = Message.WRITE.createNode(); isBoxed = Message.IS_BOXED.createNode(); unbox = Message.UNBOX.createNode(); } }
private ToPrimitiveNode() { this.isNullNode = Message.IS_NULL.createNode(); this.isBoxedNode = Message.IS_BOXED.createNode(); this.hasKeysNode = Message.HAS_KEYS.createNode(); this.hasSizeNode = Message.HAS_SIZE.createNode(); this.unboxNode = Message.UNBOX.createNode(); }
private ToHostPrimitiveNode() { this.isNullNode = Message.IS_NULL.createNode(); this.isBoxedNode = Message.IS_BOXED.createNode(); this.hasKeysNode = Message.HAS_KEYS.createNode(); this.hasSizeNode = Message.HAS_SIZE.createNode(); this.unboxNode = Message.UNBOX.createNode(); }
MessageNodes() { keyInfo = Message.KEY_INFO.createNode(); keys = Message.KEYS.createNode(); hasSize = Message.HAS_SIZE.createNode(); getSize = Message.GET_SIZE.createNode(); read = Message.READ.createNode(); write = Message.WRITE.createNode(); isBoxed = Message.IS_BOXED.createNode(); unbox = Message.UNBOX.createNode(); isExecutable = Message.IS_EXECUTABLE.createNode(); invoke1 = Message.INVOKE.createNode(); } }
ConvertNode() { this.isNull = Message.IS_NULL.createNode(); this.isBoxed = Message.IS_BOXED.createNode(); this.unbox = Message.UNBOX.createNode(); }
static Node createUnboxNode() { return Message.UNBOX.createNode(); }
public static Node createGetSizeMessageNode() { return Message.GET_SIZE.createNode(); } }
protected static Node maybeCreateNode(Message message) { return message == null ? null : message.createNode(); }
public static Node createReadMessageNode() { return Message.READ.createNode(); }
static Node createIsBoxedNode() { return Message.IS_BOXED.createNode(); }
static Node createIsBoxedNode() { return Message.IS_BOXED.createNode(); }
private static boolean hasKeys(TruffleObject object) { try { TruffleObject keys = ForeignAccess.sendKeys(Message.KEYS.createNode(), object); if (keys == null) { return false; } return ForeignAccess.sendHasSize(Message.HAS_SIZE.createNode(), keys); } catch (UnsupportedMessageException ex) { return false; } }
private static boolean hasKeys(TruffleObject object) { try { TruffleObject keys = ForeignAccess.sendKeys(Message.KEYS.createNode(), object); if (keys == null) { return false; } return ForeignAccess.sendHasSize(Message.HAS_SIZE.createNode(), keys); } catch (UnsupportedMessageException ex) { return false; } }
PropertyNamedValue(DebuggerSession session, LanguageInfo language, TruffleObject object, Map<Object, Object> map, String name, DebugScope scope) { this(session, language, ForeignAccess.sendKeyInfo(Message.KEY_INFO.createNode(), object, name), map, name, scope); }
PropertyValue(DebuggerSession session, LanguageInfo language, TruffleObject object, Map.Entry<Object, Object> property, DebugScope scope) { this(session, language, ForeignAccess.sendKeyInfo(Message.KEY_INFO.createNode(), object, property.getKey()), property, scope); }
PropertyNamedValue(Debugger debugger, LanguageInfo language, TruffleObject object, Map<Object, Object> map, String name, DebugScope scope) { this(debugger, language, ForeignAccess.sendKeyInfo(Message.KEY_INFO.createNode(), object, name), map, name, scope); }
PolyglotLanguageBindings(Iterable<Scope> scopes) { List<TruffleObject> collectScopes = new ArrayList<>(); Node hasKeysNode = Message.HAS_KEYS.createNode(); for (Scope scope : scopes) { Object vars = scope.getVariables(); if (!(vars instanceof TruffleObject)) { throw new AssertionError("Returned scope variables object must be a TruffleObject."); } if (!ForeignAccess.sendHasKeys(hasKeysNode, (TruffleObject) vars)) { throw new AssertionError("Returned scope variables object must return true for HAS_KEYS."); } collectScopes.add((TruffleObject) vars); } this.scopes = collectScopes.toArray(new TruffleObject[0]); }
ForeignSendRootNode(PolyglotEngine engine, Message message) { super(engine); this.returnConvertNode = new ConvertNode(); this.messageNode = message.createNode(); this.toJavaNode = JAVAINTEROP.createToJavaNode(); }
protected final boolean isBoxedPrimitive(VirtualFrame frame, TruffleObject object) { if (isBoxed == null) { CompilerDirectives.transferToInterpreterAndInvalidate(); isBoxed = insert(Message.IS_BOXED.createNode()); } return (boolean) ForeignAccess.execute(isBoxed, frame, object); }
@Specialization(guards = "isBoxedPrimitive(frame, foreignValue)") public Object executeUnbox(VirtualFrame frame, TruffleObject foreignValue) { if (unbox == null) { CompilerDirectives.transferToInterpreterAndInvalidate(); unbox = insert(Message.UNBOX.createNode()); } return ForeignAccess.execute(unbox, frame, foreignValue); }