hotspot/src/share/vm/runtime/arguments.hpp
author ccheung
Thu, 07 Apr 2016 22:03:04 -0700
changeset 37439 e8970711113b
parent 37253 45e69c7b0bac
child 37466 287c4ebd11b0
permissions -rw-r--r--
8145221: Use trampolines for i2i and i2c entries in Methods that are stored in CDS archive Summary: This optimization reduces the size of the RW region of the CDS archive. It also reduces the amount of pages in the RW region that are actually written into during runtime. Reviewed-by: dlong, iklam, jiangli Contributed-by: ioi.lam@oracle.com, calvin.cheung@oracle.com, goetz.lindenmaier@sap.com
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
1
489c9b5090e2 Initial load
duke
parents:
diff changeset
     1
/*
35489
368deab8e88b 8146800: Reorganize logging alias code.
mockner
parents: 35466
diff changeset
     2
 * Copyright (c) 1997, 2016, Oracle and/or its affiliates. All rights reserved.
1
489c9b5090e2 Initial load
duke
parents:
diff changeset
     3
 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
489c9b5090e2 Initial load
duke
parents:
diff changeset
     4
 *
489c9b5090e2 Initial load
duke
parents:
diff changeset
     5
 * This code is free software; you can redistribute it and/or modify it
489c9b5090e2 Initial load
duke
parents:
diff changeset
     6
 * under the terms of the GNU General Public License version 2 only, as
489c9b5090e2 Initial load
duke
parents:
diff changeset
     7
 * published by the Free Software Foundation.
489c9b5090e2 Initial load
duke
parents:
diff changeset
     8
 *
489c9b5090e2 Initial load
duke
parents:
diff changeset
     9
 * This code is distributed in the hope that it will be useful, but WITHOUT
489c9b5090e2 Initial load
duke
parents:
diff changeset
    10
 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
489c9b5090e2 Initial load
duke
parents:
diff changeset
    11
 * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
489c9b5090e2 Initial load
duke
parents:
diff changeset
    12
 * version 2 for more details (a copy is included in the LICENSE file that
489c9b5090e2 Initial load
duke
parents:
diff changeset
    13
 * accompanied this code).
489c9b5090e2 Initial load
duke
parents:
diff changeset
    14
 *
489c9b5090e2 Initial load
duke
parents:
diff changeset
    15
 * You should have received a copy of the GNU General Public License version
489c9b5090e2 Initial load
duke
parents:
diff changeset
    16
 * 2 along with this work; if not, write to the Free Software Foundation,
489c9b5090e2 Initial load
duke
parents:
diff changeset
    17
 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
489c9b5090e2 Initial load
duke
parents:
diff changeset
    18
 *
5547
f4b087cbb361 6941466: Oracle rebranding changes for Hotspot repositories
trims
parents: 5035
diff changeset
    19
 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
f4b087cbb361 6941466: Oracle rebranding changes for Hotspot repositories
trims
parents: 5035
diff changeset
    20
 * or visit www.oracle.com if you need additional information or have any
f4b087cbb361 6941466: Oracle rebranding changes for Hotspot repositories
trims
parents: 5035
diff changeset
    21
 * questions.
1
489c9b5090e2 Initial load
duke
parents:
diff changeset
    22
 *
489c9b5090e2 Initial load
duke
parents:
diff changeset
    23
 */
489c9b5090e2 Initial load
duke
parents:
diff changeset
    24
7397
5b173b4ca846 6989984: Use standard include model for Hospot
stefank
parents: 6988
diff changeset
    25
#ifndef SHARE_VM_RUNTIME_ARGUMENTS_HPP
5b173b4ca846 6989984: Use standard include model for Hospot
stefank
parents: 6988
diff changeset
    26
#define SHARE_VM_RUNTIME_ARGUMENTS_HPP
5b173b4ca846 6989984: Use standard include model for Hospot
stefank
parents: 6988
diff changeset
    27
35489
368deab8e88b 8146800: Reorganize logging alias code.
mockner
parents: 35466
diff changeset
    28
#include "logging/logLevel.hpp"
368deab8e88b 8146800: Reorganize logging alias code.
mockner
parents: 35466
diff changeset
    29
#include "logging/logTag.hpp"
7397
5b173b4ca846 6989984: Use standard include model for Hospot
stefank
parents: 6988
diff changeset
    30
#include "runtime/java.hpp"
25468
5331df506290 8048241: Introduce umbrella header os.inline.hpp and clean up includes
goetz
parents: 25074
diff changeset
    31
#include "runtime/os.hpp"
7397
5b173b4ca846 6989984: Use standard include model for Hospot
stefank
parents: 6988
diff changeset
    32
#include "runtime/perfData.hpp"
22555
ea32f6c51d08 8028391: Make the Min/MaxHeapFreeRatio flags manageable
jwilhelm
parents: 22551
diff changeset
    33
#include "utilities/debug.hpp"
7397
5b173b4ca846 6989984: Use standard include model for Hospot
stefank
parents: 6988
diff changeset
    34
#include "utilities/top.hpp"
5b173b4ca846 6989984: Use standard include model for Hospot
stefank
parents: 6988
diff changeset
    35
1
489c9b5090e2 Initial load
duke
parents:
diff changeset
    36
// Arguments parses the command line and recognizes options
489c9b5090e2 Initial load
duke
parents:
diff changeset
    37
489c9b5090e2 Initial load
duke
parents:
diff changeset
    38
// Invocation API hook typedefs (these should really be defined in jni.hpp)
489c9b5090e2 Initial load
duke
parents:
diff changeset
    39
extern "C" {
489c9b5090e2 Initial load
duke
parents:
diff changeset
    40
  typedef void (JNICALL *abort_hook_t)(void);
489c9b5090e2 Initial load
duke
parents:
diff changeset
    41
  typedef void (JNICALL *exit_hook_t)(jint code);
24424
2658d7834c6e 8037816: Fix for 8036122 breaks build with Xcode5/clang
drchase
parents: 22735
diff changeset
    42
  typedef jint (JNICALL *vfprintf_hook_t)(FILE *fp, const char *format, va_list args)  ATTRIBUTE_PRINTF(2, 0);
1
489c9b5090e2 Initial load
duke
parents:
diff changeset
    43
}
489c9b5090e2 Initial load
duke
parents:
diff changeset
    44
489c9b5090e2 Initial load
duke
parents:
diff changeset
    45
// Forward declarations
36508
5f9eee6b383b 8142968: Module System implementation
alanb
parents: 36313
diff changeset
    46
class ArgumentBootClassPath;
1
489c9b5090e2 Initial load
duke
parents:
diff changeset
    47
36508
5f9eee6b383b 8142968: Module System implementation
alanb
parents: 36313
diff changeset
    48
// PathString is used as the underlying value container for a
5f9eee6b383b 8142968: Module System implementation
alanb
parents: 36313
diff changeset
    49
// SystemProperty and for the string that represents the system
5f9eee6b383b 8142968: Module System implementation
alanb
parents: 36313
diff changeset
    50
// boot class path, Arguments::_system_boot_class_path.
5f9eee6b383b 8142968: Module System implementation
alanb
parents: 36313
diff changeset
    51
class PathString : public CHeapObj<mtInternal> {
5f9eee6b383b 8142968: Module System implementation
alanb
parents: 36313
diff changeset
    52
 protected:
1
489c9b5090e2 Initial load
duke
parents:
diff changeset
    53
  char*           _value;
489c9b5090e2 Initial load
duke
parents:
diff changeset
    54
 public:
489c9b5090e2 Initial load
duke
parents:
diff changeset
    55
  char* value() const                       { return _value; }
36508
5f9eee6b383b 8142968: Module System implementation
alanb
parents: 36313
diff changeset
    56
32595
8cde9aca5e9f 8132725: Memory leak in Arguments::add_property function
ddmitriev
parents: 32366
diff changeset
    57
  bool set_value(const char *value) {
36508
5f9eee6b383b 8142968: Module System implementation
alanb
parents: 36313
diff changeset
    58
    if (_value != NULL) {
5f9eee6b383b 8142968: Module System implementation
alanb
parents: 36313
diff changeset
    59
      FreeHeap(_value);
1
489c9b5090e2 Initial load
duke
parents:
diff changeset
    60
    }
36508
5f9eee6b383b 8142968: Module System implementation
alanb
parents: 36313
diff changeset
    61
    _value = AllocateHeap(strlen(value)+1, mtInternal);
5f9eee6b383b 8142968: Module System implementation
alanb
parents: 36313
diff changeset
    62
    assert(_value != NULL, "Unable to allocate space for new path value");
5f9eee6b383b 8142968: Module System implementation
alanb
parents: 36313
diff changeset
    63
    if (_value != NULL) {
5f9eee6b383b 8142968: Module System implementation
alanb
parents: 36313
diff changeset
    64
      strcpy(_value, value);
5f9eee6b383b 8142968: Module System implementation
alanb
parents: 36313
diff changeset
    65
    } else {
5f9eee6b383b 8142968: Module System implementation
alanb
parents: 36313
diff changeset
    66
      // not able to allocate
5f9eee6b383b 8142968: Module System implementation
alanb
parents: 36313
diff changeset
    67
      return false;
5f9eee6b383b 8142968: Module System implementation
alanb
parents: 36313
diff changeset
    68
    }
5f9eee6b383b 8142968: Module System implementation
alanb
parents: 36313
diff changeset
    69
    return true;
1
489c9b5090e2 Initial load
duke
parents:
diff changeset
    70
  }
489c9b5090e2 Initial load
duke
parents:
diff changeset
    71
489c9b5090e2 Initial load
duke
parents:
diff changeset
    72
  void append_value(const char *value) {
489c9b5090e2 Initial load
duke
parents:
diff changeset
    73
    char *sp;
489c9b5090e2 Initial load
duke
parents:
diff changeset
    74
    size_t len = 0;
489c9b5090e2 Initial load
duke
parents:
diff changeset
    75
    if (value != NULL) {
489c9b5090e2 Initial load
duke
parents:
diff changeset
    76
      len = strlen(value);
489c9b5090e2 Initial load
duke
parents:
diff changeset
    77
      if (_value != NULL) {
489c9b5090e2 Initial load
duke
parents:
diff changeset
    78
        len += strlen(_value);
489c9b5090e2 Initial load
duke
parents:
diff changeset
    79
      }
13195
be27e1b6a4b9 6995781: Native Memory Tracking (Phase 1)
zgu
parents: 8681
diff changeset
    80
      sp = AllocateHeap(len+2, mtInternal);
36508
5f9eee6b383b 8142968: Module System implementation
alanb
parents: 36313
diff changeset
    81
      assert(sp != NULL, "Unable to allocate space for new append path value");
1
489c9b5090e2 Initial load
duke
parents:
diff changeset
    82
      if (sp != NULL) {
489c9b5090e2 Initial load
duke
parents:
diff changeset
    83
        if (_value != NULL) {
489c9b5090e2 Initial load
duke
parents:
diff changeset
    84
          strcpy(sp, _value);
489c9b5090e2 Initial load
duke
parents:
diff changeset
    85
          strcat(sp, os::path_separator());
489c9b5090e2 Initial load
duke
parents:
diff changeset
    86
          strcat(sp, value);
489c9b5090e2 Initial load
duke
parents:
diff changeset
    87
          FreeHeap(_value);
489c9b5090e2 Initial load
duke
parents:
diff changeset
    88
        } else {
489c9b5090e2 Initial load
duke
parents:
diff changeset
    89
          strcpy(sp, value);
489c9b5090e2 Initial load
duke
parents:
diff changeset
    90
        }
489c9b5090e2 Initial load
duke
parents:
diff changeset
    91
        _value = sp;
489c9b5090e2 Initial load
duke
parents:
diff changeset
    92
      }
489c9b5090e2 Initial load
duke
parents:
diff changeset
    93
    }
489c9b5090e2 Initial load
duke
parents:
diff changeset
    94
  }
489c9b5090e2 Initial load
duke
parents:
diff changeset
    95
489c9b5090e2 Initial load
duke
parents:
diff changeset
    96
  // Constructor
36508
5f9eee6b383b 8142968: Module System implementation
alanb
parents: 36313
diff changeset
    97
  PathString(const char* value) {
5f9eee6b383b 8142968: Module System implementation
alanb
parents: 36313
diff changeset
    98
    if (value == NULL) {
5f9eee6b383b 8142968: Module System implementation
alanb
parents: 36313
diff changeset
    99
      _value = NULL;
5f9eee6b383b 8142968: Module System implementation
alanb
parents: 36313
diff changeset
   100
    } else {
5f9eee6b383b 8142968: Module System implementation
alanb
parents: 36313
diff changeset
   101
      _value = AllocateHeap(strlen(value)+1, mtInternal);
5f9eee6b383b 8142968: Module System implementation
alanb
parents: 36313
diff changeset
   102
      strcpy(_value, value);
5f9eee6b383b 8142968: Module System implementation
alanb
parents: 36313
diff changeset
   103
    }
5f9eee6b383b 8142968: Module System implementation
alanb
parents: 36313
diff changeset
   104
  }
5f9eee6b383b 8142968: Module System implementation
alanb
parents: 36313
diff changeset
   105
};
5f9eee6b383b 8142968: Module System implementation
alanb
parents: 36313
diff changeset
   106
