src/hotspot/share/jvmci/jvmci_globals.cpp
author coleenp
Tue, 31 Oct 2017 11:55:09 -0400
changeset 47765 b7c7428eaab9
parent 47216 71c04702a3d5
child 49191 13378aa8527e
permissions -rw-r--r--
8189610: Reconcile jvm.h and all jvm_md.h between java.base and hotspot Summary: Removed hotspot version of jvm*h and jni*h files. Reviewed-by: ihse, mchung, dholmes
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
33160
c59f1676d27e 8136421: JEP 243: Java-Level JVM Compiler Interface
twisti
parents:
diff changeset
     1
/*
46560
388aa8d67c80 8181449: Fix debug.hpp / globalDefinitions.hpp dependency inversion
kbarrett
parents: 41687
diff changeset
     2
 * Copyright (c) 2000, 2017, Oracle and/or its affiliates. All rights reserved.
33160
c59f1676d27e 8136421: JEP 243: Java-Level JVM Compiler Interface
twisti
parents:
diff changeset
     3
 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
c59f1676d27e 8136421: JEP 243: Java-Level JVM Compiler Interface
twisti
parents:
diff changeset
     4
 *
c59f1676d27e 8136421: JEP 243: Java-Level JVM Compiler Interface
twisti
parents:
diff changeset
     5
 * This code is free software; you can redistribute it and/or modify it
c59f1676d27e 8136421: JEP 243: Java-Level JVM Compiler Interface
twisti
parents:
diff changeset
     6
 * under the terms of the GNU General Public License version 2 only, as
c59f1676d27e 8136421: JEP 243: Java-Level JVM Compiler Interface
twisti
parents:
diff changeset
     7
 * published by the Free Software Foundation.
c59f1676d27e 8136421: JEP 243: Java-Level JVM Compiler Interface
twisti
parents:
diff changeset
     8
 *
c59f1676d27e 8136421: JEP 243: Java-Level JVM Compiler Interface
twisti
parents:
diff changeset
     9
 * This code is distributed in the hope that it will be useful, but WITHOUT
c59f1676d27e 8136421: JEP 243: Java-Level JVM Compiler Interface
twisti
parents:
diff changeset
    10
 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
c59f1676d27e 8136421: JEP 243: Java-Level JVM Compiler Interface
twisti
parents:
diff changeset
    11
 * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
c59f1676d27e 8136421: JEP 243: Java-Level JVM Compiler Interface
twisti
parents:
diff changeset
    12
 * version 2 for more details (a copy is included in the LICENSE file that
c59f1676d27e 8136421: JEP 243: Java-Level JVM Compiler Interface
twisti
parents:
diff changeset
    13
 * accompanied this code).
c59f1676d27e 8136421: JEP 243: Java-Level JVM Compiler Interface
twisti
parents:
diff changeset
    14
 *
c59f1676d27e 8136421: JEP 243: Java-Level JVM Compiler Interface
twisti
parents:
diff changeset
    15
 * You should have received a copy of the GNU General Public License version
c59f1676d27e 8136421: JEP 243: Java-Level JVM Compiler Interface
twisti
parents:
diff changeset
    16
 * 2 along with this work; if not, write to the Free Software Foundation,
c59f1676d27e 8136421: JEP 243: Java-Level JVM Compiler Interface
twisti
parents:
diff changeset
    17
 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
c59f1676d27e 8136421: JEP 243: Java-Level JVM Compiler Interface
twisti
parents:
diff changeset
    18
 *
c59f1676d27e 8136421: JEP 243: Java-Level JVM Compiler Interface
twisti
parents:
diff changeset
    19
 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
c59f1676d27e 8136421: JEP 243: Java-Level JVM Compiler Interface
twisti
parents:
diff changeset
    20
 * or visit www.oracle.com if you need additional information or have any
c59f1676d27e 8136421: JEP 243: Java-Level JVM Compiler Interface
twisti
parents:
diff changeset
    21
 * questions.
c59f1676d27e 8136421: JEP 243: Java-Level JVM Compiler Interface
twisti
parents:
diff changeset
    22
 *
c59f1676d27e 8136421: JEP 243: Java-Level JVM Compiler Interface
twisti
parents:
diff changeset
    23
 */
c59f1676d27e 8136421: JEP 243: Java-Level JVM Compiler Interface
twisti
parents:
diff changeset
    24
c59f1676d27e 8136421: JEP 243: Java-Level JVM Compiler Interface
twisti
parents:
diff changeset
    25
#include "precompiled.hpp"
47765
b7c7428eaab9 8189610: Reconcile jvm.h and all jvm_md.h between java.base and hotspot
coleenp
parents: 47216
diff changeset
    26
