Env requireEnv() { Env localEnv = this.env; if (localEnv == null) { CompilerDirectives.transferToInterpreter(); throw new AssertionError( "No language context is active on this thread."); } return localEnv; }
@Override public boolean addAll(Collection<? extends T> c) { CompilerDirectives.transferToInterpreter(); throw new UnsupportedOperationException(); }
@Override public boolean retainAll(Collection<?> c) { CompilerDirectives.transferToInterpreter(); throw new UnsupportedOperationException(); }
private ReadOnlyArrayList(T[] arr, int first, int last) { this.arr = arr; this.first = first; this.last = last; if (first > last) { CompilerDirectives.transferToInterpreter(); throw new IllegalArgumentException(); } }
@Override public boolean remove(Object o) { CompilerDirectives.transferToInterpreter(); throw new UnsupportedOperationException(); }
@Override public boolean addAll(Collection<? extends T> c) { CompilerDirectives.transferToInterpreter(); throw new UnsupportedOperationException(); }
public static Number expectNumber(Object o) { if (o instanceof Number) { return (Number) o; } CompilerDirectives.transferToInterpreter(); throw new IllegalArgumentException(o + " not a Number"); }
@SuppressWarnings("unused") public Object access(ComplexNumberEntryKeys varNames, int index) { if (index == 0) { return ComplexNumber.REAL_IDENTIFIER; } else if (index == 1) { return ComplexNumber.IMAGINARY_IDENTIFIER; } CompilerDirectives.transferToInterpreter(); throw new IndexOutOfBoundsException("Index " + index + " out of bounds (idx 0 = real; idx 1 = imag"); } }
@Override public Object get(DynamicObject store, boolean condition) { try { return getter.invokeExact(store); } catch (Throwable e) { CompilerDirectives.transferToInterpreter(); throw new IllegalStateException(e); } }
public long getLong(DynamicObject store, boolean condition) { try { return (long) getter.invokeExact(store); } catch (Throwable e) { CompilerDirectives.transferToInterpreter(); throw new IllegalStateException(e); } }
public Object access(JavaObject receiver) { Object obj = receiver.obj; if (obj != null) { if (obj.getClass().isArray()) { return Array.getLength(obj); } else if (obj instanceof List<?>) { return ((List<?>) obj).size(); } } CompilerDirectives.transferToInterpreter(); throw UnsupportedMessageException.raise(Message.GET_SIZE); }
public Object access(HostObject receiver) { Object obj = receiver.obj; if (obj != null) { if (obj.getClass().isArray()) { return Array.getLength(obj); } else if (obj instanceof List<?>) { return ((List<?>) obj).size(); } } CompilerDirectives.transferToInterpreter(); throw UnsupportedMessageException.raise(Message.GET_SIZE); }
@Override public Object get(DynamicObject store, boolean condition) { try { return getter.invokeExact(store); } catch (Throwable e) { CompilerDirectives.transferToInterpreter(); throw new IllegalStateException(e); } }
@Override protected Object executeImpl(Object receiver, Object[] args) { try { return ((Number) ForeignAccess.sendGetSize(getSizeNode, (TruffleObject) receiver)).longValue(); } catch (UnsupportedMessageException e) { CompilerDirectives.transferToInterpreter(); return polyglot.getArraySizeUnsupported(receiver); } }
private static RuntimeException newClassCastException(String message) { CompilerDirectives.transferToInterpreter(); EngineSupport engine = JavaInterop.ACCESSOR.engine(); return engine != null ? engine.newClassCastException(message, null) : new ClassCastException(message); }
@Override public Object asBoxedGuestValue(Object guestObject, Object vmObject) { PolyglotLanguageContext languageContext = (PolyglotLanguageContext) vmObject; if (isGuestPrimitive(guestObject)) { return HostObject.forObject(guestObject, languageContext); } else if (guestObject instanceof TruffleObject) { return guestObject; } else { CompilerDirectives.transferToInterpreter(); throw new IllegalArgumentException("Provided value not an interop value."); } }
@Override protected Object executeImpl(PolyglotLanguageContext languageContext, Object receiver, Object[] args) { try { return ForeignAccess.sendAsPointer(asPointerNode, (TruffleObject) receiver); } catch (UnsupportedMessageException e) { CompilerDirectives.transferToInterpreter(); throw cannotConvert(languageContext, receiver, long.class, "asNativePointer()", "isNativeObject()", "Value cannot be converted to a native pointer."); } }
private Object doArrayAccess(HostObject receiver, int index, Object value) { Object obj = receiver.obj; assert receiver.isArray(); final Object javaValue = toJavaNode.execute(value, obj.getClass().getComponentType(), null, receiver.languageContext); try { arraySet.execute(obj, index, javaValue); } catch (ArrayIndexOutOfBoundsException outOfBounds) { CompilerDirectives.transferToInterpreter(); throw UnknownIdentifierException.raise(String.valueOf(index)); } return HostObject.NULL; }
@TruffleBoundary @Specialization(guards = {"isList(receiver)"}) protected Object doListIntIndex(HostObject receiver, int index) { try { return toGuest.apply(receiver.languageContext, ((List<?>) receiver.obj).get(index)); } catch (IndexOutOfBoundsException e) { CompilerDirectives.transferToInterpreter(); throw UnknownIdentifierException.raise(String.valueOf(index)); } }
@Override protected void onReturnValue(VirtualFrame frame, Object result) { Object newResult = onNode(frame, false, result, null); if (newResult != result) { CompilerDirectives.transferToInterpreter(); throw getContext().createUnwind(new ChangedReturnInfo(newResult)); } }