5f9eee6b383b 8142968: Module System implementation
alanb
parents: 36313
diff changeset
   107
// Element describing System and User (-Dkey=value flags) defined property.
5f9eee6b383b 8142968: Module System implementation
alanb
parents: 36313
diff changeset
   108
//
5f9eee6b383b 8142968: Module System implementation
alanb
parents: 36313
diff changeset
   109
// An internal SystemProperty is one that has been removed in
5f9eee6b383b 8142968: Module System implementation
alanb
parents: 36313
diff changeset
   110
// jdk.internal.VM.saveAndRemoveProperties, like jdk.boot.class.path.append.
5f9eee6b383b 8142968: Module System implementation
alanb
parents: 36313
diff changeset
   111
//
5f9eee6b383b 8142968: Module System implementation
alanb
parents: 36313
diff changeset
   112
class SystemProperty : public PathString {
5f9eee6b383b 8142968: Module System implementation
alanb
parents: 36313
diff changeset
   113
 private:
5f9eee6b383b 8142968: Module System implementation
alanb
parents: 36313
diff changeset
   114
  char*           _key;
5f9eee6b383b 8142968: Module System implementation
alanb
parents: 36313
diff changeset
   115
  SystemProperty* _next;
5f9eee6b383b 8142968: Module System implementation
alanb
parents: 36313
diff changeset
   116
  bool            _internal;
5f9eee6b383b 8142968: Module System implementation
alanb
parents: 36313
diff changeset
   117
  bool            _writeable;
5f9eee6b383b 8142968: Module System implementation
alanb
parents: 36313
diff changeset
   118
  bool writeable()   { return _writeable; }
5f9eee6b383b 8142968: Module System implementation
alanb
parents: 36313
diff changeset
   119
5f9eee6b383b 8142968: Module System implementation
alanb
parents: 36313
diff changeset
   120
 public:
5f9eee6b383b 8142968: Module System implementation
alanb
parents: 36313
diff changeset
   121
  // Accessors
5f9eee6b383b 8142968: Module System implementation
alanb
parents: 36313
diff changeset
   122
  char* value() const                 { return PathString::value(); }
5f9eee6b383b 8142968: Module System implementation
alanb
parents: 36313
diff changeset
   123
  const char* key() const             { return _key; }
5f9eee6b383b 8142968: Module System implementation
alanb
parents: 36313
diff changeset
   124
  bool internal() const               { return _internal; }
5f9eee6b383b 8142968: Module System implementation
alanb
parents: 36313
diff changeset
   125
  SystemProperty* next() const        { return _next; }
5f9eee6b383b 8142968: Module System implementation
alanb
parents: 36313
diff changeset
   126
  void set_next(SystemProperty* next) { _next = next; }
5f9eee6b383b 8142968: Module System implementation
alanb
parents: 36313
diff changeset
   127
5f9eee6b383b 8142968: Module System implementation
alanb
parents: 36313
diff changeset
   128
  // A system property should only have its value set
5f9eee6b383b 8142968: Module System implementation
alanb
parents: 36313
diff changeset
   129
  // via an external interface if it is a writeable property.
5f9eee6b383b 8142968: Module System implementation
alanb
parents: 36313
diff changeset
   130
  // The internal, non-writeable property jdk.boot.class.path.append
5f9eee6b383b 8142968: Module System implementation
alanb
parents: 36313
diff changeset
   131
  // is the only exception to this rule.  It can be set externally
5f9eee6b383b 8142968: Module System implementation
alanb
parents: 36313
diff changeset
   132
  // via -Xbootclasspath/a or JVMTI OnLoad phase call to AddToBootstrapClassLoaderSearch.
5f9eee6b383b 8142968: Module System implementation
alanb
parents: 36313
diff changeset
   133
  // In those cases for jdk.boot.class.path.append, the base class
5f9eee6b383b 8142968: Module System implementation
alanb
parents: 36313
diff changeset
   134
  // set_value and append_value methods are called directly.
5f9eee6b383b 8142968: Module System implementation
alanb
parents: 36313
diff changeset
   135
  bool set_writeable_value(const char *value) {
5f9eee6b383b 8142968: Module System implementation
alanb
parents: 36313
diff changeset
   136
    if (writeable()) {
5f9eee6b383b 8142968: Module System implementation
alanb
parents: 36313
diff changeset
   137
      return set_value(value);
5f9eee6b383b 8142968: Module System implementation
alanb
parents: 36313
diff changeset
   138
    }
5f9eee6b383b 8142968: Module System implementation
alanb
parents: 36313
diff changeset
   139
    return false;
5f9eee6b383b 8142968: Module System implementation
alanb
parents: 36313
diff changeset
   140
  }
5f9eee6b383b 8142968: Module System implementation
alanb
parents: 36313
diff changeset
   141
5f9eee6b383b 8142968: Module System implementation
alanb
parents: 36313
diff changeset
   142
  // Constructor
5f9eee6b383b 8142968: Module System implementation
alanb
parents: 36313
diff changeset
   143
  SystemProperty(const char* key, const char* value, bool writeable, bool internal = false) : PathString(value) {
1
489c9b5090e2 Initial load
duke
parents:
diff changeset
   144
    if (key == NULL) {
489c9b5090e2 Initial load
duke
parents:
diff changeset
   145
      _key = NULL;
489c9b5090e2 Initial load
duke
parents:
diff changeset
   146
    } else {
13195
be27e1b6a4b9 6995781: Native Memory Tracking (Phase 1)
zgu
parents: 8681
diff changeset
   147
      _key = AllocateHeap(strlen(key)+1, mtInternal);
1
489c9b5090e2 Initial load
duke
parents:
diff changeset
   148
      strcpy(_key, key);
489c9b5090e2 Initial load
duke
parents:
diff changeset
   149
    }
489c9b5090e2 Initial load
duke
parents:
diff changeset
   150
    _next = NULL;
36508
5f9eee6b383b 8142968: Module System implementation
alanb
parents: 36313
diff changeset
   151
    _internal = internal;
1
489c9b5090e2 Initial load
duke
parents:
diff changeset
   152
    _writeable = writeable;
489c9b5090e2 Initial load
duke
parents:
diff changeset
   153
  }
489c9b5090e2 Initial load
duke
parents:
diff changeset
   154
};
489c9b5090e2 Initial load
duke
parents:
diff changeset
   155
489c9b5090e2 Initial load
duke
parents:
diff changeset
   156
489c9b5090e2 Initial load
duke
parents:
diff changeset
   157
// For use by -agentlib, -agentpath and -Xrun
13195
be27e1b6a4b9 6995781: Native Memory Tracking (Phase 1)
zgu
parents: 8681
diff changeset
   158
class AgentLibrary : public CHeapObj<mtInternal> {
1
489c9b5090e2 Initial load
duke
parents:
diff changeset
   159
  friend class AgentLibraryList;
19553
9bbd930be684 8014135: The JVMTI specification does not conform to recent changes in JNI specification
bpittore
parents: 19319
diff changeset
   160
public:
9bbd930be684 8014135: The JVMTI specification does not conform to recent changes in JNI specification
bpittore
parents: 19319
diff changeset
   161
  // Is this library valid or not. Don't rely on os_lib == NULL as statically
9bbd930be684 8014135: The JVMTI specification does not conform to recent changes in JNI specification
bpittore
parents: 19319
diff changeset
   162
  // linked lib could have handle of RTLD_DEFAULT which == 0 on some platforms
9bbd930be684 8014135: The JVMTI specification does not conform to recent changes in JNI specification
bpittore
parents: 19319
diff changeset
   163
  enum AgentState {
9bbd930be684 8014135: The JVMTI specification does not conform to recent changes in JNI specification
bpittore
parents: 19319
diff changeset
   164
    agent_invalid = 0,
9bbd930be684 8014135: The JVMTI specification does not conform to recent changes in JNI specification
bpittore
parents: 19319
diff changeset
   165
    agent_valid   = 1
9bbd930be684 8014135: The JVMTI specification does not conform to recent changes in JNI specification
bpittore
parents: 19319
diff changeset
   166
  };
9bbd930be684 8014135: The JVMTI specification does not conform to recent changes in JNI specification
bpittore
parents: 19319
diff changeset
   167
1
489c9b5090e2 Initial load
duke
parents:
diff changeset
   168
 private:
489c9b5090e2 Initial load
duke
parents:
diff changeset
   169
  char*           _name;
489c9b5090e2 Initial load
duke
parents:
diff changeset
   170
  char*           _options;
489c9b5090e2 Initial load
duke
parents:
diff changeset
   171
  void*           _os_lib;
489c9b5090e2 Initial load
duke
parents:
diff changeset
   172
  bool            _is_absolute_path;
19553
9bbd930be684 8014135: The JVMTI specification does not conform to recent changes in JNI specification
bpittore
parents: 19319
diff changeset
   173
  bool            _is_static_lib;
9bbd930be684 8014135: The JVMTI specification does not conform to recent changes in JNI specification
bpittore
parents: 19319
diff changeset
   174
  AgentState      _state;
1
489c9b5090e2 Initial load
duke
parents:
diff changeset
   175
  AgentLibrary*   _next;
489c9b5090e2 Initial load
duke
parents:
diff changeset
   176
489c9b5090e2 Initial load
duke
parents:
diff changeset
   177
 public:
489c9b5090e2 Initial load
duke
parents:
diff changeset
   178
  // Accessors
489c9b5090e2 Initial load
duke
parents:
diff changeset
   179
  const char* name() const                  { return _name; }
489c9b5090e2 Initial load
duke
parents:
diff changeset
   180
  char* options() const                     { return _options; }
489c9b5090e2 Initial load
duke
parents:
diff changeset
   181
  bool is_absolute_path() const             { return _is_absolute_path; }
489c9b5090e2 Initial load
duke
parents:
diff changeset
   182
  void* os_lib() const                      { return _os_lib; }
489c9b5090e2 Initial load
duke
parents:
diff changeset
   183
  void set_os_lib(void* os_lib)             { _os_lib = os_lib; }
489c9b5090e2 Initial load
duke
parents:
diff changeset
   184
  AgentLibrary* next() const                { return _next; }
19553
9bbd930be684 8014135: The JVMTI specification does not conform to recent changes in JNI specification
bpittore
parents: 19319
diff changeset
   185
  bool is_static_lib() const                { return _is_static_lib; }
19973
d98623e1f50b 8024007: Misc. cleanup of static agent code
bpittore
parents: 19732
diff changeset
   186
  void set_static_lib(bool is_static_lib)   { _is_static_lib = is_static_lib; }
19553
9bbd930be684 8014135: The JVMTI specification does not conform to recent changes in JNI specification
bpittore
parents: 19319
diff changeset
   187
  bool valid()                              { return (_state == agent_valid); }
9bbd930be684 8014135: The JVMTI specification does not conform to recent changes in JNI specification
bpittore
parents: 19319
diff changeset
   188
  void set_valid()                          { _state = agent_valid; }
9bbd930be684 8014135: The JVMTI specification does not conform to recent changes in JNI specification
bpittore
parents: 19319
diff changeset
   189
  void set_invalid()                        { _state = agent_invalid; }
1
489c9b5090e2 Initial load
duke
parents:
diff changeset
   190
489c9b5090e2 Initial load
duke
parents:
diff changeset
   191
  // Constructor
489c9b5090e2 Initial load
duke
parents:
diff changeset
   192
  AgentLibrary(const char* name, const char* options, bool is_absolute_path, void* os_lib) {
13195
be27e1b6a4b9 6995781: Native Memory Tracking (Phase 1)
zgu
parents: 8681
diff changeset
   193
    _name = AllocateHeap(strlen(name)+1, mtInternal);
1
489c9b5090e2 Initial load
duke
parents:
diff changeset
   194
    strcpy(_name, name);
489c9b5090e2 Initial load
duke
parents:
diff changeset
   195
    if (options == NULL) {
489c9b5090e2 Initial load
duke
parents:
diff changeset
   196
      _options = NULL;
489c9b5090e2 Initial load
duke
parents:
diff changeset
   197
    } else {
13195
be27e1b6a4b9 6995781: Native Memory Tracking (Phase 1)
zgu
parents: 8681
diff changeset
   198
      _options = AllocateHeap(strlen(options)+1, mtInternal);
1
489c9b5090e2 Initial load
duke
parents:
diff changeset
   199
      strcpy(_options, options);
489c9b5090e2 Initial load
duke
parents:
diff changeset
   200
    }
489c9b5090e2 Initial load
duke
parents:
diff changeset
   201
    _is_absolute_path = is_absolute_path;
489c9b5090e2 Initial load
duke
parents:
diff changeset
   202
    _os_lib = os_lib;
489c9b5090e2 Initial load
duke
parents:
diff changeset
   203
    _next = NULL;
19553
9bbd930be684 8014135: The JVMTI specification does not conform to recent changes in JNI specification
bpittore
parents: 19319
diff changeset
   204
    _state = agent_invalid;
9bbd930be684 8014135: The JVMTI specification does not conform to recent changes in JNI specification
bpittore
parents: 19319
diff changeset
   205
    _is_static_lib = false;
1
489c9b5090e2 Initial load
duke
parents:
diff changeset
   206
  }
489c9b5090e2 Initial load
duke
parents:
diff changeset
   207
};
489c9b5090e2 Initial load
duke
parents:
diff changeset
   208