#include "jvm.h"
33160
c59f1676d27e 8136421: JEP 243: Java-Level JVM Compiler Interface
twisti
parents:
diff changeset
    27
#include "jvmci/jvmci_globals.hpp"
36313
e7eff81d7f1d 8145333: -XX:+EnableJVMCI -XX:+UseJVMCICompiler -XX:-EnableJVMCI makes JVM crash
jcm
parents: 33160
diff changeset
    28
#include "utilities/defaultStream.hpp"
e7eff81d7f1d 8145333: -XX:+EnableJVMCI -XX:+UseJVMCICompiler -XX:-EnableJVMCI makes JVM crash
jcm
parents: 33160
diff changeset
    29
#include "runtime/globals_extension.hpp"
33160
c59f1676d27e 8136421: JEP 243: Java-Level JVM Compiler Interface
twisti
parents:
diff changeset
    30
c59f1676d27e 8136421: JEP 243: Java-Level JVM Compiler Interface
twisti
parents:
diff changeset
    31
JVMCI_FLAGS(MATERIALIZE_DEVELOPER_FLAG, \
c59f1676d27e 8136421: JEP 243: Java-Level JVM Compiler Interface
twisti
parents:
diff changeset
    32
            MATERIALIZE_PD_DEVELOPER_FLAG, \
c59f1676d27e 8136421: JEP 243: Java-Level JVM Compiler Interface
twisti
parents:
diff changeset
    33
            MATERIALIZE_PRODUCT_FLAG, \
c59f1676d27e 8136421: JEP 243: Java-Level JVM Compiler Interface
twisti
parents:
diff changeset
    34
            MATERIALIZE_PD_PRODUCT_FLAG, \
c59f1676d27e 8136421: JEP 243: Java-Level JVM Compiler Interface
twisti
parents:
diff changeset
    35
            MATERIALIZE_DIAGNOSTIC_FLAG, \
39117
59fa99a45873 8150900: Implement diagnostic_pd
csahu
parents: 38273
diff changeset
    36
            MATERIALIZE_PD_DIAGNOSTIC_FLAG, \
33160
c59f1676d27e 8136421: JEP 243: Java-Level JVM Compiler Interface
twisti
parents:
diff changeset
    37
            MATERIALIZE_EXPERIMENTAL_FLAG, \
c59f1676d27e 8136421: JEP 243: Java-Level JVM Compiler Interface
twisti
parents:
diff changeset
    38
            MATERIALIZE_NOTPRODUCT_FLAG,
c59f1676d27e 8136421: JEP 243: Java-Level JVM Compiler Interface
twisti
parents:
diff changeset
    39
            IGNORE_RANGE, \
38273
2634194d7555 8073500: Prevent certain commercial flags from being changed at runtime
gziemski
parents: 36313
diff changeset
    40
            IGNORE_CONSTRAINT, \
2634194d7555 8073500: Prevent certain commercial flags from being changed at runtime
gziemski
parents: 36313
diff changeset
    41
            IGNORE_WRITEABLE)
36313
e7eff81d7f1d 8145333: -XX:+EnableJVMCI -XX:+UseJVMCICompiler -XX:-EnableJVMCI makes JVM crash
jcm
parents: 33160
diff changeset
    42
e7eff81d7f1d 8145333: -XX:+EnableJVMCI -XX:+UseJVMCICompiler -XX:-EnableJVMCI makes JVM crash
jcm
parents: 33160
diff changeset
    43
// Return true if jvmci flags are consistent.
e7eff81d7f1d 8145333: -XX:+EnableJVMCI -XX:+UseJVMCICompiler -XX:-EnableJVMCI makes JVM crash
jcm
parents: 33160
diff changeset
    44
