< prev index next >

src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.hotspot.test/src/org/graalvm/compiler/hotspot/test/CompileTheWorld.java

Print this page




  14  *
  15  * You should have received a copy of the GNU General Public License version
  16  * 2 along with this work; if not, write to the Free Software Foundation,
  17  * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
  18  *
  19  * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
  20  * or visit www.oracle.com if you need additional information or have any
  21  * questions.
  22  */
  23 
  24 
  25 package org.graalvm.compiler.hotspot.test;
  26 
  27 import static java.util.Collections.singletonList;
  28 import static org.graalvm.compiler.core.CompilationWrapper.ExceptionAction.Print;
  29 import static org.graalvm.compiler.core.GraalCompilerOptions.CompilationBailoutAction;
  30 import static org.graalvm.compiler.core.GraalCompilerOptions.CompilationFailureAction;
  31 import static org.graalvm.compiler.core.test.ReflectionOptionDescriptors.extractEntries;
  32 import static org.graalvm.compiler.debug.MemUseTrackerKey.getCurrentThreadAllocatedBytes;
  33 import static org.graalvm.compiler.hotspot.test.CompileTheWorld.Options.DESCRIPTORS;
  34 import static org.graalvm.compiler.serviceprovider.GraalServices.Java8OrEarlier;
  35 
  36 import java.io.Closeable;
  37 import java.io.File;
  38 import java.io.IOException;
  39 import java.lang.annotation.Annotation;
  40 import java.lang.reflect.Constructor;
  41 import java.lang.reflect.Method;
  42 import java.lang.reflect.Modifier;
  43 import java.net.URI;
  44 import java.net.URL;
  45 import java.net.URLClassLoader;
  46 import java.nio.file.FileSystem;
  47 import java.nio.file.FileSystems;
  48 import java.nio.file.FileVisitResult;
  49 import java.nio.file.Files;
  50 import java.nio.file.Path;
  51 import java.nio.file.SimpleFileVisitor;
  52 import java.nio.file.attribute.BasicFileAttributes;
  53 import java.util.ArrayList;
  54 import java.util.Arrays;


  73 import java.util.stream.Collectors;
  74 
  75 import jdk.internal.vm.compiler.collections.EconomicMap;
  76 import jdk.internal.vm.compiler.collections.UnmodifiableEconomicMap;
  77 import org.graalvm.compiler.api.replacements.Snippet;
  78 import org.graalvm.compiler.bytecode.Bytecodes;
  79 import org.graalvm.compiler.core.CompilerThreadFactory;
  80 import org.graalvm.compiler.core.test.ReflectionOptionDescriptors;
  81 import org.graalvm.compiler.debug.DebugOptions;
  82 import org.graalvm.compiler.debug.GraalError;
  83 import org.graalvm.compiler.debug.MethodFilter;
  84 import org.graalvm.compiler.debug.TTY;
  85 import org.graalvm.compiler.hotspot.CompilationTask;
  86 import org.graalvm.compiler.hotspot.GraalHotSpotVMConfig;
  87 import org.graalvm.compiler.hotspot.HotSpotGraalCompiler;
  88 import org.graalvm.compiler.hotspot.HotSpotGraalRuntimeProvider;
  89 import org.graalvm.compiler.options.OptionDescriptors;
  90 import org.graalvm.compiler.options.OptionKey;
  91 import org.graalvm.compiler.options.OptionValues;
  92 import org.graalvm.compiler.options.OptionsParser;
  93 import org.graalvm.compiler.serviceprovider.GraalServices;
  94 
  95 import jdk.vm.ci.hotspot.HotSpotCodeCacheProvider;
  96 import jdk.vm.ci.hotspot.HotSpotCompilationRequest;
  97 import jdk.vm.ci.hotspot.HotSpotInstalledCode;
  98 import jdk.vm.ci.hotspot.HotSpotJVMCIRuntime;
  99 import jdk.vm.ci.hotspot.HotSpotResolvedJavaMethod;
 100 import jdk.vm.ci.hotspot.HotSpotResolvedObjectType;
 101 import jdk.vm.ci.meta.ConstantPool;
 102 import jdk.vm.ci.meta.MetaAccessProvider;
 103 import jdk.vm.ci.runtime.JVMCI;
 104 import jdk.vm.ci.runtime.JVMCICompiler;
 105 
 106 /**
 107  * This class implements compile-the-world functionality with JVMCI.
 108  */
 109 public final class CompileTheWorld {
 110 
 111     /**
 112      * Magic token to denote that JDK classes are to be compiled. If
 113      * {@link GraalServices#Java8OrEarlier}, then the classes in {@code rt.jar} are compiled.
 114      * Otherwise the classes in the Java runtime image are compiled.
 115      */
 116     public static final String SUN_BOOT_CLASS_PATH = "sun.boot.class.path";
 117 
 118     /**
 119      * Magic token to denote the classes in the Java runtime image (i.e. in the {@code jrt:/} file
 120      * system).
 121      */
 122     public static final String JRT_CLASS_PATH_ENTRY = "<jrt>";
 123 
 124     /**
 125      * @param options a space separated set of option value settings with each option setting in a
 126      *            {@code -Dgraal.<name>=<value>} format but without the leading {@code -Dgraal.}.
 127      *            Ignored if null.
 128      */
 129     public static EconomicMap<OptionKey<?>, Object> parseOptions(String options) {
 130         if (options != null) {
 131             EconomicMap<String, String> optionSettings = EconomicMap.create();
 132             for (String optionSetting : options.split("\\s+|#")) {
 133                 OptionsParser.parseOptionSettingTo(optionSetting, optionSettings);




  14  *
  15  * You should have received a copy of the GNU General Public License version
  16  * 2 along with this work; if not, write to the Free Software Foundation,
  17  * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
  18  *
  19  * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
  20  * or visit www.oracle.com if you need additional information or have any
  21  * questions.
  22  */
  23 
  24 
  25 package org.graalvm.compiler.hotspot.test;
  26 
  27 import static java.util.Collections.singletonList;
  28 import static org.graalvm.compiler.core.CompilationWrapper.ExceptionAction.Print;
  29 import static org.graalvm.compiler.core.GraalCompilerOptions.CompilationBailoutAction;
  30 import static org.graalvm.compiler.core.GraalCompilerOptions.CompilationFailureAction;
  31 import static org.graalvm.compiler.core.test.ReflectionOptionDescriptors.extractEntries;
  32 import static org.graalvm.compiler.debug.MemUseTrackerKey.getCurrentThreadAllocatedBytes;
  33 import static org.graalvm.compiler.hotspot.test.CompileTheWorld.Options.DESCRIPTORS;
  34 import static org.graalvm.compiler.serviceprovider.JavaVersionUtil.Java8OrEarlier;
  35 
  36 import java.io.Closeable;
  37 import java.io.File;
  38 import java.io.IOException;
  39 import java.lang.annotation.Annotation;
  40 import java.lang.reflect.Constructor;
  41 import java.lang.reflect.Method;
  42 import java.lang.reflect.Modifier;
  43 import java.net.URI;
  44 import java.net.URL;
  45 import java.net.URLClassLoader;
  46 import java.nio.file.FileSystem;
  47 import java.nio.file.FileSystems;
  48 import java.nio.file.FileVisitResult;
  49 import java.nio.file.Files;
  50 import java.nio.file.Path;
  51 import java.nio.file.SimpleFileVisitor;
  52 import java.nio.file.attribute.BasicFileAttributes;
  53 import java.util.ArrayList;
  54 import java.util.Arrays;


  73 import java.util.stream.Collectors;
  74 
  75 import jdk.internal.vm.compiler.collections.EconomicMap;
  76 import jdk.internal.vm.compiler.collections.UnmodifiableEconomicMap;
  77 import org.graalvm.compiler.api.replacements.Snippet;
  78 import org.graalvm.compiler.bytecode.Bytecodes;
  79 import org.graalvm.compiler.core.CompilerThreadFactory;
  80 import org.graalvm.compiler.core.test.ReflectionOptionDescriptors;
  81 import org.graalvm.compiler.debug.DebugOptions;
  82 import org.graalvm.compiler.debug.GraalError;
  83 import org.graalvm.compiler.debug.MethodFilter;
  84 import org.graalvm.compiler.debug.TTY;
  85 import org.graalvm.compiler.hotspot.CompilationTask;
  86 import org.graalvm.compiler.hotspot.GraalHotSpotVMConfig;
  87 import org.graalvm.compiler.hotspot.HotSpotGraalCompiler;
  88 import org.graalvm.compiler.hotspot.HotSpotGraalRuntimeProvider;
  89 import org.graalvm.compiler.options.OptionDescriptors;
  90 import org.graalvm.compiler.options.OptionKey;
  91 import org.graalvm.compiler.options.OptionValues;
  92 import org.graalvm.compiler.options.OptionsParser;
  93 import org.graalvm.compiler.serviceprovider.JavaVersionUtil;
  94 
  95 import jdk.vm.ci.hotspot.HotSpotCodeCacheProvider;
  96 import jdk.vm.ci.hotspot.HotSpotCompilationRequest;
  97 import jdk.vm.ci.hotspot.HotSpotInstalledCode;
  98 import jdk.vm.ci.hotspot.HotSpotJVMCIRuntime;
  99 import jdk.vm.ci.hotspot.HotSpotResolvedJavaMethod;
 100 import jdk.vm.ci.hotspot.HotSpotResolvedObjectType;
 101 import jdk.vm.ci.meta.ConstantPool;
 102 import jdk.vm.ci.meta.MetaAccessProvider;
 103 import jdk.vm.ci.runtime.JVMCI;
 104 import jdk.vm.ci.runtime.JVMCICompiler;
 105 
 106 /**
 107  * This class implements compile-the-world functionality with JVMCI.
 108  */
 109 public final class CompileTheWorld {
 110 
 111     /**
 112      * Magic token to denote that JDK classes are to be compiled. If
 113      * {@link JavaVersionUtil#Java8OrEarlier}, then the classes in {@code rt.jar} are compiled.
 114      * Otherwise the classes in the Java runtime image are compiled.
 115      */
 116     public static final String SUN_BOOT_CLASS_PATH = "sun.boot.class.path";
 117 
 118     /**
 119      * Magic token to denote the classes in the Java runtime image (i.e. in the {@code jrt:/} file
 120      * system).
 121      */
 122     public static final String JRT_CLASS_PATH_ENTRY = "<jrt>";
 123 
 124     /**
 125      * @param options a space separated set of option value settings with each option setting in a
 126      *            {@code -Dgraal.<name>=<value>} format but without the leading {@code -Dgraal.}.
 127      *            Ignored if null.
 128      */
 129     public static EconomicMap<OptionKey<?>, Object> parseOptions(String options) {
 130         if (options != null) {
 131             EconomicMap<String, String> optionSettings = EconomicMap.create();
 132             for (String optionSetting : options.split("\\s+|#")) {
 133                 OptionsParser.parseOptionSettingTo(optionSetting, optionSettings);


< prev index next >