489c9b5090e2 Initial load
duke
parents:
diff changeset
   209
// maintain an order of entry list of AgentLibrary
489c9b5090e2 Initial load
duke
parents:
diff changeset
   210
class AgentLibraryList VALUE_OBJ_CLASS_SPEC {
489c9b5090e2 Initial load
duke
parents:
diff changeset
   211
 private:
489c9b5090e2 Initial load
duke
parents:
diff changeset
   212
  AgentLibrary*   _first;
489c9b5090e2 Initial load
duke
parents:
diff changeset
   213
  AgentLibrary*   _last;
489c9b5090e2 Initial load
duke
parents:
diff changeset
   214
 public:
489c9b5090e2 Initial load
duke
parents:
diff changeset
   215
  bool is_empty() const                     { return _first == NULL; }
489c9b5090e2 Initial load
duke
parents:
diff changeset
   216
  AgentLibrary* first() const               { return _first; }
489c9b5090e2 Initial load
duke
parents:
diff changeset
   217
489c9b5090e2 Initial load
duke
parents:
diff changeset
   218
  // add to the end of the list
489c9b5090e2 Initial load
duke
parents:
diff changeset
   219
  void add(AgentLibrary* lib) {
489c9b5090e2 Initial load
duke
parents:
diff changeset
   220
    if (is_empty()) {
489c9b5090e2 Initial load
duke
parents:
diff changeset
   221
      _first = _last = lib;
489c9b5090e2 Initial load
duke
parents:
diff changeset
   222
    } else {
489c9b5090e2 Initial load
duke
parents:
diff changeset
   223
      _last->_next = lib;
489c9b5090e2 Initial load
duke
parents:
diff changeset
   224
      _last = lib;
489c9b5090e2 Initial load
duke
parents:
diff changeset
   225
    }
489c9b5090e2 Initial load
duke
parents:
diff changeset
   226
    lib->_next = NULL;
489c9b5090e2 Initial load
duke
parents:
diff changeset
   227
  }
489c9b5090e2 Initial load
duke
parents:
diff changeset
   228
489c9b5090e2 Initial load
duke
parents:
diff changeset
   229
  // search for and remove a library known to be in the list
489c9b5090e2 Initial load
duke
parents:
diff changeset
   230
  void remove(AgentLibrary* lib) {
489c9b5090e2 Initial load
duke
parents:
diff changeset
   231
    AgentLibrary* curr;
489c9b5090e2 Initial load
duke
parents:
diff changeset
   232
    AgentLibrary* prev = NULL;
489c9b5090e2 Initial load
duke
parents:
diff changeset
   233
    for (curr = first(); curr != NULL; prev = curr, curr = curr->next()) {
489c9b5090e2 Initial load
duke
parents:
diff changeset
   234
      if (curr == lib) {
489c9b5090e2 Initial load
duke
parents:
diff changeset
   235
        break;
489c9b5090e2 Initial load
duke
parents:
diff changeset
   236
      }
489c9b5090e2 Initial load
duke
parents:
diff changeset
   237
    }
489c9b5090e2 Initial load
duke
parents:
diff changeset
   238
    assert(curr != NULL, "always should be found");
489c9b5090e2 Initial load
duke
parents:
diff changeset
   239
489c9b5090e2 Initial load
duke
parents:
diff changeset
   240
    if (curr != NULL) {
489c9b5090e2 Initial load
duke
parents:
diff changeset
   241
      // it was found, by-pass this library
489c9b5090e2 Initial load
duke
parents:
diff changeset
   242
      if (prev == NULL) {
489c9b5090e2 Initial load
duke
parents:
diff changeset
   243
        _first = curr->_next;
489c9b5090e2 Initial load
duke
parents:
diff changeset
   244
      } else {
489c9b5090e2 Initial load
duke
parents:
diff changeset
   245
        prev->_next = curr->_next;
489c9b5090e2 Initial load
duke
parents:
diff changeset
   246
      }
489c9b5090e2 Initial load
duke
parents:
diff changeset
   247
      if (curr == _last) {
489c9b5090e2 Initial load
duke
parents:
diff changeset
   248
        _last = prev;
489c9b5090e2 Initial load
duke
parents:
diff changeset
   249
      }
489c9b5090e2 Initial load
duke
parents:
diff changeset
   250
      curr->_next = NULL;
489c9b5090e2 Initial load
duke
parents:
diff changeset
   251
    }
489c9b5090e2 Initial load
duke
parents:
diff changeset
   252
  }
489c9b5090e2 Initial load
duke
parents:
diff changeset
   253
489c9b5090e2 Initial load
duke
parents:
diff changeset
   254
  AgentLibraryList() {
489c9b5090e2 Initial load
duke
parents:
diff changeset
   255
    _first = NULL;
489c9b5090e2 Initial load
duke
parents:
diff changeset
   256
    _last = NULL;
489c9b5090e2 Initial load
duke
parents:
diff changeset
   257
  }
489c9b5090e2 Initial load
duke
parents:
diff changeset
   258
};
489c9b5090e2 Initial load
duke
parents:
diff changeset
   259
31853
c70929a2573c 8079301: Some command line options not settable via JAVA_TOOL_OPTIONS
jmanson
parents: 31620
diff changeset
   260
// Helper class for controlling the lifetime of JavaVMInitArgs objects.
c70929a2573c 8079301: Some command line options not settable via JAVA_TOOL_OPTIONS
jmanson
parents: 31620
diff changeset
   261
class ScopedVMInitArgs;
1
489c9b5090e2 Initial load
duke
parents:
diff changeset
   262
35489
368deab8e88b 8146800: Reorganize logging alias code.
mockner
parents: 35466
diff changeset
   263
// Most logging functions require 5 tags. Some of them may be _NO_TAG.
368deab8e88b 8146800: Reorganize logging alias code.
mockner
parents: 35466
diff changeset
   264
typedef struct {
368deab8e88b 8146800: Reorganize logging alias code.
mockner
parents: 35466
diff changeset
   265
  const char* alias_name;
368deab8e88b 8146800: Reorganize logging alias code.
mockner
parents: 35466
diff changeset
   266
  LogLevelType level;
368deab8e88b 8146800: Reorganize logging alias code.
mockner
parents: 35466
diff changeset
   267
  bool exactMatch;
37094
c12f414936a1 8149995: TraceClassLoadingPreorder has been converted to Unified Logging.
mockner
parents: 36313
diff changeset
   268
  LogTagType tag0;
c12f414936a1 8149995: TraceClassLoadingPreorder has been converted to Unified Logging.
mockner
parents: 36313
diff changeset
   269
  LogTagType tag1;
c12f414936a1 8149995: TraceClassLoadingPreorder has been converted to Unified Logging.
mockner
parents: 36313
diff changeset
   270
  LogTagType tag2;
c12f414936a1 8149995: TraceClassLoadingPreorder has been converted to Unified Logging.
mockner
parents: 36313
diff changeset
   271
  LogTagType tag3;
c12f414936a1 8149995: TraceClassLoadingPreorder has been converted to Unified Logging.
mockner
parents: 36313
diff changeset
   272
  LogTagType tag4;
c12f414936a1 8149995: TraceClassLoadingPreorder has been converted to Unified Logging.
mockner
parents: 36313
diff changeset
   273
  LogTagType tag5;
35489
368deab8e88b 8146800: Reorganize logging alias code.
mockner
parents: 35466
diff changeset
   274
} AliasedLoggingFlag;
368deab8e88b 8146800: Reorganize logging alias code.
mockner
parents: 35466
diff changeset
   275
1
489c9b5090e2 Initial load
duke
parents:
diff changeset
   276
