jdk/src/java.base/share/classes/java/lang/invoke/MethodHandleStatics.java
changeset 37593 824750ada3d6
parent 36934 590fc47a0aeb
child 37781 71ed5645f17c
equal deleted inserted replaced
37592:c80f098887f4 37593:824750ada3d6
    23  * questions.
    23  * questions.
    24  */
    24  */
    25 
    25 
    26 package java.lang.invoke;
    26 package java.lang.invoke;
    27 
    27 
    28 import java.security.AccessController;
    28 import java.util.Properties;
    29 import java.security.PrivilegedAction;
       
    30 import jdk.internal.misc.Unsafe;
    29 import jdk.internal.misc.Unsafe;
       
    30 import sun.security.action.GetPropertyAction;
    31 
    31 
    32 /**
    32 /**
    33  * This class consists exclusively of static names internal to the
    33  * This class consists exclusively of static names internal to the
    34  * method handle implementation.
    34  * method handle implementation.
    35  * Usage:  {@code import static java.lang.invoke.MethodHandleStatics.*}
    35  * Usage:  {@code import static java.lang.invoke.MethodHandleStatics.*}
    51     static final boolean PROFILE_GWT;
    51     static final boolean PROFILE_GWT;
    52     static final int CUSTOMIZE_THRESHOLD;
    52     static final int CUSTOMIZE_THRESHOLD;
    53     static final boolean VAR_HANDLE_GUARDS;
    53     static final boolean VAR_HANDLE_GUARDS;
    54 
    54 
    55     static {
    55     static {
    56         final Object[] values = new Object[10];
    56         Properties props = GetPropertyAction.getProperties();
    57         AccessController.doPrivileged(new PrivilegedAction<>() {
    57         DEBUG_METHOD_HANDLE_NAMES = Boolean.parseBoolean(
    58                 public Void run() {
    58                 props.getProperty("java.lang.invoke.MethodHandle.DEBUG_NAMES"));
    59                     values[0] = Boolean.getBoolean("java.lang.invoke.MethodHandle.DEBUG_NAMES");
    59         DUMP_CLASS_FILES = Boolean.parseBoolean(
    60                     values[1] = Boolean.getBoolean("java.lang.invoke.MethodHandle.DUMP_CLASS_FILES");
    60                 props.getProperty("java.lang.invoke.MethodHandle.DUMP_CLASS_FILES"));
    61                     values[2] = Boolean.getBoolean("java.lang.invoke.MethodHandle.TRACE_INTERPRETER");
    61         TRACE_INTERPRETER = Boolean.parseBoolean(
    62                     values[3] = Boolean.getBoolean("java.lang.invoke.MethodHandle.TRACE_METHOD_LINKAGE");
    62                 props.getProperty("java.lang.invoke.MethodHandle.TRACE_INTERPRETER"));
    63                     values[4] = Integer.getInteger("java.lang.invoke.MethodHandle.COMPILE_THRESHOLD", 0);
    63         TRACE_METHOD_LINKAGE = Boolean.parseBoolean(
    64                     values[5] = Integer.getInteger("java.lang.invoke.MethodHandle.DONT_INLINE_THRESHOLD", 30);
    64                 props.getProperty("java.lang.invoke.MethodHandle.TRACE_METHOD_LINKAGE"));
    65                     values[6] = Integer.getInteger("java.lang.invoke.MethodHandle.PROFILE_LEVEL", 0);
    65         COMPILE_THRESHOLD = Integer.parseInt(
    66                     values[7] = Boolean.parseBoolean(System.getProperty("java.lang.invoke.MethodHandle.PROFILE_GWT", "true"));
    66                 props.getProperty("java.lang.invoke.MethodHandle.COMPILE_THRESHOLD", "0"));
    67                     values[8] = Integer.getInteger("java.lang.invoke.MethodHandle.CUSTOMIZE_THRESHOLD", 127);
    67         DONT_INLINE_THRESHOLD = Integer.parseInt(
    68                     values[9] = Boolean.parseBoolean(System.getProperty("java.lang.invoke.VarHandle.VAR_HANDLE_GUARDS", "true"));
    68                 props.getProperty("java.lang.invoke.MethodHandle.DONT_INLINE_THRESHOLD", "30"));
    69                     return null;
    69         PROFILE_LEVEL = Integer.parseInt(
    70                 }
    70                 props.getProperty("java.lang.invoke.MethodHandle.PROFILE_LEVEL", "0"));
    71             });
    71         PROFILE_GWT = Boolean.parseBoolean(
    72         DEBUG_METHOD_HANDLE_NAMES = (Boolean) values[0];
    72                 props.getProperty("java.lang.invoke.MethodHandle.PROFILE_GWT", "true"));
    73         DUMP_CLASS_FILES          = (Boolean) values[1];
    73         CUSTOMIZE_THRESHOLD = Integer.parseInt(
    74         TRACE_INTERPRETER         = (Boolean) values[2];
    74                 props.getProperty("java.lang.invoke.MethodHandle.CUSTOMIZE_THRESHOLD", "127"));
    75         TRACE_METHOD_LINKAGE      = (Boolean) values[3];
    75         VAR_HANDLE_GUARDS = Boolean.parseBoolean(
    76         COMPILE_THRESHOLD         = (Integer) values[4];
    76                 props.getProperty("java.lang.invoke.VarHandle.VAR_HANDLE_GUARDS", "true"));
    77         DONT_INLINE_THRESHOLD     = (Integer) values[5];
       
    78         PROFILE_LEVEL             = (Integer) values[6];
       
    79         PROFILE_GWT               = (Boolean) values[7];
       
    80         CUSTOMIZE_THRESHOLD       = (Integer) values[8];
       
    81         VAR_HANDLE_GUARDS         = (Boolean) values[9];
       
    82 
    77 
    83         if (CUSTOMIZE_THRESHOLD < -1 || CUSTOMIZE_THRESHOLD > 127) {
    78         if (CUSTOMIZE_THRESHOLD < -1 || CUSTOMIZE_THRESHOLD > 127) {
    84             throw newInternalError("CUSTOMIZE_THRESHOLD should be in [-1...127] range");
    79             throw newInternalError("CUSTOMIZE_THRESHOLD should be in [-1...127] range");
    85         }
    80         }
    86     }
    81     }