static ToPrimitiveNode create() { return new ToPrimitiveNode(); }
} else if (value instanceof Float) { float f = (float) value; if (inSafeIntegerRange(f) && !isNegativeZero(f)) { long l = (long) f; if (l == f) { if (inSafeIntegerRange(d) && !isNegativeZero(d)) { long l = (long) d; if (l == d) {
attr = ((JavaObject) value).obj; } else if (value instanceof TruffleObject) { attr = unbox((TruffleObject) value); } else { attr = value; return toByte(attr); } else if (requestedType == short.class || requestedType == Short.class) { return toShort(attr); } else if (requestedType == int.class || requestedType == Integer.class) { return toInt(attr); } else if (requestedType == long.class || requestedType == Long.class) { return toLong(attr); } else if (requestedType == float.class || requestedType == Float.class) { return toFloat(attr); } else if (requestedType == double.class || requestedType == Double.class) { return toDouble(attr); } else if (requestedType == Number.class) { if (attr instanceof Number) {
} else if (JavaObject.isJavaInstance(targetType, tValue)) { return true; } else if (primitive.isNull(tValue)) { return true; } else if (targetType == List.class) { return primitive.hasSize(tValue); } else if (targetType == Map.class) { return primitive.hasKeys(tValue); } else if (targetType == Function.class) { return isExecutable(tValue) || isInstantiable(tValue) || (TruffleOptions.AOT && ForeignAccess.sendHasKeys(hasKeysNode, tValue)); } else if (targetType.isArray()) { return primitive.hasKeys(tValue); } else { if (TruffleOptions.AOT) {
private Object convertToObject(TruffleObject truffleObject, Object languageContext) { Object primitiveValue = primitive.unbox(truffleObject); if (primitiveValue != null) { return primitiveValue; } else if (languageContext == null) { // for legacy support return truffleObject; } else if (primitive.hasKeys(truffleObject)) { return asJavaObject(truffleObject, Map.class, null, languageContext); } else if (primitive.hasSize(truffleObject)) { return asJavaObject(truffleObject, List.class, null, languageContext); } else if (isExecutable(truffleObject) || isInstantiable(truffleObject)) { return asJavaObject(truffleObject, Function.class, null, languageContext); } else { return JavaInterop.toHostValue(truffleObject, languageContext); } }
float f = (float) value; short s = (short) f; if (s == f && !isNegativeZero(f)) { return s; double d = (double) value; short s = (short) d; if (s == d && !isNegativeZero(d)) { return s;
private static Object toFloat(Object value) { if (value instanceof Float) { Float f = (Float) value; return f; } else if (value instanceof Byte) { byte b = (byte) value; return (float) b; } else if (value instanceof Short) { short s = (short) value; return (float) s; } else if (value instanceof Integer) { int i = (int) value; if (inSafeFloatRange(i)) { return (float) i; } } else if (value instanceof Long) { long l = (long) value; if (inSafeFloatRange(l)) { return (float) l; } } else if (value instanceof Double) { double d = (double) value; float f = (float) d; if (!Double.isFinite(d) || f == d) { return f; } } return null; }
private static Object toDouble(Object value) { if (value instanceof Double) { Double d = (Double) value; return d; } else if (value instanceof Byte) { byte b = (byte) value; return (double) b; } else if (value instanceof Short) { short s = (short) value; return (double) s; } else if (value instanceof Integer) { int i = (int) value; return (double) i; } else if (value instanceof Long) { long l = (long) value; if (inSafeDoubleRange(l)) { return (double) l; } } else if (value instanceof Float) { float f = (float) value; double d = f; if (!Float.isFinite(f) || d == f) { return d; } } return null; }
Object unbox(TruffleObject value) { if (!ForeignAccess.sendIsBoxed(isBoxedNode, value)) { return null; } Object result; try { result = ForeignAccess.sendUnbox(unboxNode, value); } catch (UnsupportedMessageException e) { return null; } if (result instanceof TruffleObject && isNull((TruffleObject) result)) { return null; } else { return result; } }
Objects.requireNonNull(truffleObject); Object obj; if (primitive.isNull(truffleObject)) { if (targetType.isPrimitive()) { throw JavaInteropErrors.nullCoercion(languageContext, truffleObject, targetType); if (primitive.hasSize(truffleObject)) { boolean implementsFunction = shouldImplementFunction(truffleObject); TypeAndClass<?> elementType = getGenericParameterType(genericType, 0); throw newInvalidKeyTypeException(keyClazz); boolean hasSize = (Number.class.isAssignableFrom(keyClazz)) && primitive.hasSize(truffleObject); boolean hasKeys = (keyClazz == Object.class || keyClazz == String.class) && primitive.hasKeys(truffleObject); if (hasKeys || hasSize) { boolean implementsFunction = shouldImplementFunction(truffleObject); if (primitive.hasSize(truffleObject)) { obj = truffleObjectToArray(truffleObject, targetType, genericType, languageContext); } else {
float f = (float) value; byte b = (byte) f; if (b == f && !isNegativeZero(f)) { return b; double d = (double) value; byte b = (byte) d; if (b == d && !isNegativeZero(d)) { return b;
if (inSafeIntegerRange(f) && !isNegativeZero(f)) { int i = (int) f; if (i == f) { double d = (double) value; int i = (int) d; if (i == d && !isNegativeZero(d)) { return i;