Class CompilerHints

    • Field Detail

      • HINT_COMPATIBLE_JVMS

        static final java.lang.String[] HINT_COMPATIBLE_JVMS
      • hintsFile

        private static volatile java.lang.String hintsFile
      • hints

        private final java.util.Set<java.lang.String> hints
      • XX_COMPILE_COMMAND_FILE

        static final java.lang.String XX_COMPILE_COMMAND_FILE
        See Also:
        Constant Field Values
      • BLACKHOLE_AUTODETECT_NAME

        static final java.lang.String BLACKHOLE_AUTODETECT_NAME
        See Also:
        Constant Field Values
      • BLACKHOLE_DEBUG_NAME

        static final java.lang.String BLACKHOLE_DEBUG_NAME
        See Also:
        Constant Field Values
      • BLACKHOLE_MODE_AUTODETECT

        static final boolean BLACKHOLE_MODE_AUTODETECT
      • BLACKHOLE_MODE_DEBUG

        static final boolean BLACKHOLE_MODE_DEBUG
    • Constructor Detail

      • CompilerHints

        private CompilerHints​(java.lang.String file,
                              java.lang.String resource)
    • Method Detail

      • hintsFile

        public static java.lang.String hintsFile()
      • fromResource

        public static CompilerHints fromResource​(java.lang.String resource)
      • fromFile

        public static CompilerHints fromFile​(java.lang.String file)
      • isHintCompatibleVM

        private static boolean isHintCompatibleVM()
        FIXME (low priority): check if supplied JVM is hint compatible. This test is applied to the Runner VM, not the Forked and may therefore be wrong if the forked VM is not the same JVM
      • get

        public java.util.Set<java.lang.String> get()
      • read

        private java.util.Set<java.lang.String> read()
      • getCompileCommandFiles

        public static java.util.List<java.lang.String> getCompileCommandFiles​(java.util.List<java.lang.String> command)
        Parameters:
        command - command arguments list
        Returns:
        the compiler hint files specified by the command
      • addCompilerHints

        public static void addCompilerHints​(java.util.List<java.lang.String> command)
        We need to generate a compiler hints file such that it includes:
        • No compile command files are specified and no .hotspotrc file is available, then do JMH hints only
        • No compile command files are specified and .hotspotrc file is available, then do JMH hints + .hotspotrc
        • 1 to N compile command files are specified, then do JMH hints + all specified hints in files

        This is a departure from default JVM behavior as the JVM would normally just take the last hints file and ignore the rest.

        Parameters:
        command - all -XX:CompileCommandLine args will be removed and a merged file will be set
      • removeCompileCommandFiles

        private static void removeCompileCommandFiles​(java.util.List<java.lang.String> command,
                                                      java.util.List<java.lang.String> compileCommandFiles)
        Parameters:
        command - the compile command file options will be removed from this command
        compileCommandFiles - the compiler hint files specified by the command will be added to this list
      • mergeHintFiles

        private static java.lang.String mergeHintFiles​(java.util.List<java.lang.String> compileCommandFiles)
      • compilerBlackholesAvailable

        private static boolean compilerBlackholesAvailable()
      • debug

        private static void debug​(java.lang.String msg)
      • printBlackhole

        public static void printBlackhole​(java.io.PrintStream out)
      • printWarnings

        public static void printWarnings​(java.io.PrintStream out)