class Arguments : AllStatic {
489c9b5090e2 Initial load
duke
parents:
diff changeset
   277
  friend class VMStructs;
489c9b5090e2 Initial load
duke
parents:
diff changeset
   278
  friend class JvmtiExport;
31620
53be635ad49c 8087333: Optionally Pre-Generate the HotSpot Template Interpreter
bdelsart
parents: 31608
diff changeset
   279
  friend class CodeCacheExtensions;
1
489c9b5090e2 Initial load
duke
parents:
diff changeset
   280
 public:
489c9b5090e2 Initial load
duke
parents:
diff changeset
   281
  // Operation modi
489c9b5090e2 Initial load
duke
parents:
diff changeset
   282
  enum Mode {
489c9b5090e2 Initial load
duke
parents:
diff changeset
   283
    _int,       // corresponds to -Xint
489c9b5090e2 Initial load
duke
parents:
diff changeset
   284
    _mixed,     // corresponds to -Xmixed
489c9b5090e2 Initial load
duke
parents:
diff changeset
   285
    _comp       // corresponds to -Xcomp
489c9b5090e2 Initial load
duke
parents:
diff changeset
   286
  };
489c9b5090e2 Initial load
duke
parents:
diff changeset
   287
489c9b5090e2 Initial load
duke
parents:
diff changeset
   288
  enum ArgsRange {
489c9b5090e2 Initial load
duke
parents:
diff changeset
   289
    arg_unreadable = -3,
489c9b5090e2 Initial load
duke
parents:
diff changeset
   290
    arg_too_small  = -2,
489c9b5090e2 Initial load
duke
parents:
diff changeset
   291
    arg_too_big    = -1,
489c9b5090e2 Initial load
duke
parents:
diff changeset
   292
    arg_in_range   = 0
489c9b5090e2 Initial load
duke
parents:
diff changeset
   293
  };
489c9b5090e2 Initial load
duke
parents:
diff changeset
   294
489c9b5090e2 Initial load
duke
parents:
diff changeset
   295
 private:
489c9b5090e2 Initial load
duke
parents:
diff changeset
   296
34125
56c4a2d19ee1 8141068: refactor -XXFlags= code in preparation for removal
rdurbin
parents: 32823
diff changeset
   297
  // a pointer to the flags file name if it is specified
56c4a2d19ee1 8141068: refactor -XXFlags= code in preparation for removal
rdurbin
parents: 32823
diff changeset
   298
  static char*  _jvm_flags_file;
1
489c9b5090e2 Initial load
duke
parents:
diff changeset
   299
  // an array containing all flags specified in the .hotspotrc file
489c9b5090e2 Initial load
duke
parents:
diff changeset
   300
  static char** _jvm_flags_array;
489c9b5090e2 Initial load
duke
parents:
diff changeset
   301
  static int    _num_jvm_flags;
489c9b5090e2 Initial load
duke
parents:
diff changeset
   302
  // an array containing all jvm arguments specified in the command line
489c9b5090e2 Initial load
duke
parents:
diff changeset
   303
  static char** _jvm_args_array;
489c9b5090e2 Initial load
duke
parents:
diff changeset
   304
  static int    _num_jvm_args;
489c9b5090e2 Initial load
duke
parents:
diff changeset
   305
  // string containing all java command (class/jarfile name and app args)
489c9b5090e2 Initial load
duke
parents:
diff changeset
   306
  static char* _java_command;
489c9b5090e2 Initial load
duke
parents:
diff changeset
   307
489c9b5090e2 Initial load
duke
parents:
diff changeset
   308
  // Property list
489c9b5090e2 Initial load
duke
parents:
diff changeset
   309
  static SystemProperty* _system_properties;
489c9b5090e2 Initial load
duke
parents:
diff changeset
   310
489c9b5090e2 Initial load
duke
parents:
diff changeset
   311
  // Quick accessor to System properties in the list:
489c9b5090e2 Initial load
duke
parents:
diff changeset
   312
  static SystemProperty *_sun_boot_library_path;
489c9b5090e2 Initial load
duke
parents:
diff changeset
   313
  static SystemProperty *_java_library_path;
489c9b5090e2 Initial load
duke
parents:
diff changeset
   314
  static SystemProperty *_java_home;
489c9b5090e2 Initial load
duke
parents:
diff changeset
   315
  static SystemProperty *_java_class_path;
36508
5f9eee6b383b 8142968: Module System implementation
alanb
parents: 36313
diff changeset
   316
  static SystemProperty *_jdk_boot_class_path_append;
5f9eee6b383b 8142968: Module System implementation
alanb
parents: 36313
diff changeset
   317
5f9eee6b383b 8142968: Module System implementation
alanb
parents: 36313
diff changeset
   318
  // The constructed value of the system class path after
5f9eee6b383b 8142968: Module System implementation
alanb
parents: 36313
diff changeset
   319
  // argument processing and JVMTI OnLoad additions via
5f9eee6b383b 8142968: Module System implementation
alanb
parents: 36313
diff changeset
   320
  // calls to AddToBootstrapClassLoaderSearch.  This is the
5f9eee6b383b 8142968: Module System implementation
alanb
parents: 36313
diff changeset
   321
  // final form before ClassLoader::setup_bootstrap_search().
5f9eee6b383b 8142968: Module System implementation
alanb
parents: 36313
diff changeset
   322
  static PathString *_system_boot_class_path;
1
489c9b5090e2 Initial load
duke
parents:
diff changeset
   323
27562
47f369e3c69c 8049367: Modular Run-Time Images
chegar
parents: 27148
diff changeset
   324
  // temporary: to emit warning if the default ext dirs are not empty.
47f369e3c69c 8049367: Modular Run-Time Images
chegar
parents: 27148
diff changeset
   325
  // remove this variable when the warning is no longer needed.
47f369e3c69c 8049367: Modular Run-Time Images
chegar
parents: 27148
diff changeset
   326
  static char* _ext_dirs;
47f369e3c69c 8049367: Modular Run-Time Images
chegar
parents: 27148
diff changeset
   327
1
489c9b5090e2 Initial load
duke
parents:
diff changeset
   328
  // java.vendor.url.bug, bug reporting URL for fatal errors.
489c9b5090e2 Initial load
duke
parents:
diff changeset
   329
  static const char* _java_vendor_url_bug;
489c9b5090e2 Initial load
duke
parents:
diff changeset
   330
489c9b5090e2 Initial load
duke
parents:
diff changeset
   331
  // sun.java.launcher, private property to provide information about
22734
41757c1f3946 8027113: decouple the '-XXaltjvm=<path>' option from the gamma launcher
rdurbin
parents: 20288
diff changeset
   332
  // java launcher
1
489c9b5090e2 Initial load
duke
parents:
diff changeset
   333
  static const char* _sun_java_launcher;
489c9b5090e2 Initial load
duke
parents:
diff changeset
   334
489c9b5090e2 Initial load
duke
parents:
diff changeset
   335
  // sun.java.launcher.pid, private property
489c9b5090e2 Initial load
duke
parents:
diff changeset
   336
  static int    _sun_java_launcher_pid;
489c9b5090e2 Initial load
duke
parents:
diff changeset
   337
22734
41757c1f3946 8027113: decouple the '-XXaltjvm=<path>' option from the gamma launcher
rdurbin
parents: 20288
diff changeset
   338
  // was this VM created via the -XXaltjvm=<path> option
41757c1f3946 8027113: decouple the '-XXaltjvm=<path>' option from the gamma launcher
rdurbin
parents: 20288
diff changeset
   339
  static bool   _sun_java_launcher_is_altjvm;
8476
7e34c2d4cf9b 7022037: Pause when exiting if debugger is attached on windows
sla
parents: 7397
diff changeset
   340
1
489c9b5090e2 Initial load
duke
parents:
diff changeset
   341
  // Option flags
489c9b5090e2 Initial load
duke
parents:
diff changeset
   342
  static bool   _has_profile;
35872
7fb1e4de83ff 8145180: Add back PrintGC, PrintGCDetails and -Xloggc
brutisso
parents: 35489
diff changeset
   343
  static const char*  _gc_log_filename;
19986
33d188c66ed9 8010722: assert: failed: heap size is too big for compressed oops
tschatzl
parents: 19732
diff changeset
   344
  // Value of the conservative maximum heap alignment needed
33d188c66ed9 8010722: assert: failed: heap size is too big for compressed oops
tschatzl
parents: 19732
diff changeset
   345
  static size_t  _conservative_max_heap_alignment;
33d188c66ed9 8010722: assert: failed: heap size is too big for compressed oops
tschatzl
parents: 19732
diff changeset
   346
36508
5f9eee6b383b 8142968: Module System implementation
alanb
parents: 36313
diff changeset
   347
  static uintx  _min_heap_size;
26824
a04a1291103f 8055006: Store original value of Min/MaxHeapFreeRatio
jwilhelm
parents: 26585
diff changeset
   348
1
489c9b5090e2 Initial load
duke
parents:
diff changeset
   349
  // -Xrun arguments
489c9b5090e2 Initial load
duke
parents:
diff changeset
   350
  static AgentLibraryList _libraryList;
489c9b5090e2 Initial load
duke
parents:
diff changeset
   351
  static void add_init_library(const char* name, char* options)
489c9b5090e2 Initial load
duke
parents:
diff changeset
   352
    { _libraryList.add(new AgentLibrary(name, options, false, NULL)); }
489c9b5090e2 Initial load
duke
parents:
diff changeset
   353
489c9b5090e2 Initial load
duke
parents:
diff changeset
   354
  // -agentlib and -agentpath arguments
489c9b5090e2 Initial load
duke
parents:
diff changeset
   355
  static AgentLibraryList _agentList;
489c9b5090e2 Initial load
duke
parents:
diff changeset
   356
  static void add_init_agent(const char* name, char* options, bool absolute_path)
489c9b5090e2 Initial load
duke
parents:
diff changeset
   357
    { _agentList.add(new AgentLibrary(name, options, absolute_path, NULL)); }
489c9b5090e2 Initial load
duke
parents:
diff changeset
   358
489c9b5090e2 Initial load
duke
parents:
diff changeset
   359
  // Late-binding agents not started via arguments
19553
9bbd930be684 8014135: The JVMTI specification does not conform to recent changes in JNI specification
bpittore
parents: 19319
diff changeset
   360
  static void add_loaded_agent(AgentLibrary *agentLib)
9bbd930be684 8014135: The JVMTI specification does not conform to recent changes in JNI specification
bpittore
parents: 19319
diff changeset
   361
    { _agentList.add(agentLib); }
1
489c9b5090e2 Initial load
duke
parents:
diff changeset
   362
  static void add_loaded_agent(const char* name, char* options, bool absolute_path, void* os_lib)
489c9b5090e2 Initial load
duke
parents:
diff changeset
   363
    { _agentList.add(new AgentLibrary(name, options, absolute_path, os_lib)); }
489c9b5090e2 Initial load
duke
parents:
diff changeset
   364
489c9b5090e2 Initial load
duke
parents:
diff changeset
   365
  // Operation modi
489c9b5090e2 Initial load
duke
parents:
diff changeset
   366
  static Mode _mode;
489c9b5090e2 Initial load
duke
parents:
diff changeset
   367
  static void set_mode_flags(Mode mode);
489c9b5090e2 Initial load
duke
parents:
diff changeset
   368
  static bool _java_compiler;
489c9b5090e2 Initial load
duke
parents:
diff changeset
   369
  static void set_java_compiler(bool arg) { _java_compiler = arg; }
489c9b5090e2 Initial load
duke
parents:
diff changeset
   370
  static bool java_compiler()   { return _java_compiler; }
489c9b5090e2 Initial load
duke
parents:
diff changeset
   371
36508
5f9eee6b383b 8142968: Module System implementation
alanb
parents: 36313
diff changeset
   372
  // Capture the index location of -Xbootclasspath\a within sysclasspath.
5f9eee6b383b 8142968: Module System implementation
alanb
parents: 36313
diff changeset
   373
  // Used when setting up the bootstrap search path in order to
5f9eee6b383b 8142968: Module System implementation
alanb
parents: 36313
diff changeset
   374
  // mark the boot loader's append path observability boundary.
5f9eee6b383b 8142968: Module System implementation
alanb
parents: 36313
diff changeset
   375
  static int _bootclassloader_append_index;
5f9eee6b383b 8142968: Module System implementation
alanb
parents: 36313
diff changeset
   376
5f9eee6b383b 8142968: Module System implementation
alanb
parents: 36313
diff changeset
   377
  // -Xpatch flag
5f9eee6b383b 8142968: Module System implementation
alanb
parents: 36313
diff changeset
   378
  static char** _patch_dirs;
5f9eee6b383b 8142968: Module System implementation
alanb
parents: 36313
diff changeset
   379
  static int _patch_dirs_count;
5f9eee6b383b 8142968: Module System implementation
alanb
parents: 36313
diff changeset
   380
  static void set_patch_dirs(char** dirs) { _patch_dirs = dirs; }
5f9eee6b383b 8142968: Module System implementation
alanb
parents: 36313
diff changeset
   381
  static void set_patch_dirs_count(int count) { _patch_dirs_count = count; }
5f9eee6b383b 8142968: Module System implementation
alanb
parents: 36313
diff changeset
   382
1
489c9b5090e2 Initial load
duke
parents:
diff changeset
   383
  // -Xdebug flag
489c9b5090e2 Initial load
duke
parents:
diff changeset
   384
  static bool _xdebug_mode;
489c9b5090e2 Initial load
duke
parents:
diff changeset
   385
  static void set_xdebug_mode(bool arg) { _xdebug_mode = arg; }
489c9b5090e2 Initial load
duke
parents:
diff changeset
   386
  static bool xdebug_mode()             { return _xdebug_mode; }
489c9b5090e2 Initial load
duke
parents:
diff changeset
   387
489c9b5090e2 Initial load
duke
parents:
diff changeset
   388
  // Used to save default settings
489c9b5090e2 Initial load
duke
parents:
diff changeset
   389
  static bool _AlwaysCompileLoopMethods;
489c9b5090e2 Initial load
duke
parents:
diff changeset
   390
  static bool _UseOnStackReplacement;
489c9b5090e2 Initial load
duke
parents:
diff changeset
   391
  static bool _BackgroundCompilation;
489c9b5090e2 Initial load
duke
parents:
diff changeset
   392
  static bool _ClipInlining;
489c9b5090e2 Initial load
duke
parents:
diff changeset
   393
  static bool _CIDynamicCompilePriority;
30201
cfe623bb3f9c 8075663: compiler/rangechecks/TestExplicitRangeChecks.java fails in compiler nightlies
roland
parents: 29697
diff changeset
   394
  static intx _Tier3InvokeNotifyFreqLog;
cfe623bb3f9c 8075663: compiler/rangechecks/TestExplicitRangeChecks.java fails in compiler nightlies
roland
parents: 29697
diff changeset
   395
  static intx _Tier4InvocationThreshold;
1
489c9b5090e2 Initial load
duke
parents:
diff changeset
   396
6453
970dc585ab63 6953144: Tiered compilation
iveresov
parents: 6414
diff changeset
   397
  // Tiered
970dc585ab63 6953144: Tiered compilation
iveresov
parents: 6414
diff changeset
   398
  static void set_tiered_flags();
1
489c9b5090e2 Initial load
duke
parents:
diff changeset
   399
  // CMS/ParNew garbage collectors
489c9b5090e2 Initial load
duke
parents:
diff changeset
   400
  static void set_parnew_gc_flags();
489c9b5090e2 Initial load
duke
parents:
diff changeset
   401
  static void set_cms_and_parnew_gc_flags();
1374
4c24294029a9 6711316: Open source the Garbage-First garbage collector
ysr
parents: 183
diff changeset
   402
  // UseParallel[Old]GC
1
489c9b5090e2 Initial load
duke
parents:
diff changeset
   403
  static void set_parallel_gc_flags();
1374
4c24294029a9 6711316: Open source the Garbage-First garbage collector
ysr
parents: 183
diff changeset
   404
  // Garbage-First (UseG1GC)
4c24294029a9 6711316: Open source the Garbage-First garbage collector
ysr
parents: 183
diff changeset
   405
  static void set_g1_gc_flags();
1
489c9b5090e2 Initial load
duke
parents:
diff changeset
   406
  // GC ergonomics
19986
33d188c66ed9 8010722: assert: failed: heap size is too big for compressed oops
tschatzl
parents: 19732
diff changeset
   407
  static void set_conservative_max_heap_alignment();
15957
58302a2ffb9a 8001049: VM crashes when running with large -Xms and not specifying ObjectAlignmentInBytes
brutisso
parents: 15950
diff changeset
   408
  static void set_use_compressed_oops();
19319
0ad35be0733a 8003424: Enable Class Data Sharing for CompressedOops
hseigel
parents: 18687
diff changeset
   409
  static void set_use_compressed_klass_ptrs();
26836
b27ec66071c7 8057531: refactor gc argument processing code slightly
jcoomes
parents: 26824
diff changeset
   410
  static void select_gc();
1
489c9b5090e2 Initial load
duke
parents:
diff changeset
   411
  static void set_ergonomics_flags();
8681
c691d94813f9 7018056: large pages not always enabled by default
jcoomes
parents: 8476
diff changeset
   412
  static void set_shared_spaces_flags();
16605
ba13efd453bc 7112912: Message "Error occurred during initialization of VM" on boxes with lots of RAM
tschatzl
parents: 15957
diff changeset
   413
  // limits the given memory size by the maximum amount of memory this process is
ba13efd453bc 7112912: Message "Error occurred during initialization of VM" on boxes with lots of RAM
tschatzl
parents: 15957
diff changeset
   414
  // currently allowed to allocate or reserve.
ba13efd453bc 7112912: Message "Error occurred during initialization of VM" on boxes with lots of RAM
tschatzl
parents: 15957
diff changeset
   415
  static julong limit_by_allocatable_memory(julong size);
4434
4b41e5b42f81 6887571: Increase default heap config sizes
phh
parents: 2358
diff changeset
   416
  // Setup heap size
4b41e5b42f81 6887571: Increase default heap config sizes
phh
parents: 2358
diff changeset
   417
  static void set_heap_size();
1
489c9b5090e2 Initial load
duke
parents:
diff changeset
   418
  // Based on automatic selection criteria, should the
489c9b5090e2 Initial load
duke
parents:
diff changeset
   419
  // low pause collector be used.
489c9b5090e2 Initial load
duke
parents:
diff changeset
   420
  static bool should_auto_select_low_pause_collector();
489c9b5090e2 Initial load
duke
parents:
diff changeset
   421
489c9b5090e2 Initial load
duke
parents:
diff changeset
   422
  // Bytecode rewriting
489c9b5090e2 Initial load
duke
parents:
diff changeset
   423
  static void set_bytecode_flags();
489c9b5090e2 Initial load
duke
parents:
diff changeset
   424
489c9b5090e2 Initial load
duke
parents:
diff changeset
   425
  // Invocation API hooks
489c9b5090e2 Initial load
duke
parents:
diff changeset
   426
  static abort_hook_t     _abort_hook;
489c9b5090e2 Initial load
duke
parents:
diff changeset
   427
  static exit_hook_t      _exit_hook;
489c9b5090e2 Initial load
duke
parents:
diff changeset
   428
  static vfprintf_hook_t  _vfprintf_hook;
489c9b5090e2 Initial load
duke
parents:
diff changeset
   429
489c9b5090e2 Initial load
duke
parents:
diff changeset
   430
  // System properties
489c9b5090e2 Initial load
duke
parents:
diff changeset
   431
  static bool add_property(const char* prop);
489c9b5090e2 Initial load
duke
parents:
diff changeset
   432
36508
5f9eee6b383b 8142968: Module System implementation
alanb
parents: 36313
diff changeset
   433
  // Miscellaneous system property setter
5f9eee6b383b 8142968: Module System implementation
alanb
parents: 36313
diff changeset
   434
  static bool append_to_addmods_property(const char* module_name);
5f9eee6b383b 8142968: Module System implementation
alanb
parents: 36313
diff changeset
   435
1
489c9b5090e2 Initial load
duke
parents:
diff changeset
   436
  // Aggressive optimization flags.
32595
8cde9aca5e9f 8132725: Memory leak in Arguments::add_property function
ddmitriev
parents: 32366
diff changeset
   437
  static jint set_aggressive_opts_flags();
1
489c9b5090e2 Initial load
duke
parents:
diff changeset
   438
32823
ca8fef4cd57b 8066821: Enhance command line processing to manage deprecating and obsoleting -XX command line arguments
drwhite
parents: 32621
diff changeset
   439
  static jint set_aggressive_heap_flags();
ca8fef4cd57b 8066821: Enhance command line processing to manage deprecating and obsoleting -XX command line arguments
drwhite
parents: 32621
diff changeset
   440
1
489c9b5090e2 Initial load
duke
parents:
diff changeset
   441
  // Argument parsing
489c9b5090e2 Initial load
duke
parents:
diff changeset
   442
  static void do_pd_flag_adjustments();
20288
e2d549f40de9 8024545: make develop and notproduct flag values available in product builds
twisti
parents: 20006
diff changeset
   443
  static bool parse_argument(const char* arg, Flag::Flags origin);
e2d549f40de9 8024545: make develop and notproduct flag values available in product builds
twisti
parents: 20006
diff changeset
   444
  static bool process_argument(const char* arg, jboolean ignore_unrecognized, Flag::Flags origin);
1
489c9b5090e2 Initial load
duke
parents:
diff changeset
   445
  static void process_java_launcher_argument(const char*, void*);
32595
8cde9aca5e9f 8132725: Memory leak in Arguments::add_property function
ddmitriev
parents: 32366
diff changeset
   446
  static void process_java_compiler_argument(const char* arg);
31853
c70929a2573c 8079301: Some command line options not settable via JAVA_TOOL_OPTIONS
jmanson
parents: 31620
diff changeset
   447
  static jint parse_options_environment_variable(const char* name, ScopedVMInitArgs* vm_args);
c70929a2573c 8079301: Some command line options not settable via JAVA_TOOL_OPTIONS
jmanson
parents: 31620
diff changeset
   448
  static jint parse_java_tool_options_environment_variable(ScopedVMInitArgs* vm_args);
c70929a2573c 8079301: Some command line options not settable via JAVA_TOOL_OPTIONS
jmanson
parents: 31620
diff changeset
   449
  static jint parse_java_options_environment_variable(ScopedVMInitArgs* vm_args);
32621
cdab920f3b6c 8061999: Enhance VM option parsing to allow options to be specified in a file
rdurbin
parents: 32619
diff changeset
   450
  static jint parse_vm_options_file(const char* file_name, ScopedVMInitArgs* vm_args);
cdab920f3b6c 8061999: Enhance VM option parsing to allow options to be specified in a file
rdurbin
parents: 32619
diff changeset
   451
  static jint parse_options_buffer(const char* name, char* buffer, const size_t buf_len, ScopedVMInitArgs* vm_args);
cdab920f3b6c 8061999: Enhance VM option parsing to allow options to be specified in a file
rdurbin
parents: 32619
diff changeset
   452
  static jint insert_vm_options_file(const JavaVMInitArgs* args,
35466
4ace9ef0201b 8135198: Add -XX:VMOptionsFile support to JAVA_TOOL_OPTIONS and _JAVA_OPTIONS
rdurbin
parents: 35171
diff changeset
   453
                                     const char* vm_options_file,
32621
cdab920f3b6c 8061999: Enhance VM option parsing to allow options to be specified in a file
rdurbin
parents: 32619
diff changeset
   454
                                     const int vm_options_file_pos,
cdab920f3b6c 8061999: Enhance VM option parsing to allow options to be specified in a file
rdurbin
parents: 32619
diff changeset
   455
                                     ScopedVMInitArgs* vm_options_file_args,
cdab920f3b6c 8061999: Enhance VM option parsing to allow options to be specified in a file
rdurbin
parents: 32619
diff changeset
   456
                                     ScopedVMInitArgs* args_out);
35466
4ace9ef0201b 8135198: Add -XX:VMOptionsFile support to JAVA_TOOL_OPTIONS and _JAVA_OPTIONS
rdurbin
parents: 35171
diff changeset
   457
  static bool args_contains_vm_options_file_arg(const JavaVMInitArgs* args);
4ace9ef0201b 8135198: Add -XX:VMOptionsFile support to JAVA_TOOL_OPTIONS and _JAVA_OPTIONS
rdurbin
parents: 35171
diff changeset
   458
  static jint expand_vm_options_as_needed(const JavaVMInitArgs* args_in,
4ace9ef0201b 8135198: Add -XX:VMOptionsFile support to JAVA_TOOL_OPTIONS and _JAVA_OPTIONS
rdurbin
parents: 35171
diff changeset
   459
                                          ScopedVMInitArgs* mod_args,
4ace9ef0201b 8135198: Add -XX:VMOptionsFile support to JAVA_TOOL_OPTIONS and _JAVA_OPTIONS
rdurbin
parents: 35171
diff changeset
   460
                                          JavaVMInitArgs** args_out);
32621
cdab920f3b6c 8061999: Enhance VM option parsing to allow options to be specified in a file
rdurbin
parents: 32619
diff changeset
   461
  static jint match_special_option_and_act(const JavaVMInitArgs* args,
cdab920f3b6c 8061999: Enhance VM option parsing to allow options to be specified in a file
rdurbin
parents: 32619
diff changeset
   462
                                           ScopedVMInitArgs* args_out);
cdab920f3b6c 8061999: Enhance VM option parsing to allow options to be specified in a file
rdurbin
parents: 32619
diff changeset
   463
35872
7fb1e4de83ff 8145180: Add back PrintGC, PrintGCDetails and -Xloggc
brutisso
parents: 35489
diff changeset
   464
  static bool handle_deprecated_print_gc_flags();
7fb1e4de83ff 8145180: Add back PrintGC, PrintGCDetails and -Xloggc
brutisso
parents: 35489
diff changeset
   465
31853
c70929a2573c 8079301: Some command line options not settable via JAVA_TOOL_OPTIONS
jmanson
parents: 31620
diff changeset
   466
  static jint parse_vm_init_args(const JavaVMInitArgs *java_tool_options_args,
c70929a2573c 8079301: Some command line options not settable via JAVA_TOOL_OPTIONS
jmanson
parents: 31620
diff changeset
   467
                                 const JavaVMInitArgs *java_options_args,
c70929a2573c 8079301: Some command line options not settable via JAVA_TOOL_OPTIONS
jmanson
parents: 31620
diff changeset
   468
                                 const JavaVMInitArgs *cmd_line_args);
36508
5f9eee6b383b 8142968: Module System implementation
alanb
parents: 36313
diff changeset
   469
  static jint parse_each_vm_init_arg(const JavaVMInitArgs* args, ArgumentBootClassPath* bcp_p, bool* bcp_assembly_required_p, Flag::Flags origin);
5f9eee6b383b 8142968: Module System implementation
alanb
parents: 36313
diff changeset
   470
  static jint finalize_vm_init_args(ArgumentBootClassPath* bcp_p, bool bcp_assembly_required);
22555
ea32f6c51d08 8028391: Make the Min/MaxHeapFreeRatio flags manageable
jwilhelm
parents: 22551
diff changeset
   471
  static bool is_bad_option(const JavaVMOption* option, jboolean ignore, const char* option_type);
ea32f6c51d08 8028391: Make the Min/MaxHeapFreeRatio flags manageable
jwilhelm
parents: 22551
diff changeset
   472
1
489c9b5090e2 Initial load
duke
parents:
diff changeset
   473
  static bool is_bad_option(const JavaVMOption* option, jboolean ignore) {
489c9b5090e2 Initial load
duke
parents:
diff changeset
   474
    return is_bad_option(option, ignore, NULL);
489c9b5090e2 Initial load
duke
parents:
diff changeset
   475
  }
22555
ea32f6c51d08 8028391: Make the Min/MaxHeapFreeRatio flags manageable
jwilhelm
parents: 22551
diff changeset
   476
1
489c9b5090e2 Initial load
duke
parents:
diff changeset
   477
  static void describe_range_error(ArgsRange errcode);
1676
d80e69372634 6653214: MemoryPoolMXBean.setUsageThreshold() does not support large heap sizes.
swamyv
parents: 1388
diff changeset
   478
  static ArgsRange check_memory_size(julong size, julong min_size);
d80e69372634 6653214: MemoryPoolMXBean.setUsageThreshold() does not support large heap sizes.
swamyv
parents: 1388
diff changeset
   479
  static ArgsRange parse_memory_size(const char* s, julong* long_arg,
d80e69372634 6653214: MemoryPoolMXBean.setUsageThreshold() does not support large heap sizes.
swamyv
parents: 1388
diff changeset
   480
                                     julong min_size);
5035
0e498c4df637 6928081: G1: rename parameters common with CMS
jmasa
parents: 4885
diff changeset
   481
  // Parse a string for a unsigned integer.  Returns true if value
0e498c4df637 6928081: G1: rename parameters common with CMS
jmasa
parents: 4885
diff changeset
   482
  // is an unsigned integer greater than or equal to the minimum
0e498c4df637 6928081: G1: rename parameters common with CMS
jmasa
parents: 4885
diff changeset
   483
  // parameter passed and returns the value in uintx_arg.  Returns
0e498c4df637 6928081: G1: rename parameters common with CMS
jmasa
parents: 4885
diff changeset
   484
  // false otherwise, with uintx_arg undefined.
0e498c4df637 6928081: G1: rename parameters common with CMS
jmasa
parents: 4885
diff changeset
   485
  static bool parse_uintx(const char* value, uintx* uintx_arg,
0e498c4df637 6928081: G1: rename parameters common with CMS
jmasa
parents: 4885
diff changeset
   486
                          uintx min_size);
1
489c9b5090e2 Initial load
duke
parents:
diff changeset
   487
489c9b5090e2 Initial load
duke
parents:
diff changeset
   488
  // methods to build strings from individual args
489c9b5090e2 Initial load
duke
parents:
diff changeset
   489
  static void build_jvm_args(const char* arg);
489c9b5090e2 Initial load
duke
parents:
diff changeset
   490
  static void build_jvm_flags(const char* arg);
489c9b5090e2 Initial load
duke
parents:
diff changeset
   491
  static void add_string(char*** bldarray, int* count, const char* arg);
489c9b5090e2 Initial load
duke
parents:
diff changeset
   492
  static const char* build_resource_string(char** args, int count);
489c9b5090e2 Initial load
duke
parents:
diff changeset
   493
489c9b5090e2 Initial load
duke
parents:
diff changeset
   494
  static bool methodExists(
489c9b5090e2 Initial load
duke
parents:
diff changeset
   495
    char* className, char* methodName,
489c9b5090e2 Initial load
duke
parents:
diff changeset
   496
    int classesNum, char** classes, bool* allMethods,
489c9b5090e2 Initial load
duke
parents:
diff changeset
   497
    int methodsNum, char** methods, bool* allClasses
489c9b5090e2 Initial load
duke
parents:
diff changeset
   498
  );
489c9b5090e2 Initial load
duke
parents:
diff changeset
   499
489c9b5090e2 Initial load
duke
parents:
diff changeset
   500
  static void parseOnlyLine(
489c9b5090e2 Initial load
duke
parents:
diff changeset
   501
    const char* line,
489c9b5090e2 Initial load
duke
parents:
diff changeset
   502
    short* classesNum, short* classesMax, char*** classes, bool** allMethods,
489c9b5090e2 Initial load
duke
parents:
diff changeset
   503
    short* methodsNum, short* methodsMax, char*** methods, bool** allClasses
489c9b5090e2 Initial load
duke
parents:
diff changeset
   504
  );
489c9b5090e2 Initial load
duke
parents:
diff changeset
   505
32823
ca8fef4cd57b 8066821: Enhance command line processing to manage deprecating and obsoleting -XX command line arguments
drwhite
parents: 32621
diff changeset
   506
  // Returns true if the flag is obsolete (and not yet expired).
ca8fef4cd57b 8066821: Enhance command line processing to manage deprecating and obsoleting -XX command line arguments
drwhite
parents: 32621
diff changeset
   507
  // In this case the 'version' buffer is filled in with
ca8fef4cd57b 8066821: Enhance command line processing to manage deprecating and obsoleting -XX command line arguments
drwhite
parents: 32621
diff changeset
   508
  // the version number when the flag became obsolete.
ca8fef4cd57b 8066821: Enhance command line processing to manage deprecating and obsoleting -XX command line arguments
drwhite
parents: 32621
diff changeset
   509
  static bool is_obsolete_flag(const char* flag_name, JDK_Version* version);
ca8fef4cd57b 8066821: Enhance command line processing to manage deprecating and obsoleting -XX command line arguments
drwhite
parents: 32621
diff changeset
   510
37173
d8aea1500483 8146632: Add descriptive error messages for removed non-product logging flags.
mockner
parents: 37094
diff changeset
   511
#ifndef PRODUCT
d8aea1500483 8146632: Add descriptive error messages for removed non-product logging flags.
mockner
parents: 37094
diff changeset
   512
  static const char* removed_develop_logging_flag_name(const char* name);
d8aea1500483 8146632: Add descriptive error messages for removed non-product logging flags.
mockner
parents: 37094
diff changeset
   513
#endif // PRODUCT
d8aea1500483 8146632: Add descriptive error messages for removed non-product logging flags.
mockner
parents: 37094
diff changeset
   514
32823
ca8fef4cd57b 8066821: Enhance command line processing to manage deprecating and obsoleting -XX command line arguments
drwhite
parents: 32621
diff changeset
   515
  // Returns 1 if the flag is deprecated (and not yet obsolete or expired).
ca8fef4cd57b 8066821: Enhance command line processing to manage deprecating and obsoleting -XX command line arguments
drwhite
parents: 32621
diff changeset
   516
  //     In this case the 'version' buffer is filled in with the version number when
ca8fef4cd57b 8066821: Enhance command line processing to manage deprecating and obsoleting -XX command line arguments
drwhite
parents: 32621
diff changeset
   517
  //     the flag became deprecated.
ca8fef4cd57b 8066821: Enhance command line processing to manage deprecating and obsoleting -XX command line arguments
drwhite
parents: 32621
diff changeset
   518
  // Returns -1 if the flag is expired or obsolete.
ca8fef4cd57b 8066821: Enhance command line processing to manage deprecating and obsoleting -XX command line arguments
drwhite
parents: 32621
diff changeset
   519
  // Returns 0 otherwise.
ca8fef4cd57b 8066821: Enhance command line processing to manage deprecating and obsoleting -XX command line arguments
drwhite
parents: 32621
diff changeset
   520
  static int is_deprecated_flag(const char* flag_name, JDK_Version* version);
ca8fef4cd57b 8066821: Enhance command line processing to manage deprecating and obsoleting -XX command line arguments
drwhite
parents: 32621
diff changeset
   521
ca8fef4cd57b 8066821: Enhance command line processing to manage deprecating and obsoleting -XX command line arguments
drwhite
parents: 32621
diff changeset
   522
  // Return the real name for the flag passed on the command line (either an alias name or "flag_name").
ca8fef4cd57b 8066821: Enhance command line processing to manage deprecating and obsoleting -XX command line arguments
drwhite
parents: 32621
diff changeset
   523
  static const char* real_flag_name(const char *flag_name);
ca8fef4cd57b 8066821: Enhance command line processing to manage deprecating and obsoleting -XX command line arguments
drwhite
parents: 32621
diff changeset
   524
ca8fef4cd57b 8066821: Enhance command line processing to manage deprecating and obsoleting -XX command line arguments
drwhite
parents: 32621
diff changeset
   525
  // Return the "real" name for option arg if arg is an alias, and print a warning if arg is deprecated.
ca8fef4cd57b 8066821: Enhance command line processing to manage deprecating and obsoleting -XX command line arguments
drwhite
parents: 32621
diff changeset
   526
  // Return NULL if the arg has expired.
ca8fef4cd57b 8066821: Enhance command line processing to manage deprecating and obsoleting -XX command line arguments
drwhite
parents: 32621
diff changeset
   527
  static const char* handle_aliases_and_deprecation(const char* arg, bool warn);
35171
cf7d5a1d0662 8145153: Convert TraceMonitorInflation to Unified Logging
rprotacio
parents: 35061
diff changeset
   528
  static bool lookup_logging_aliases(const char* arg, char* buffer);
37216
5555c1f804c4 8145235: Deprecate product flags that have been converted to Unified Logging
rprotacio
parents: 37199
diff changeset
   529
  static AliasedLoggingFlag catch_logging_aliases(const char* name, bool on);
1
489c9b5090e2 Initial load
duke
parents:
diff changeset
   530
  static short  CompileOnlyClassesNum;
489c9b5090e2 Initial load
duke
parents:
diff changeset
   531
  static short  CompileOnlyClassesMax;
489c9b5090e2 Initial load
duke
parents:
diff changeset
   532
  static char** CompileOnlyClasses;
489c9b5090e2 Initial load
duke
parents:
diff changeset
   533
  static bool*  CompileOnlyAllMethods;
489c9b5090e2 Initial load
duke
parents:
diff changeset
   534
489c9b5090e2 Initial load
duke
parents:
diff changeset
   535
  static short  CompileOnlyMethodsNum;
489c9b5090e2 Initial load
duke
parents:
diff changeset
   536
  static short  CompileOnlyMethodsMax;
489c9b5090e2 Initial load
duke
parents:
diff changeset
   537
  static char** CompileOnlyMethods;
489c9b5090e2 Initial load
duke
parents:
diff changeset
   538
  static bool*  CompileOnlyAllClasses;
489c9b5090e2 Initial load
duke
parents:
diff changeset
   539
489c9b5090e2 Initial load
duke
parents:
diff changeset
   540
  static short  InterpretOnlyClassesNum;
489c9b5090e2 Initial load
duke
parents:
diff changeset
   541
  static short  InterpretOnlyClassesMax;
489c9b5090e2 Initial load
duke
parents:
diff changeset
   542
  static char** InterpretOnlyClasses;
489c9b5090e2 Initial load
duke
parents:
diff changeset
   543
  static bool*  InterpretOnlyAllMethods;
489c9b5090e2 Initial load
duke
parents:
diff changeset
   544
489c9b5090e2 Initial load
duke
parents:
diff changeset
   545
  static bool   CheckCompileOnly;
489c9b5090e2 Initial load
duke
parents:
diff changeset
   546
489c9b5090e2 Initial load
duke
parents:
diff changeset
   547
  static char*  SharedArchivePath;
489c9b5090e2 Initial load
duke
parents:
diff changeset
   548
489c9b5090e2 Initial load
duke
parents:
diff changeset
   549
 public:
28650
772aaab2582f 8059606: Enable per-method usage of CompileThresholdScaling (per-method compilation thresholds)
zmajo
parents: 28372
diff changeset
   550
  // Scale compile thresholds
772aaab2582f 8059606: Enable per-method usage of CompileThresholdScaling (per-method compilation thresholds)
zmajo
parents: 28372
diff changeset
   551
  // Returns threshold scaled with CompileThresholdScaling
772aaab2582f 8059606: Enable per-method usage of CompileThresholdScaling (per-method compilation thresholds)
zmajo
parents: 28372
diff changeset
   552
  static intx scaled_compile_threshold(intx threshold, double scale);
772aaab2582f 8059606: Enable per-method usage of CompileThresholdScaling (per-method compilation thresholds)
zmajo
parents: 28372
diff changeset
   553
  static intx scaled_compile_threshold(intx threshold) {
772aaab2582f 8059606: Enable per-method usage of CompileThresholdScaling (per-method compilation thresholds)
zmajo
parents: 28372
diff changeset
   554
    return scaled_compile_threshold(threshold, CompileThresholdScaling);
772aaab2582f 8059606: Enable per-method usage of CompileThresholdScaling (per-method compilation thresholds)
zmajo
parents: 28372
diff changeset
   555
  }
772aaab2582f 8059606: Enable per-method usage of CompileThresholdScaling (per-method compilation thresholds)
zmajo
parents: 28372
diff changeset
   556
  // Returns freq_log scaled with CompileThresholdScaling
772aaab2582f 8059606: Enable per-method usage of CompileThresholdScaling (per-method compilation thresholds)
zmajo
parents: 28372
diff changeset
   557
  static intx scaled_freq_log(intx freq_log, double scale);
772aaab2582f 8059606: Enable per-method usage of CompileThresholdScaling (per-method compilation thresholds)
zmajo
parents: 28372
diff changeset
   558
  static intx scaled_freq_log(intx freq_log) {
772aaab2582f 8059606: Enable per-method usage of CompileThresholdScaling (per-method compilation thresholds)
zmajo
parents: 28372
diff changeset
   559
    return scaled_freq_log(freq_log, CompileThresholdScaling);
772aaab2582f 8059606: Enable per-method usage of CompileThresholdScaling (per-method compilation thresholds)
zmajo
parents: 28372
diff changeset
   560
  }
772aaab2582f 8059606: Enable per-method usage of CompileThresholdScaling (per-method compilation thresholds)
zmajo
parents: 28372
diff changeset
   561
19986
33d188c66ed9 8010722: assert: failed: heap size is too big for compressed oops
tschatzl
parents: 19732
diff changeset
   562
  // Parses the arguments, first phase
1
489c9b5090e2 Initial load
duke
parents:
diff changeset
   563
  static jint parse(const JavaVMInitArgs* args);
19986
33d188c66ed9 8010722: assert: failed: heap size is too big for compressed oops
tschatzl
parents: 19732
diff changeset
   564
  // Apply ergonomics
33d188c66ed9 8010722: assert: failed: heap size is too big for compressed oops
tschatzl
parents: 19732
diff changeset
   565
  static jint apply_ergo();
14580
3e2316663327 7198334: UseNUMA modifies system parameters on non-NUMA system
brutisso
parents: 13963
diff changeset
   566
  // Adjusts the arguments after the OS have adjusted the arguments
3e2316663327 7198334: UseNUMA modifies system parameters on non-NUMA system
brutisso
parents: 13963
diff changeset
   567
  static jint adjust_after_os();
22555
ea32f6c51d08 8028391: Make the Min/MaxHeapFreeRatio flags manageable
jwilhelm
parents: 22551
diff changeset
   568
27892
06a143c836ad 8065305: Make it possible to extend the G1CollectorPolicy
jwilhelm
parents: 27148
diff changeset
   569
  static void set_gc_specific_flags();
37199
74703ea13069 8068579: Running with -XX:-UseParallelGC does not turn ParalleGC off
pliden
parents: 37179
diff changeset
   570
  static bool gc_selected(); // whether a gc has been selected
26836
b27ec66071c7 8057531: refactor gc argument processing code slightly
jcoomes
parents: 26824
diff changeset
   571
  static void select_gc_ergonomically();
36313
e7eff81d7f1d 8145333: -XX:+EnableJVMCI -XX:+UseJVMCICompiler -XX:-EnableJVMCI makes JVM crash
jcm
parents: 35872
diff changeset
   572
#if INCLUDE_JVMCI
e7eff81d7f1d 8145333: -XX:+EnableJVMCI -XX:+UseJVMCICompiler -XX:-EnableJVMCI makes JVM crash
jcm
parents: 35872
diff changeset
   573
  // Check consistency of jvmci vm argument settings.
e7eff81d7f1d 8145333: -XX:+EnableJVMCI -XX:+UseJVMCICompiler -XX:-EnableJVMCI makes JVM crash
jcm
parents: 35872
diff changeset
   574
  static bool check_jvmci_args_consistency();
e7eff81d7f1d 8145333: -XX:+EnableJVMCI -XX:+UseJVMCICompiler -XX:-EnableJVMCI makes JVM crash
jcm
parents: 35872
diff changeset
   575
#endif
183
ba55c7f3fd45 6362677: Change parallel GC collector default number of parallel GC threads.
jmasa
parents: 1
diff changeset
   576
  // Check for consistency in the selection of the garbage collector.
29696
01571dfab5be 8073944: Simplify ArgumentsExt and remove unneeded functionallity
sjohanss
parents: 29076
diff changeset
   577
  static bool check_gc_consistency();        // Check user-selected gc
22551
9bf46d16dcc6 8025856: Fix typos in the GC code
jwilhelm
parents: 20288
diff changeset
   578
  // Check consistency or otherwise of VM argument settings
1
489c9b5090e2 Initial load
duke
parents:
diff changeset
   579
  static bool check_vm_args_consistency();
489c9b5090e2 Initial load
duke
parents:
diff changeset
   580
  // Used by os_solaris
489c9b5090e2 Initial load
duke
parents:
diff changeset
   581
  static bool process_settings_file(const char* file_name, bool should_exist, jboolean ignore_unrecognized);
489c9b5090e2 Initial load
duke
parents:
diff changeset
   582
19986
33d188c66ed9 8010722: assert: failed: heap size is too big for compressed oops
tschatzl
parents: 19732
diff changeset
   583
  static size_t conservative_max_heap_alignment() { return _conservative_max_heap_alignment; }
33d188c66ed9 8010722: assert: failed: heap size is too big for compressed oops
tschatzl
parents: 19732
diff changeset
   584
  // Return the maximum size a heap with compressed oops can take
33d188c66ed9 8010722: assert: failed: heap size is too big for compressed oops
tschatzl
parents: 19732
diff changeset
   585
  static size_t max_heap_for_compressed_oops();
33d188c66ed9 8010722: assert: failed: heap size is too big for compressed oops
tschatzl
parents: 19732
diff changeset
   586
1
489c9b5090e2 Initial load
duke
parents:
diff changeset
   587
  // return a char* array containing all options
489c9b5090e2 Initial load
duke
parents:
diff changeset
   588
  static char** jvm_flags_array()          { return _jvm_flags_array; }
489c9b5090e2 Initial load
duke
parents:
diff changeset
   589
  static char** jvm_args_array()           { return _jvm_args_array; }
489c9b5090e2 Initial load
duke
parents:
diff changeset
   590
  static int num_jvm_flags()               { return _num_jvm_flags; }
489c9b5090e2 Initial load
duke
parents:
diff changeset
   591
  static int num_jvm_args()                { return _num_jvm_args; }
489c9b5090e2 Initial load
duke
parents:
diff changeset
   592
  // return the arguments passed to the Java application
489c9b5090e2 Initial load
duke
parents:
diff changeset
   593
  static const char* java_command()        { return _java_command; }
489c9b5090e2 Initial load
duke
parents:
diff changeset
   594
489c9b5090e2 Initial load
duke
parents:
diff changeset
   595
  // print jvm_flags, jvm_args and java_command
489c9b5090e2 Initial load
duke
parents:
diff changeset
   596
  static void print_on(outputStream* st);
31963
641ed52732ec 8026324: hs_err improvement: Add summary section to hs_err file
coleenp
parents: 31853
diff changeset
   597
  static void print_summary_on(outputStream* st);
1
489c9b5090e2 Initial load
duke
parents:
diff changeset
   598
34125
56c4a2d19ee1 8141068: refactor -XXFlags= code in preparation for removal
rdurbin
parents: 32823
diff changeset
   599
  // convenient methods to get and set jvm_flags_file
56c4a2d19ee1 8141068: refactor -XXFlags= code in preparation for removal
rdurbin
parents: 32823
diff changeset
   600
  static const char* get_jvm_flags_file()  { return _jvm_flags_file; }
56c4a2d19ee1 8141068: refactor -XXFlags= code in preparation for removal
rdurbin
parents: 32823
diff changeset
   601
  static void set_jvm_flags_file(const char *value) {
56c4a2d19ee1 8141068: refactor -XXFlags= code in preparation for removal
rdurbin
parents: 32823
diff changeset
   602
    if (_jvm_flags_file != NULL) {
56c4a2d19ee1 8141068: refactor -XXFlags= code in preparation for removal
rdurbin
parents: 32823
diff changeset
   603
      os::free(_jvm_flags_file);
56c4a2d19ee1 8141068: refactor -XXFlags= code in preparation for removal
rdurbin
parents: 32823
diff changeset
   604
    }
56c4a2d19ee1 8141068: refactor -XXFlags= code in preparation for removal
rdurbin
parents: 32823
diff changeset
   605
    _jvm_flags_file = os::strdup_check_oom(value);
56c4a2d19ee1 8141068: refactor -XXFlags= code in preparation for removal
rdurbin
parents: 32823
diff changeset
   606
  }
1
489c9b5090e2 Initial load
duke
parents:
diff changeset
   607
  // convenient methods to obtain / print jvm_flags and jvm_args
489c9b5090e2 Initial load
duke
parents:
diff changeset
   608
  static const char* jvm_flags()           { return build_resource_string(_jvm_flags_array, _num_jvm_flags); }
489c9b5090e2 Initial load
duke
parents:
diff changeset
   609
  static const char* jvm_args()            { return build_resource_string(_jvm_args_array, _num_jvm_args); }
489c9b5090e2 Initial load
duke
parents:
diff changeset
   610
  static void print_jvm_flags_on(outputStream* st);
489c9b5090e2 Initial load
duke
parents:
diff changeset
   611
  static void print_jvm_args_on(outputStream* st);
489c9b5090e2 Initial load
duke
parents:
diff changeset
   612
489c9b5090e2 Initial load
duke
parents:
diff changeset
   613
  // -Dkey=value flags
489c9b5090e2 Initial load
duke
parents:
diff changeset
   614
  static SystemProperty*  system_properties()   { return _system_properties; }
489c9b5090e2 Initial load
duke
parents:
diff changeset
   615
  static const char*    get_property(const char* key);
489c9b5090e2 Initial load
duke
parents:
diff changeset
   616
489c9b5090e2 Initial load
duke
parents:
diff changeset
   617
  // -Djava.vendor.url.bug
489c9b5090e2 Initial load
duke
parents:
diff changeset
   618
  static const char* java_vendor_url_bug()  { return _java_vendor_url_bug; }
489c9b5090e2 Initial load
duke
parents:
diff changeset
   619
489c9b5090e2 Initial load
duke
parents:
diff changeset
   620
  // -Dsun.java.launcher
489c9b5090e2 Initial load
duke
parents:
diff changeset
   621
  static const char* sun_java_launcher()    { return _sun_java_launcher; }
489c9b5090e2 Initial load
duke
parents:
diff changeset
   622
  // Was VM created by a Java launcher?
489c9b5090e2 Initial load
duke
parents:
diff changeset
   623
  static bool created_by_java_launcher();
22734
41757c1f3946 8027113: decouple the '-XXaltjvm=<path>' option from the gamma launcher
rdurbin
parents: 20288
diff changeset
   624
  // -Dsun.java.launcher.is_altjvm
41757c1f3946 8027113: decouple the '-XXaltjvm=<path>' option from the gamma launcher
rdurbin
parents: 20288
diff changeset
   625
  static bool sun_java_launcher_is_altjvm();
1
489c9b5090e2 Initial load
duke
parents:
diff changeset
   626
  // -Dsun.java.launcher.pid
489c9b5090e2 Initial load
duke
parents:
diff changeset
   627
  static int sun_java_launcher_pid()        { return _sun_java_launcher_pid; }
489c9b5090e2 Initial load
duke
parents:
diff changeset
   628
18687
5a0543c157c9 7133260: AllocationProfiler uses space in metadata and doesn't seem to do anything useful.
jiangli
parents: 18090
diff changeset
   629
  // -Xprof
1
489c9b5090e2 Initial load
duke
parents:
diff changeset
   630
  static bool has_profile()                 { return _has_profile; }
489c9b5090e2 Initial load
duke
parents:
diff changeset
   631
22551
9bf46d16dcc6 8025856: Fix typos in the GC code
jwilhelm
parents: 20288
diff changeset
   632
  // -Xms
29697
92501504191b 8074459: Flags handling memory sizes should be of type size_t
jwilhelm
parents: 29696
diff changeset
   633
  static size_t min_heap_size()             { return _min_heap_size; }
92501504191b 8074459: Flags handling memory sizes should be of type size_t
jwilhelm
parents: 29696
diff changeset
   634
  static void  set_min_heap_size(size_t v)  { _min_heap_size = v;  }
1
489c9b5090e2 Initial load
duke
parents:
diff changeset
   635
36508
5f9eee6b383b 8142968: Module System implementation
alanb
parents: 36313
diff changeset
   636
  // -Xbootclasspath/a
5f9eee6b383b 8142968: Module System implementation
alanb
parents: 36313
diff changeset
   637
  static int  bootclassloader_append_index() {
5f9eee6b383b 8142968: Module System implementation
alanb
parents: 36313
diff changeset
   638
    return _bootclassloader_append_index;
5f9eee6b383b 8142968: Module System implementation
alanb
parents: 36313
diff changeset
   639
  }
5f9eee6b383b 8142968: Module System implementation
alanb
parents: 36313
diff changeset
   640
  static void set_bootclassloader_append_index(int value) {
5f9eee6b383b 8142968: Module System implementation
alanb
parents: 36313
diff changeset
   641
    _bootclassloader_append_index = value;
5f9eee6b383b 8142968: Module System implementation
alanb
parents: 36313
diff changeset
   642
  }
5f9eee6b383b 8142968: Module System implementation
alanb
parents: 36313
diff changeset
   643
5f9eee6b383b 8142968: Module System implementation
alanb
parents: 36313
diff changeset
   644
  // -Xpatch
5f9eee6b383b 8142968: Module System implementation
alanb
parents: 36313
diff changeset
   645
  static char** patch_dirs()             { return _patch_dirs; }
5f9eee6b383b 8142968: Module System implementation
alanb
parents: 36313
diff changeset
   646
  static int patch_dirs_count()          { return _patch_dirs_count; }
5f9eee6b383b 8142968: Module System implementation
alanb
parents: 36313
diff changeset
   647
1
489c9b5090e2 Initial load
duke
parents:
diff changeset
   648
  // -Xrun
489c9b5090e2 Initial load
duke
parents:
diff changeset
   649
  static AgentLibrary* libraries()          { return _libraryList.first(); }
489c9b5090e2 Initial load
duke
parents:
diff changeset
   650
  static bool init_libraries_at_startup()   { return !_libraryList.is_empty(); }
489c9b5090e2 Initial load
duke
parents:
diff changeset
   651
  static void convert_library_to_agent(AgentLibrary* lib)
489c9b5090e2 Initial load
duke
parents:
diff changeset
   652
                                            { _libraryList.remove(lib);
489c9b5090e2 Initial load
duke
parents:
diff changeset
   653
                                              _agentList.add(lib); }
489c9b5090e2 Initial load
duke
parents:
diff changeset
   654
489c9b5090e2 Initial load
duke
parents:
diff changeset
   655
  // -agentlib -agentpath
489c9b5090e2 Initial load
duke
parents:
diff changeset
   656
  static AgentLibrary* agents()             { return _agentList.first(); }
489c9b5090e2 Initial load
duke
parents:
diff changeset
   657
  static bool init_agents_at_startup()      { return !_agentList.is_empty(); }
489c9b5090e2 Initial load
duke
parents:
diff changeset
   658
489c9b5090e2 Initial load
duke
parents:
diff changeset
   659
  // abort, exit, vfprintf hooks
489c9b5090e2 Initial load
duke
parents:
diff changeset
   660
  static abort_hook_t    abort_hook()       { return _abort_hook; }
489c9b5090e2 Initial load
duke
parents:
diff changeset
   661
  static exit_hook_t     exit_hook()        { return _exit_hook; }
489c9b5090e2 Initial load
duke
parents:
diff changeset
   662
  static vfprintf_hook_t vfprintf_hook()    { return _vfprintf_hook; }
489c9b5090e2 Initial load
duke
parents:
diff changeset
   663
489c9b5090e2 Initial load
duke
parents:
diff changeset
   664
  static bool GetCheckCompileOnly ()        { return CheckCompileOnly; }
489c9b5090e2 Initial load
duke
parents:
diff changeset
   665
489c9b5090e2 Initial load
duke
parents:
diff changeset
   666
  static const char* GetSharedArchivePath() { return SharedArchivePath; }
489c9b5090e2 Initial load
duke
parents:
diff changeset
   667
489c9b5090e2 Initial load
duke
parents:
diff changeset
   668
  static bool CompileMethod(char* className, char* methodName) {
489c9b5090e2 Initial load
duke
parents:
diff changeset
   669
    return
489c9b5090e2 Initial load
duke
parents:
diff changeset
   670
      methodExists(
489c9b5090e2 Initial load
duke
parents:
diff changeset
   671
        className, methodName,
489c9b5090e2 Initial load
duke
parents:
diff changeset
   672
        CompileOnlyClassesNum, CompileOnlyClasses, CompileOnlyAllMethods,
489c9b5090e2 Initial load
duke
parents:
diff changeset
   673
        CompileOnlyMethodsNum, CompileOnlyMethods, CompileOnlyAllClasses
489c9b5090e2 Initial load
duke
parents:
diff changeset
   674
      );
489c9b5090e2 Initial load
duke
parents:
diff changeset
   675
  }
489c9b5090e2 Initial load
duke
parents:
diff changeset
   676
489c9b5090e2 Initial load
duke
parents:
diff changeset
   677
  // Java launcher properties
489c9b5090e2 Initial load
duke
parents:
diff changeset
   678
  static void process_sun_java_launcher_properties(JavaVMInitArgs* args);
489c9b5090e2 Initial load
duke
parents:
diff changeset
   679
489c9b5090e2 Initial load
duke
parents:
diff changeset
   680
  // System properties
489c9b5090e2 Initial load
duke
parents:
diff changeset
   681
  static void init_system_properties();
489c9b5090e2 Initial load
duke
parents:
diff changeset
   682
6961
a32b2fc66321 6988363: Rebrand vm vendor property settings (jdk7 only)
zgu
parents: 6453
diff changeset
   683
  // Update/Initialize System properties after JDK version number is known
a32b2fc66321 6988363: Rebrand vm vendor property settings (jdk7 only)
zgu
parents: 6453
diff changeset
   684
  static void init_version_specific_system_properties();
a32b2fc66321 6988363: Rebrand vm vendor property settings (jdk7 only)
zgu
parents: 6453
diff changeset
   685
2358
7c8346929fc6 6819213: revive sun.boot.library.path
phh
parents: 2105
diff changeset
   686
  // Property List manipulation
28372
ce0aad4b8c44 8064457: Introduce compressed oops mode disjoint base and improve compressed heap handling.
goetz
parents: 27926
diff changeset
   687
  static void PropertyList_add(SystemProperty *element);
1
489c9b5090e2 Initial load
duke
parents:
diff changeset
   688
  static void PropertyList_add(SystemProperty** plist, SystemProperty *element);
32595
8cde9aca5e9f 8132725: Memory leak in Arguments::add_property function
ddmitriev
parents: 32366
diff changeset
   689
  static void PropertyList_add(SystemProperty** plist, const char* k, const char* v);
8cde9aca5e9f 8132725: Memory leak in Arguments::add_property function
ddmitriev
parents: 32366
diff changeset
   690
  static void PropertyList_unique_add(SystemProperty** plist, const char* k, const char* v) {
2358
7c8346929fc6 6819213: revive sun.boot.library.path
phh
parents: 2105
diff changeset
   691
    PropertyList_unique_add(plist, k, v, false);
7c8346929fc6 6819213: revive sun.boot.library.path
phh
parents: 2105
diff changeset
   692
  }
32595
8cde9aca5e9f 8132725: Memory leak in Arguments::add_property function
ddmitriev
parents: 32366
diff changeset
   693
  static void PropertyList_unique_add(SystemProperty** plist, const char* k, const char* v, jboolean append);
1
489c9b5090e2 Initial load
duke
parents:
diff changeset
   694
  static const char* PropertyList_get_value(SystemProperty* plist, const char* key);
489c9b5090e2 Initial load
duke
parents:
diff changeset
   695
  static int  PropertyList_count(SystemProperty* pl);
489c9b5090e2 Initial load
duke
parents:
diff changeset
   696
  static const char* PropertyList_get_key_at(SystemProperty* pl,int index);
489c9b5090e2 Initial load
duke
parents:
diff changeset
   697
  static char* PropertyList_get_value_at(SystemProperty* pl,int index);
489c9b5090e2 Initial load
duke
parents:
diff changeset
   698
489c9b5090e2 Initial load
duke
parents:
diff changeset
   699
  // Miscellaneous System property value getter and setters.
32595
8cde9aca5e9f 8132725: Memory leak in Arguments::add_property function
ddmitriev
parents: 32366
diff changeset
   700
  static void set_dll_dir(const char *value) { _sun_boot_library_path->set_value(value); }
8cde9aca5e9f 8132725: Memory leak in Arguments::add_property function
ddmitriev
parents: 32366
diff changeset
   701
  static void set_java_home(const char *value) { _java_home->set_value(value); }
8cde9aca5e9f 8132725: Memory leak in Arguments::add_property function
ddmitriev
parents: 32366
diff changeset
   702
  static void set_library_path(const char *value) { _java_library_path->set_value(value); }
27562
47f369e3c69c 8049367: Modular Run-Time Images
chegar
parents: 27148
diff changeset
   703
  static void set_ext_dirs(char *value)     { _ext_dirs = os::strdup_check_oom(value); }
36508
5f9eee6b383b 8142968: Module System implementation
alanb
parents: 36313
diff changeset
   704
5f9eee6b383b 8142968: Module System implementation
alanb
parents: 36313
diff changeset
   705
  // Set up of the underlying system boot class path
5f9eee6b383b 8142968: Module System implementation
alanb
parents: 36313
diff changeset
   706
  static void set_jdkbootclasspath_append();
5f9eee6b383b 8142968: Module System implementation
alanb
parents: 36313
diff changeset
   707
  static void set_sysclasspath(const char *value) {
5f9eee6b383b 8142968: Module System implementation
alanb
parents: 36313
diff changeset
   708
    _system_boot_class_path->set_value(value);
5f9eee6b383b 8142968: Module System implementation
alanb
parents: 36313
diff changeset
   709
    set_jdkbootclasspath_append();
5f9eee6b383b 8142968: Module System implementation
alanb
parents: 36313
diff changeset
   710
  }
5f9eee6b383b 8142968: Module System implementation
alanb
parents: 36313
diff changeset
   711
  static void append_sysclasspath(const char *value) {
5f9eee6b383b 8142968: Module System implementation
alanb
parents: 36313
diff changeset
   712
    _system_boot_class_path->append_value(value);
5f9eee6b383b 8142968: Module System implementation
alanb
parents: 36313
diff changeset
   713
    set_jdkbootclasspath_append();
5f9eee6b383b 8142968: Module System implementation
alanb
parents: 36313
diff changeset
   714
  }
1
489c9b5090e2 Initial load
duke
parents:
diff changeset
   715
26135
82b516c550f7 8046070: Class Data Sharing clean up and refactoring
iklam
parents: 25468
diff changeset
   716
  static char* get_java_home() { return _java_home->value(); }
82b516c550f7 8046070: Class Data Sharing clean up and refactoring
iklam
parents: 25468
diff changeset
   717
  static char* get_dll_dir() { return _sun_boot_library_path->value(); }
36508
5f9eee6b383b 8142968: Module System implementation
alanb
parents: 36313
diff changeset
   718
  static char* get_sysclasspath() { return _system_boot_class_path->value(); }
27562
47f369e3c69c 8049367: Modular Run-Time Images
chegar
parents: 27148
diff changeset
   719
  static char* get_ext_dirs()        { return _ext_dirs;  }
26135
82b516c550f7 8046070: Class Data Sharing clean up and refactoring
iklam
parents: 25468
diff changeset
   720
  static char* get_appclasspath() { return _java_class_path->value(); }
82b516c550f7 8046070: Class Data Sharing clean up and refactoring
iklam
parents: 25468
diff changeset
   721
  static void  fix_appclasspath();
1
489c9b5090e2 Initial load
duke
parents:
diff changeset
   722
27562
47f369e3c69c 8049367: Modular Run-Time Images
chegar
parents: 27148
diff changeset
   723
1
489c9b5090e2 Initial load
duke
parents:
diff changeset
   724
  // Operation modi
36508
5f9eee6b383b 8142968: Module System implementation
alanb
parents: 36313
diff changeset
   725
  static Mode mode()                        { return _mode; }
26585
2048b8d90c91 8058092: Test vm/mlvm/meth/stress/compiler/deoptimize. Assert in src/share/vm/classfile/systemDictionary.cpp: MH intrinsic invariant
iveresov
parents: 26135
diff changeset
   726
  static bool is_interpreter_only() { return mode() == _int; }
2048b8d90c91 8058092: Test vm/mlvm/meth/stress/compiler/deoptimize. Assert in src/share/vm/classfile/systemDictionary.cpp: MH intrinsic invariant
iveresov
parents: 26135
diff changeset
   727
1
489c9b5090e2 Initial load
duke
parents:
diff changeset
   728
489c9b5090e2 Initial load
duke
parents:
diff changeset
   729
  // Utility: copies src into buf, replacing "%%" with "%" and "%p" with pid.
489c9b5090e2 Initial load
duke
parents:
diff changeset
   730
  static bool copy_expand_pid(const char* src, size_t srclen, char* buf, size_t buflen);
36508
5f9eee6b383b 8142968: Module System implementation
alanb
parents: 36313
diff changeset
   731
5f9eee6b383b 8142968: Module System implementation
alanb
parents: 36313
diff changeset
   732
  static void check_unsupported_dumping_properties() NOT_CDS_RETURN;
1
489c9b5090e2 Initial load
duke
parents:
diff changeset
   733
};
7397
5b173b4ca846 6989984: Use standard include model for Hospot
stefank
parents: 6988
diff changeset
   734
