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 } |