--- old/src/java.base/share/classes/java/lang/invoke/MethodHandles.java 2017-07-11 20:38:50.000000000 +0300 +++ new/src/java.base/share/classes/java/lang/invoke/MethodHandles.java 2017-07-11 20:38:49.000000000 +0300 @@ -3325,6 +3325,8 @@ if (w.zero().equals(value)) return zero(w, type); return insertArguments(identity(type), 0, value); + } else if (MinimalValueTypes_1_0.isValueType(type)) { + return insertArguments(identity(type), 0, value); } else { if (value == null) return zero(Wrapper.OBJECT, type); --- old/test/valhalla/mvt/MethodHandlesTest.java 2017-07-11 20:38:52.000000000 +0300 +++ new/test/valhalla/mvt/MethodHandlesTest.java 2017-07-11 20:38:51.000000000 +0300 @@ -74,4 +74,15 @@ assertThrows(NullPointerException.class, () -> mh.invokeWithArguments()); } } + + @Test + void testConstantDVT() throws Throwable { + assertEquals(MethodHandles.constant(DVT, ARG).invokeWithArguments(), ARG); + + assertThrows(ClassCastException.class, + () -> MethodHandles.constant(DVT, new Object())); + + assertThrows(NullPointerException.class, + () -> MethodHandles.constant(DVT, null)); + } }