28838
da47c3cc5c98 8067460: G1: TestResourceManagementFlagWithCommercialBuild.java failed on embedded platform
aharlap
parents: 28650
diff changeset
   735
// Disable options not supported in this release, with a warning if they
da47c3cc5c98 8067460: G1: TestResourceManagementFlagWithCommercialBuild.java failed on embedded platform
aharlap
parents: 28650
diff changeset
   736
// were explicitly requested on the command-line
37253
45e69c7b0bac 8152929: Remove UNSUPPORTED_GC_OPTION, use UNSUPPORTED_OPTION instead
pliden
parents: 37216
diff changeset
   737
#define UNSUPPORTED_OPTION(opt)                          \
45e69c7b0bac 8152929: Remove UNSUPPORTED_GC_OPTION, use UNSUPPORTED_OPTION instead
pliden
parents: 37216
diff changeset
   738
do {                                                     \
45e69c7b0bac 8152929: Remove UNSUPPORTED_GC_OPTION, use UNSUPPORTED_OPTION instead
pliden
parents: 37216
diff changeset
   739
  if (opt) {                                             \
45e69c7b0bac 8152929: Remove UNSUPPORTED_GC_OPTION, use UNSUPPORTED_OPTION instead
pliden
parents: 37216
diff changeset
   740
    if (FLAG_IS_CMDLINE(opt)) {                          \
45e69c7b0bac 8152929: Remove UNSUPPORTED_GC_OPTION, use UNSUPPORTED_OPTION instead
pliden
parents: 37216
diff changeset
   741
      warning("-XX:+" #opt " not supported in this VM"); \
45e69c7b0bac 8152929: Remove UNSUPPORTED_GC_OPTION, use UNSUPPORTED_OPTION instead
pliden
parents: 37216
diff changeset
   742
    }                                                    \
45e69c7b0bac 8152929: Remove UNSUPPORTED_GC_OPTION, use UNSUPPORTED_OPTION instead
pliden
parents: 37216
diff changeset
   743
    FLAG_SET_DEFAULT(opt, false);                        \
45e69c7b0bac 8152929: Remove UNSUPPORTED_GC_OPTION, use UNSUPPORTED_OPTION instead
pliden
parents: 37216
diff changeset
   744
  }                                                      \
28838
da47c3cc5c98 8067460: G1: TestResourceManagementFlagWithCommercialBuild.java failed on embedded platform
aharlap
parents: 28650
diff changeset
   745
} while(0)
da47c3cc5c98 8067460: G1: TestResourceManagementFlagWithCommercialBuild.java failed on embedded platform
aharlap
parents: 28650
diff changeset
   746
7397
5b173b4ca846 6989984: Use standard include model for Hospot
stefank
parents: 6988
diff changeset
   747
#endif // SHARE_VM_RUNTIME_ARGUMENTS_HPP