< prev index next >

src/java.base/share/classes/java/lang/invoke/MethodHandleImpl.java

Print this page
rev 49208 : 8199471: Enable generation of callSiteForms at link time
Reviewed-by: psandoz


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      *


< prev index next >