bool JVMCIGlobals::check_jvmci_flags_are_consistent() {
e7eff81d7f1d 8145333: -XX:+EnableJVMCI -XX:+UseJVMCICompiler -XX:-EnableJVMCI makes JVM crash
jcm
parents: 33160
diff changeset
    45
e7eff81d7f1d 8145333: -XX:+EnableJVMCI -XX:+UseJVMCICompiler -XX:-EnableJVMCI makes JVM crash
jcm
parents: 33160
diff changeset
    46
#ifndef PRODUCT
40081
50be9fe0e9c2 8161265: [JVMCI] EnableJVMCI should only be required when its not implied by other flags
dnsimon
parents: 40046
diff changeset
    47
#define APPLY_JVMCI_FLAGS(params3, params4) \
50be9fe0e9c2 8161265: [JVMCI] EnableJVMCI should only be required when its not implied by other flags
dnsimon
parents: 40046
diff changeset
    48
  JVMCI_FLAGS(params4, params3, params4, params3, params4, params3, params4, params4, IGNORE_RANGE, IGNORE_CONSTRAINT, IGNORE_WRITEABLE)
50be9fe0e9c2 8161265: [JVMCI] EnableJVMCI should only be required when its not implied by other flags
dnsimon
parents: 40046
diff changeset
    49
#define JVMCI_DECLARE_CHECK4(type, name, value, doc) bool name##checked = false;
50be9fe0e9c2 8161265: [JVMCI] EnableJVMCI should only be required when its not implied by other flags
dnsimon
parents: 40046
diff changeset
    50
#define JVMCI_DECLARE_CHECK3(type, name, doc)        bool name##checked = false;
50be9fe0e9c2 8161265: [JVMCI] EnableJVMCI should only be required when its not implied by other flags
dnsimon
parents: 40046
diff changeset
    51
#define JVMCI_FLAG_CHECKED(name)                          name##checked = true;
50be9fe0e9c2 8161265: [JVMCI] EnableJVMCI should only be required when its not implied by other flags
dnsimon
parents: 40046
diff changeset
    52
  APPLY_JVMCI_FLAGS(JVMCI_DECLARE_CHECK3, JVMCI_DECLARE_CHECK4)
36313
e7eff81d7f1d 8145333: -XX:+EnableJVMCI -XX:+UseJVMCICompiler -XX:-EnableJVMCI makes JVM crash
jcm
parents: 33160
diff changeset
    53
#else
40081
50be9fe0e9c2 8161265: [JVMCI] EnableJVMCI should only be required when its not implied by other flags
dnsimon
parents: 40046
diff changeset
    54
#define JVMCI_FLAG_CHECKED(name)
36313
e7eff81d7f1d 8145333: -XX:+EnableJVMCI -XX:+UseJVMCICompiler -XX:-EnableJVMCI makes JVM crash
jcm
parents: 33160
diff changeset
    55
#endif
e7eff81d7f1d 8145333: -XX:+EnableJVMCI -XX:+UseJVMCICompiler -XX:-EnableJVMCI makes JVM crash
jcm
parents: 33160
diff changeset
    56
40081
50be9fe0e9c2 8161265: [JVMCI] EnableJVMCI should only be required when its not implied by other flags
dnsimon
parents: 40046
diff changeset
    57
  // Checks that a given flag is not set if a given guard flag is false.
50be9fe0e9c2 8161265: [JVMCI] EnableJVMCI should only be required when its not implied by other flags
dnsimon
parents: 40046
diff changeset
    58
#define CHECK_NOT_SET(FLAG, GUARD)                     \
50be9fe0e9c2 8161265: [JVMCI] EnableJVMCI should only be required when its not implied by other flags
dnsimon
parents: 40046
diff changeset
    59
  JVMCI_FLAG_CHECKED(FLAG)                             \
50be9fe0e9c2 8161265: [JVMCI] EnableJVMCI should only be required when its not implied by other flags
dnsimon
parents: 40046
diff changeset
    60
  if (!GUARD && !FLAG_IS_DEFAULT(FLAG)) {              \
50be9fe0e9c2 8161265: [JVMCI] EnableJVMCI should only be required when its not implied by other flags
dnsimon
parents: 40046
diff changeset
    61
    jio_fprintf(defaultStream::error_stream(),         \
50be9fe0e9c2 8161265: [JVMCI] EnableJVMCI should only be required when its not implied by other flags
dnsimon
parents: 40046
diff changeset
    62
        "Improperly specified VM option '%s': '%s' must be enabled\n", #FLAG, #GUARD); \
50be9fe0e9c2 8161265: [JVMCI] EnableJVMCI should only be required when its not implied by other flags
dnsimon
parents: 40046
diff changeset
    63
    return false;                                      \
36313
e7eff81d7f1d 8145333: -XX:+EnableJVMCI -XX:+UseJVMCICompiler -XX:-EnableJVMCI makes JVM crash
jcm
parents: 33160
diff changeset
    64
  }
e7eff81d7f1d 8145333: -XX:+EnableJVMCI -XX:+UseJVMCICompiler -XX:-EnableJVMCI makes JVM crash
jcm
parents: 33160
diff changeset
    65
40081
50be9fe0e9c2 8161265: [JVMCI] EnableJVMCI should only be required when its not implied by other flags
dnsimon
parents: 40046
diff changeset
    66
  JVMCI_FLAG_CHECKED(UseJVMCICompiler)
50be9fe0e9c2 8161265: [JVMCI] EnableJVMCI should only be required when its not implied by other flags
dnsimon
parents: 40046
diff changeset
    67
  JVMCI_FLAG_CHECKED(EnableJVMCI)
50be9fe0e9c2 8161265: [JVMCI] EnableJVMCI should only be required when its not implied by other flags
dnsimon
parents: 40046
diff changeset
    68
50be9fe0e9c2 8161265: [JVMCI] EnableJVMCI should only be required when its not implied by other flags
dnsimon
parents: 40046
diff changeset
    69
  CHECK_NOT_SET(BootstrapJVMCI,   UseJVMCICompiler)
50be9fe0e9c2 8161265: [JVMCI] EnableJVMCI should only be required when its not implied by other flags
dnsimon
parents: 40046
diff changeset
    70
  CHECK_NOT_SET(PrintBootstrap,   UseJVMCICompiler)
50be9fe0e9c2 8161265: [JVMCI] EnableJVMCI should only be required when its not implied by other flags
dnsimon
parents: 40046
diff changeset
    71
  CHECK_NOT_SET(JVMCIThreads,     UseJVMCICompiler)
50be9fe0e9c2 8161265: [JVMCI] EnableJVMCI should only be required when its not implied by other flags
dnsimon
parents: 40046
diff changeset
    72
  CHECK_NOT_SET(JVMCIHostThreads, UseJVMCICompiler)
36313
e7eff81d7f1d 8145333: -XX:+EnableJVMCI -XX:+UseJVMCICompiler -XX:-EnableJVMCI makes JVM crash
jcm
parents: 33160
diff changeset
    73
40081
50be9fe0e9c2 8161265: [JVMCI] EnableJVMCI should only be required when its not implied by other flags
dnsimon
parents: 40046
diff changeset
    74
  if (UseJVMCICompiler) {
50be9fe0e9c2 8161265: [JVMCI] EnableJVMCI should only be required when its not implied by other flags
dnsimon
parents: 40046
diff changeset
    75
    if (!FLAG_IS_DEFAULT(EnableJVMCI) && !EnableJVMCI) {
50be9fe0e9c2 8161265: [JVMCI] EnableJVMCI should only be required when its not implied by other flags
dnsimon
parents: 40046
diff changeset
    76
      jio_fprintf(defaultStream::error_stream(),
50be9fe0e9c2 8161265: [JVMCI] EnableJVMCI should only be required when its not implied by other flags
dnsimon
parents: 40046
diff changeset
    77
          "Improperly specified VM option UseJVMCICompiler: EnableJVMCI cannot be disabled\n");
50be9fe0e9c2 8161265: [JVMCI] EnableJVMCI should only be required when its not implied by other flags
dnsimon
parents: 40046
diff changeset
    78
      return false;
50be9fe0e9c2 8161265: [JVMCI] EnableJVMCI should only be required when its not implied by other flags
dnsimon
parents: 40046
diff changeset
    79
    }
50be9fe0e9c2 8161265: [JVMCI] EnableJVMCI should only be required when its not implied by other flags
dnsimon
parents: 40046
diff changeset
    80
    FLAG_SET_DEFAULT(EnableJVMCI, true);
36313
e7eff81d7f1d 8145333: -XX:+EnableJVMCI -XX:+UseJVMCICompiler -XX:-EnableJVMCI makes JVM crash
jcm
parents: 33160
diff changeset
    81
  }
e7eff81d7f1d 8145333: -XX:+EnableJVMCI -XX:+UseJVMCICompiler -XX:-EnableJVMCI makes JVM crash
jcm
parents: 33160
diff changeset
    82
40081
50be9fe0e9c2 8161265: [JVMCI] EnableJVMCI should only be required when its not implied by other flags
dnsimon
parents: 40046
diff changeset
    83
  CHECK_NOT_SET(JVMCITraceLevel,              EnableJVMCI)
50be9fe0e9c2 8161265: [JVMCI] EnableJVMCI should only be required when its not implied by other flags
dnsimon
parents: 40046
diff changeset
    84
  CHECK_NOT_SET(JVMCICounterSize,             EnableJVMCI)
50be9fe0e9c2 8161265: [JVMCI] EnableJVMCI should only be required when its not implied by other flags
dnsimon
parents: 40046
diff changeset
    85
  CHECK_NOT_SET(JVMCICountersExcludeCompiler, EnableJVMCI)
50be9fe0e9c2 8161265: [JVMCI] EnableJVMCI should only be required when its not implied by other flags
dnsimon
parents: 40046
diff changeset
    86
  CHECK_NOT_SET(JVMCIUseFastLocking,          EnableJVMCI)
50be9fe0e9c2 8161265: [JVMCI] EnableJVMCI should only be required when its not implied by other flags
dnsimon
parents: 40046
diff changeset
    87
  CHECK_NOT_SET(JVMCINMethodSizeLimit,        EnableJVMCI)
40869
2f53be0a45ee 8163864: [JVMCI] move MethodProfileWidth to jvmci_globals.hpp
dnsimon
parents: 40081
diff changeset
    88
  CHECK_NOT_SET(MethodProfileWidth,           EnableJVMCI)
41687
6b97c4598667 8167194: [JVMCI] no reliable mechanism for querying JVMCI system properties
dnsimon
parents: 40869
diff changeset
    89
  CHECK_NOT_SET(JVMCIPrintProperties,         EnableJVMCI)
40081
50be9fe0e9c2 8161265: [JVMCI] EnableJVMCI should only be required when its not implied by other flags
dnsimon
parents: 40046
diff changeset
    90
  CHECK_NOT_SET(TraceUncollectedSpeculations, EnableJVMCI)
36313
e7eff81d7f1d 8145333: -XX:+EnableJVMCI -XX:+UseJVMCICompiler -XX:-EnableJVMCI makes JVM crash
jcm
parents: 33160
diff changeset
    91
e7eff81d7f1d 8145333: -XX:+EnableJVMCI -XX:+UseJVMCICompiler -XX:-EnableJVMCI makes JVM crash
jcm
parents: 33160
diff changeset
    92
#ifndef PRODUCT
40081
50be9fe0e9c2 8161265: [JVMCI] EnableJVMCI should only be required when its not implied by other flags
dnsimon
parents: 40046
diff changeset
    93
#define JVMCI_CHECK4(type, name, value, doc) assert(name##checked, #name " flag not checked");
50be9fe0e9c2 8161265: [JVMCI] EnableJVMCI should only be required when its not implied by other flags
dnsimon
parents: 40046
diff changeset
    94
#define JVMCI_CHECK3(type, name, doc)        assert(name##checked, #name " flag not checked");
50be9fe0e9c2 8161265: [JVMCI] EnableJVMCI should only be required when its not implied by other flags
dnsimon
parents: 40046
diff changeset
    95
  // Ensures that all JVMCI flags are checked by this method.
50be9fe0e9c2 8161265: [JVMCI] EnableJVMCI should only be required when its not implied by other flags
dnsimon
parents: 40046
diff changeset
    96
  APPLY_JVMCI_FLAGS(JVMCI_CHECK3, JVMCI_CHECK4)
50be9fe0e9c2 8161265: [JVMCI] EnableJVMCI should only be required when its not implied by other flags
dnsimon
parents: 40046
diff changeset
    97
#undef APPLY_JVMCI_FLAGS
50be9fe0e9c2 8161265: [JVMCI] EnableJVMCI should only be required when its not implied by other flags
dnsimon
parents: 40046
diff changeset
    98
#undef JVMCI_DECLARE_CHECK3
50be9fe0e9c2 8161265: [JVMCI] EnableJVMCI should only be required when its not implied by other flags
dnsimon
parents: 40046
diff changeset
    99
#undef JVMCI_DECLARE_CHECK4
50be9fe0e9c2 8161265: [JVMCI] EnableJVMCI should only be required when its not implied by other flags
dnsimon
parents: 40046
diff changeset
   100
#undef JVMCI_CHECK3
50be9fe0e9c2 8161265: [JVMCI] EnableJVMCI should only be required when its not implied by other flags
dnsimon
parents: 40046
diff changeset
   101
#undef JVMCI_CHECK4
50be9fe0e9c2 8161265: [JVMCI] EnableJVMCI should only be required when its not implied by other flags
dnsimon
parents: 40046
diff changeset
   102
#undef JVMCI_FLAG_CHECKED
36313
e7eff81d7f1d 8145333: -XX:+EnableJVMCI -XX:+UseJVMCICompiler -XX:-EnableJVMCI makes JVM crash
jcm
parents: 33160
diff changeset
   103
#endif
40081
50be9fe0e9c2 8161265: [JVMCI] EnableJVMCI should only be required when its not implied by other flags
dnsimon
parents: 40046
diff changeset
   104
#undef CHECK_NOT_SET
50be9fe0e9c2 8161265: [JVMCI] EnableJVMCI should only be required when its not implied by other flags
dnsimon
parents: 40046
diff changeset
   105
  return true;
36313
e7eff81d7f1d 8145333: -XX:+EnableJVMCI -XX:+UseJVMCICompiler -XX:-EnableJVMCI makes JVM crash
jcm
parents: 33160
diff changeset
   106
}