< prev index next >

src/java.base/share/classes/jdk/experimental/value/MethodHandleBuilder.java

Print this page




  37 import jdk.experimental.bytecode.TypedCodeBuilder;
  38 import jdk.experimental.value.MethodHandleBuilder.IsolatedMethodBuilder.IsolatedMethodPoolHelper;
  39 import jdk.internal.misc.Unsafe;
  40 import sun.security.action.GetPropertyAction;
  41 import valhalla.shady.MinimalValueTypes_1_0;
  42 
  43 import java.lang.invoke.MethodHandle;
  44 import java.lang.invoke.MethodHandles.Lookup;
  45 import java.lang.invoke.MethodType;
  46 import java.util.*;
  47 import java.util.function.Consumer;
  48 import java.util.function.Function;
  49 
  50 /**
  51  * Utility class for building method handles.
  52  */
  53 public class MethodHandleBuilder {
  54 
  55     static final Unsafe UNSAFE = Unsafe.getUnsafe();
  56 
  57     static final boolean ENABLE_POOL_PATCHES;
  58 
  59     static {
  60         Properties props = GetPropertyAction.privilegedGetProperties();
  61         ENABLE_POOL_PATCHES = Boolean.parseBoolean(
  62                 props.getProperty("valhalla.enablePoolPatches"));
  63     }
  64 
  65     public static MethodHandle loadCode(Lookup lookup, String name, MethodType type, Consumer<? super MethodHandleCodeBuilder<?>> builder) {
  66         return loadCode(lookup, name, type.toMethodDescriptorString(), builder);
  67     }
  68 
  69     public static MethodHandle loadCode(Lookup lookup, String name, String type, Consumer<? super MethodHandleCodeBuilder<?>> builder) {
  70         return loadCode(lookup, name, name, type, MethodHandleCodeBuilder::new,
  71                     clazz -> {
  72                         try {
  73                             return lookup.findStatic(clazz, name, MethodType.fromMethodDescriptorString(type, lookup.lookupClass().getClassLoader()));
  74                         } catch (ReflectiveOperationException ex) {
  75                             throw new IllegalStateException(ex);
  76                         }
  77                     },




  37 import jdk.experimental.bytecode.TypedCodeBuilder;
  38 import jdk.experimental.value.MethodHandleBuilder.IsolatedMethodBuilder.IsolatedMethodPoolHelper;
  39 import jdk.internal.misc.Unsafe;
  40 import sun.security.action.GetPropertyAction;
  41 import valhalla.shady.MinimalValueTypes_1_0;
  42 
  43 import java.lang.invoke.MethodHandle;
  44 import java.lang.invoke.MethodHandles.Lookup;
  45 import java.lang.invoke.MethodType;
  46 import java.util.*;
  47 import java.util.function.Consumer;
  48 import java.util.function.Function;
  49 
  50 /**
  51  * Utility class for building method handles.
  52  */
  53 public class MethodHandleBuilder {
  54 
  55     static final Unsafe UNSAFE = Unsafe.getUnsafe();
  56 
  57     public static final boolean ENABLE_POOL_PATCHES;
  58 
  59     static {
  60         Properties props = GetPropertyAction.privilegedGetProperties();
  61         ENABLE_POOL_PATCHES = Boolean.parseBoolean(
  62                 props.getProperty("valhalla.enablePoolPatches"));
  63     }
  64 
  65     public static MethodHandle loadCode(Lookup lookup, String name, MethodType type, Consumer<? super MethodHandleCodeBuilder<?>> builder) {
  66         return loadCode(lookup, name, type.toMethodDescriptorString(), builder);
  67     }
  68 
  69     public static MethodHandle loadCode(Lookup lookup, String name, String type, Consumer<? super MethodHandleCodeBuilder<?>> builder) {
  70         return loadCode(lookup, name, name, type, MethodHandleCodeBuilder::new,
  71                     clazz -> {
  72                         try {
  73                             return lookup.findStatic(clazz, name, MethodType.fromMethodDescriptorString(type, lookup.lookupClass().getClassLoader()));
  74                         } catch (ReflectiveOperationException ex) {
  75                             throw new IllegalStateException(ex);
  76                         }
  77                     },


< prev index next >