1824 return GenerateJLIClassesHelper
1825 .generateDelegatingMethodHandleHolderClassBytes(
1826 className, methodTypes);
1827 }
1828
1829 @Override
1830 public Map.Entry<String, byte[]> generateConcreteBMHClassBytes(
1831 final String types) {
1832 return GenerateJLIClassesHelper
1833 .generateConcreteBMHClassBytes(types);
1834 }
1835
1836 @Override
1837 public byte[] generateBasicFormsClassBytes(final String className) {
1838 return GenerateJLIClassesHelper
1839 .generateBasicFormsClassBytes(className);
1840 }
1841
1842 @Override
1843 public byte[] generateInvokersHolderClassBytes(final String className,
1844 MethodType[] methodTypes) {
1845 return GenerateJLIClassesHelper
1846 .generateInvokersHolderClassBytes(className, methodTypes);
1847 }
1848 });
1849 }
1850
1851 /** Result unboxing: ValueConversions.unbox() OR ValueConversions.identity() OR ValueConversions.ignore(). */
1852 private static MethodHandle unboxResultHandle(Class<?> returnType) {
1853 if (returnType.isPrimitive()) {
1854 if (returnType == void.class) {
1855 return ValueConversions.ignore();
1856 } else {
1857 Wrapper w = Wrapper.forPrimitiveType(returnType);
1858 return ValueConversions.unboxExact(w);
1859 }
1860 } else {
1861 return MethodHandles.identity(Object.class);
1862 }
1863 }
1864
1865 /**
1866 * Assembles a loop method handle from the given handles and type information.
1867 *
|
1824 return GenerateJLIClassesHelper
1825 .generateDelegatingMethodHandleHolderClassBytes(
1826 className, methodTypes);
1827 }
1828
1829 @Override
1830 public Map.Entry<String, byte[]> generateConcreteBMHClassBytes(
1831 final String types) {
1832 return GenerateJLIClassesHelper
1833 .generateConcreteBMHClassBytes(types);
1834 }
1835
1836 @Override
1837 public byte[] generateBasicFormsClassBytes(final String className) {
1838 return GenerateJLIClassesHelper
1839 .generateBasicFormsClassBytes(className);
1840 }
1841
1842 @Override
1843 public byte[] generateInvokersHolderClassBytes(final String className,
1844 MethodType[] invokerMethodTypes,
1845 MethodType[] callSiteMethodTypes) {
1846 return GenerateJLIClassesHelper
1847 .generateInvokersHolderClassBytes(className,
1848 invokerMethodTypes, callSiteMethodTypes);
1849 }
1850
1851 });
1852 }
1853
1854 /** Result unboxing: ValueConversions.unbox() OR ValueConversions.identity() OR ValueConversions.ignore(). */
1855 private static MethodHandle unboxResultHandle(Class<?> returnType) {
1856 if (returnType.isPrimitive()) {
1857 if (returnType == void.class) {
1858 return ValueConversions.ignore();
1859 } else {
1860 Wrapper w = Wrapper.forPrimitiveType(returnType);
1861 return ValueConversions.unboxExact(w);
1862 }
1863 } else {
1864 return MethodHandles.identity(Object.class);
1865 }
1866 }
1867
1868 /**
1869 * Assembles a loop method handle from the given handles and type information.
1870 *
|