jdk/src/java.base/share/classes/java/lang/invoke/StringConcatFactory.java
changeset 37593 824750ada3d6
parent 37332 820fef956a15
child 37684 38b7cb606a05
equal deleted inserted replaced
37592:c80f098887f4 37593:824750ada3d6
    31 import jdk.internal.org.objectweb.asm.Opcodes;
    31 import jdk.internal.org.objectweb.asm.Opcodes;
    32 import jdk.internal.vm.annotation.ForceInline;
    32 import jdk.internal.vm.annotation.ForceInline;
    33 import jdk.internal.misc.Unsafe;
    33 import jdk.internal.misc.Unsafe;
    34 
    34 
    35 import java.lang.invoke.MethodHandles.Lookup;
    35 import java.lang.invoke.MethodHandles.Lookup;
    36 import java.security.AccessController;
       
    37 import java.util.*;
    36 import java.util.*;
    38 import java.util.concurrent.ConcurrentHashMap;
    37 import java.util.concurrent.ConcurrentHashMap;
    39 import java.util.concurrent.ConcurrentMap;
    38 import java.util.concurrent.ConcurrentMap;
    40 import java.util.function.Function;
    39 import java.util.function.Function;
    41 import sun.security.action.GetPropertyAction;
    40 import sun.security.action.GetPropertyAction;
   186      * Dump generated classes to disk, for debugging purposes.
   185      * Dump generated classes to disk, for debugging purposes.
   187      */
   186      */
   188     private static final ProxyClassesDumper DUMPER;
   187     private static final ProxyClassesDumper DUMPER;
   189 
   188 
   190     static {
   189     static {
   191         final String strategy = AccessController.doPrivileged(
   190         Properties props = GetPropertyAction.getProperties();
   192                 new GetPropertyAction("java.lang.invoke.stringConcat"));
   191         final String strategy =
   193         CACHE_ENABLE = Boolean.parseBoolean(AccessController.doPrivileged(
   192                 props.getProperty("java.lang.invoke.stringConcat");
   194                 new GetPropertyAction("java.lang.invoke.stringConcat.cache")));
   193         CACHE_ENABLE = Boolean.parseBoolean(
   195         DEBUG = Boolean.parseBoolean(AccessController.doPrivileged(
   194                 props.getProperty("java.lang.invoke.stringConcat.cache"));
   196                 new GetPropertyAction("java.lang.invoke.stringConcat.debug")));
   195         DEBUG = Boolean.parseBoolean(
   197         final String dumpPath = AccessController.doPrivileged(
   196                 props.getProperty("java.lang.invoke.stringConcat.debug"));
   198                 new GetPropertyAction("java.lang.invoke.stringConcat.dumpClasses"));
   197         final String dumpPath =
       
   198                 props.getProperty("java.lang.invoke.stringConcat.dumpClasses");
   199 
   199 
   200         STRATEGY = (strategy == null) ? DEFAULT_STRATEGY : Strategy.valueOf(strategy);
   200         STRATEGY = (strategy == null) ? DEFAULT_STRATEGY : Strategy.valueOf(strategy);
   201         CACHE = CACHE_ENABLE ? new ConcurrentHashMap<>() : null;
   201         CACHE = CACHE_ENABLE ? new ConcurrentHashMap<>() : null;
   202         DUMPER = (dumpPath == null) ? null : ProxyClassesDumper.getInstance(dumpPath);
   202         DUMPER = (dumpPath == null) ? null : ProxyClassesDumper.getInstance(dumpPath);
   203     }
   203     }