< prev index next >
jdk/src/java.base/share/classes/java/lang/invoke/MethodHandleImpl.java
Print this page
@@ -23,11 +23,10 @@
* questions.
*/
package java.lang.invoke;
-import jdk.experimental.value.ValueType;
import jdk.internal.misc.JavaLangInvokeAccess;
import jdk.internal.misc.SharedSecrets;
import jdk.internal.org.objectweb.asm.AnnotationVisitor;
import jdk.internal.org.objectweb.asm.ClassWriter;
import jdk.internal.org.objectweb.asm.MethodVisitor;
@@ -38,10 +37,11 @@
import sun.invoke.empty.Empty;
import sun.invoke.util.ValueConversions;
import sun.invoke.util.VerifyType;
import sun.invoke.util.Wrapper;
import valhalla.shady.MinimalValueTypes_1_0;
+import valhalla.shady.ValueTypeHolder;
import java.lang.reflect.Array;
import java.util.Arrays;
import java.util.Collections;
import java.util.Iterator;
@@ -432,12 +432,12 @@
*/
static Object valueConversion(Class<?> src, Class<?> dst, boolean strict, boolean monobox) {
assert(!VerifyType.isNullConversion(src, dst, /*keepInterfaces=*/ strict)); // caller responsibility
if (dst == void.class)
return dst;
- ValueType<?> srcVT = getValueFor(src);
- ValueType<?> dstVT = getValueFor(dst);
+ ValueTypeHolder<?> srcVT = MinimalValueTypes_1_0.findValueType(src);
+ ValueTypeHolder<?> dstVT = MinimalValueTypes_1_0.findValueType(dst);
MethodHandle fn;
if (src.isPrimitive()) {
if (src == void.class) {
return void.class; // caller must recognize this specially
} else if (dst.isPrimitive()) {
@@ -494,23 +494,10 @@
}
assert(fn.type().parameterCount() <= 1) : "pc"+Arrays.asList(src.getSimpleName(), dst.getSimpleName(), fn);
return fn;
}
- @SuppressWarnings("unchecked")
- static <Z> ValueType<Z> getValueFor(Class<Z> c) {
- try {
- if (MinimalValueTypes_1_0.isValueType(c)) {
- return (ValueType<Z>)ValueType.forClass(MinimalValueTypes_1_0.getValueCapableClass(c));
- } else {
- return null;
- }
- } catch (Throwable ex) {
- return null;
- }
- }
-
static MethodHandle makeVarargsCollector(MethodHandle target, Class<?> arrayType) {
MethodType type = target.type();
int last = type.parameterCount() - 1;
if (type.parameterType(last) != arrayType)
target = target.asType(type.changeParameterType(last, arrayType));
@@ -1819,11 +1806,11 @@
} else {
Wrapper w = Wrapper.forPrimitiveType(returnType);
return ValueConversions.unboxExact(w);
}
} else if (MinimalValueTypes_1_0.isValueType(returnType)) {
- return ValueType.forClass(MinimalValueTypes_1_0.getValueCapableClass(returnType)).unbox();
+ return MinimalValueTypes_1_0.findValueType(returnType).unbox();
} else {
return MethodHandles.identity(Object.class);
}
}
< prev index next >