hotspot/src/share/vm/runtime/vm_version.cpp
author coleenp
Wed, 20 Mar 2013 08:04:54 -0400
changeset 16430 882cddc35bec
parent 15432 9d976ca484d8
child 16358 ebf30634b326
permissions -rw-r--r--
8008217: CDS: Class data sharing limits the malloc heap on Solaris Summary: In 64bit VM move CDS archive address to 32G on all platforms using new flag SharedBaseAddress. In 32bit VM set CDS archive address to 3Gb on Linux and let other OSs pick the address. Reviewed-by: kvn, dcubed, zgu, hseigel
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
1
489c9b5090e2 Initial load
duke
parents:
diff changeset
     1
/*
15432
9d976ca484d8 8000692: Remove old KERNEL code
zgu
parents: 14572
diff changeset
     2
 * Copyright (c) 1998, 2013, 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: 5542
diff changeset
    19
 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
f4b087cbb361 6941466: Oracle rebranding changes for Hotspot repositories
trims
parents: 5542
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: 5542
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: 6470
diff changeset
    25
#include "precompiled.hpp"
5b173b4ca846 6989984: Use standard include model for Hospot
stefank
parents: 6470
diff changeset
    26
#include "memory/universe.hpp"
5b173b4ca846 6989984: Use standard include model for Hospot
stefank
parents: 6470
diff changeset
    27
#include "oops/oop.inline.hpp"
5b173b4ca846 6989984: Use standard include model for Hospot
stefank
parents: 6470
diff changeset
    28
#include "runtime/arguments.hpp"
5b173b4ca846 6989984: Use standard include model for Hospot
stefank
parents: 6470
diff changeset
    29
#ifdef TARGET_ARCH_x86
5b173b4ca846 6989984: Use standard include model for Hospot
stefank
parents: 6470
diff changeset
    30
# include "vm_version_x86.hpp"
5b173b4ca846 6989984: Use standard include model for Hospot
stefank
parents: 6470
diff changeset
    31
#endif
5b173b4ca846 6989984: Use standard include model for Hospot
stefank
parents: 6470
diff changeset
    32
#ifdef TARGET_ARCH_sparc
5b173b4ca846 6989984: Use standard include model for Hospot
stefank
parents: 6470
diff changeset
    33
# include "vm_version_sparc.hpp"
5b173b4ca846 6989984: Use standard include model for Hospot
stefank
parents: 6470
diff changeset
    34
#endif
5b173b4ca846 6989984: Use standard include model for Hospot
stefank
parents: 6470
diff changeset
    35
#ifdef TARGET_ARCH_zero
5b173b4ca846 6989984: Use standard include model for Hospot
stefank
parents: 6470
diff changeset
    36
# include "vm_version_zero.hpp"
5b173b4ca846 6989984: Use standard include model for Hospot
stefank
parents: 6470
diff changeset
    37
#endif
8107
78e5bd944384 7016023: Enable building ARM and PPC from src/closed repository
bobv
parents: 7397
diff changeset
    38
#ifdef TARGET_ARCH_arm
78e5bd944384 7016023: Enable building ARM and PPC from src/closed repository
bobv
parents: 7397
diff changeset
    39
# include "vm_version_arm.hpp"
78e5bd944384 7016023: Enable building ARM and PPC from src/closed repository
bobv
parents: 7397
diff changeset
    40
#endif
78e5bd944384 7016023: Enable building ARM and PPC from src/closed repository
bobv
parents: 7397
diff changeset
    41
#ifdef TARGET_ARCH_ppc
78e5bd944384 7016023: Enable building ARM and PPC from src/closed repository
bobv
parents: 7397
diff changeset
    42
# include "vm_version_ppc.hpp"
78e5bd944384 7016023: Enable building ARM and PPC from src/closed repository
bobv
parents: 7397
diff changeset
    43
#endif
1
489c9b5090e2 Initial load
duke
parents:
diff changeset
    44
489c9b5090e2 Initial load
duke
parents:
diff changeset
    45
const char* Abstract_VM_Version::_s_vm_release = Abstract_VM_Version::vm_release();
489c9b5090e2 Initial load
duke
parents:
diff changeset
    46
const char* Abstract_VM_Version::_s_internal_vm_info_string = Abstract_VM_Version::internal_vm_info_string();
489c9b5090e2 Initial load
duke
parents:
diff changeset
    47
bool Abstract_VM_Version::_supports_cx8 = false;
13886
8d82c4dfa722 7023898: Intrinsify AtomicLongFieldUpdater.getAndIncrement()
roland
parents: 11720
diff changeset
    48
bool Abstract_VM_Version::_supports_atomic_getset4 = false;
8d82c4dfa722 7023898: Intrinsify AtomicLongFieldUpdater.getAndIncrement()
roland
parents: 11720
diff changeset
    49
bool Abstract_VM_Version::_supports_atomic_getset8 = false;
8d82c4dfa722 7023898: Intrinsify AtomicLongFieldUpdater.getAndIncrement()
roland
parents: 11720
diff changeset
    50
bool Abstract_VM_Version::_supports_atomic_getadd4 = false;
8d82c4dfa722 7023898: Intrinsify AtomicLongFieldUpdater.getAndIncrement()
roland
parents: 11720
diff changeset
    51
bool Abstract_VM_Version::_supports_atomic_getadd8 = false;
1
489c9b5090e2 Initial load
duke
parents:
diff changeset
    52
unsigned int Abstract_VM_Version::_logical_processors_per_package = 1U;
10267
8bdeec886dc4 7079329: Adjust allocation prefetching for T4
kvn
parents: 8921
diff changeset
    53
int Abstract_VM_Version::_reserve_for_allocation_prefetch = 0;
1
489c9b5090e2 Initial load
duke
parents:
diff changeset
    54
489c9b5090e2 Initial load
duke
parents:
diff changeset
    55
#ifndef HOTSPOT_RELEASE_VERSION
489c9b5090e2 Initial load
duke
parents:
diff changeset
    56
  #error HOTSPOT_RELEASE_VERSION must be defined
489c9b5090e2 Initial load
duke
parents:
diff changeset
    57
#endif
489c9b5090e2 Initial load
duke
parents:
diff changeset
    58
#ifndef JRE_RELEASE_VERSION
489c9b5090e2 Initial load
duke
parents:
diff changeset
    59
  #error JRE_RELEASE_VERSION must be defined
489c9b5090e2 Initial load
duke
parents:
diff changeset
    60
#endif
489c9b5090e2 Initial load
duke
parents:
diff changeset
    61
#ifndef HOTSPOT_BUILD_TARGET
489c9b5090e2 Initial load
duke
parents:
diff changeset
    62
  #error HOTSPOT_BUILD_TARGET must be defined
489c9b5090e2 Initial load
duke
parents:
diff changeset
    63
#endif
489c9b5090e2 Initial load
duke
parents:
diff changeset
    64
489c9b5090e2 Initial load
duke
parents:
diff changeset
    65
#ifdef PRODUCT
489c9b5090e2 Initial load
duke
parents:
diff changeset
    66
  #define VM_RELEASE HOTSPOT_RELEASE_VERSION
489c9b5090e2 Initial load
duke
parents:
diff changeset
    67
#else
489c9b5090e2 Initial load
duke
parents:
diff changeset
    68
  #define VM_RELEASE HOTSPOT_RELEASE_VERSION "-" HOTSPOT_BUILD_TARGET
489c9b5090e2 Initial load
duke
parents:
diff changeset
    69
#endif
489c9b5090e2 Initial load
duke
parents:
diff changeset
    70
489c9b5090e2 Initial load
duke
parents:
diff changeset
    71
// HOTSPOT_RELEASE_VERSION must follow the release version naming convention
489c9b5090e2 Initial load
duke
parents:
diff changeset
    72
// <major_ver>.<minor_ver>-b<nn>[-<identifier>][-<debug_target>]
489c9b5090e2 Initial load
duke
parents:
diff changeset
    73
int Abstract_VM_Version::_vm_major_version = 0;
489c9b5090e2 Initial load
duke
parents:
diff changeset
    74
int Abstract_VM_Version::_vm_minor_version = 0;
489c9b5090e2 Initial load
duke
parents:
diff changeset
    75
int Abstract_VM_Version::_vm_build_number = 0;
489c9b5090e2 Initial load
duke
parents:
diff changeset
    76
bool Abstract_VM_Version::_initialized = false;
183
ba55c7f3fd45 6362677: Change parallel GC collector default number of parallel GC threads.
jmasa
parents: 1
diff changeset
    77
int Abstract_VM_Version::_parallel_worker_threads = 0;
ba55c7f3fd45 6362677: Change parallel GC collector default number of parallel GC threads.
jmasa
parents: 1
diff changeset
    78
bool Abstract_VM_Version::_parallel_worker_threads_initialized = false;
1
489c9b5090e2 Initial load
duke
parents:
diff changeset
    79
489c9b5090e2 Initial load
duke
parents:
diff changeset
    80
void Abstract_VM_Version::initialize() {
489c9b5090e2 Initial load
duke
parents:
diff changeset
    81
  if (_initialized) {
489c9b5090e2 Initial load
duke
parents:
diff changeset
    82
    return;
489c9b5090e2 Initial load
duke
parents:
diff changeset
    83
  }
489c9b5090e2 Initial load
duke
parents:
diff changeset
    84
  char* vm_version = os::strdup(HOTSPOT_RELEASE_VERSION);
489c9b5090e2 Initial load
duke
parents:
diff changeset
    85
489c9b5090e2 Initial load
duke
parents:
diff changeset
    86
  // Expecting the next vm_version format:
489c9b5090e2 Initial load
duke
parents:
diff changeset
    87
  // <major_ver>.<minor_ver>-b<nn>[-<identifier>]
489c9b5090e2 Initial load
duke
parents:
diff changeset
    88
  char* vm_major_ver = vm_version;
489c9b5090e2 Initial load
duke
parents:
diff changeset
    89
  assert(isdigit(vm_major_ver[0]),"wrong vm major version number");
489c9b5090e2 Initial load
duke
parents:
diff changeset
    90
  char* vm_minor_ver = strchr(vm_major_ver, '.');
489c9b5090e2 Initial load
duke
parents:
diff changeset
    91
  assert(vm_minor_ver != NULL && isdigit(vm_minor_ver[1]),"wrong vm minor version number");
489c9b5090e2 Initial load
duke
parents:
diff changeset
    92
  vm_minor_ver[0] = '\0'; // terminate vm_major_ver
489c9b5090e2 Initial load
duke
parents:
diff changeset
    93
  vm_minor_ver += 1;
489c9b5090e2 Initial load
duke
parents:
diff changeset
    94
  char* vm_build_num = strchr(vm_minor_ver, '-');
489c9b5090e2 Initial load
duke
parents:
diff changeset
    95
  assert(vm_build_num != NULL && vm_build_num[1] == 'b' && isdigit(vm_build_num[2]),"wrong vm build number");
489c9b5090e2 Initial load
duke
parents:
diff changeset
    96
  vm_build_num[0] = '\0'; // terminate vm_minor_ver
489c9b5090e2 Initial load
duke
parents:
diff changeset
    97
  vm_build_num += 2;
489c9b5090e2 Initial load
duke
parents:
diff changeset
    98
489c9b5090e2 Initial load
duke
parents:
diff changeset
    99
  _vm_major_version = atoi(vm_major_ver);
489c9b5090e2 Initial load
duke
parents:
diff changeset
   100
  _vm_minor_version = atoi(vm_minor_ver);
489c9b5090e2 Initial load
duke
parents:
diff changeset
   101
  _vm_build_number  = atoi(vm_build_num);
489c9b5090e2 Initial load
duke
parents:
diff changeset
   102
489c9b5090e2 Initial load
duke
parents:
diff changeset
   103
  os::free(vm_version);
489c9b5090e2 Initial load
duke
parents:
diff changeset
   104
  _initialized = true;
489c9b5090e2 Initial load
duke
parents:
diff changeset
   105
}
489c9b5090e2 Initial load
duke
parents:
diff changeset
   106
489c9b5090e2 Initial load
duke
parents:
diff changeset
   107
#if defined(_LP64)
489c9b5090e2 Initial load
duke
parents:
diff changeset
   108
  #define VMLP "64-Bit "
489c9b5090e2 Initial load
duke
parents:
diff changeset
   109
#else
489c9b5090e2 Initial load
duke
parents:
diff changeset
   110
  #define VMLP ""
489c9b5090e2 Initial load
duke
parents:
diff changeset
   111
#endif
489c9b5090e2 Initial load
duke
parents:
diff changeset
   112
13975
2f7431485cfa 7189254: Change makefiles for more flexibility to override defaults
jprovino
parents: 13886
diff changeset
   113
#ifndef VMTYPE
2f7431485cfa 7189254: Change makefiles for more flexibility to override defaults
jprovino
parents: 13886
diff changeset
   114
  #ifdef TIERED
2f7431485cfa 7189254: Change makefiles for more flexibility to override defaults
jprovino
parents: 13886
diff changeset
   115
    #define VMTYPE "Server"
2f7431485cfa 7189254: Change makefiles for more flexibility to override defaults
jprovino
parents: 13886
diff changeset
   116
  #else // TIERED
2f7431485cfa 7189254: Change makefiles for more flexibility to override defaults
jprovino
parents: 13886
diff changeset
   117
  #ifdef ZERO
2f7431485cfa 7189254: Change makefiles for more flexibility to override defaults
jprovino
parents: 13886
diff changeset
   118
  #ifdef SHARK
2f7431485cfa 7189254: Change makefiles for more flexibility to override defaults
jprovino
parents: 13886
diff changeset
   119
    #define VMTYPE "Shark"
2f7431485cfa 7189254: Change makefiles for more flexibility to override defaults
jprovino
parents: 13886
diff changeset
   120
  #else // SHARK
2f7431485cfa 7189254: Change makefiles for more flexibility to override defaults
jprovino
parents: 13886
diff changeset
   121
    #define VMTYPE "Zero"
2f7431485cfa 7189254: Change makefiles for more flexibility to override defaults
jprovino
parents: 13886
diff changeset
   122
  #endif // SHARK
2f7431485cfa 7189254: Change makefiles for more flexibility to override defaults
jprovino
parents: 13886
diff changeset
   123
  #else // ZERO
2f7431485cfa 7189254: Change makefiles for more flexibility to override defaults
jprovino
parents: 13886
diff changeset
   124
     #define VMTYPE COMPILER1_PRESENT("Client")   \
2f7431485cfa 7189254: Change makefiles for more flexibility to override defaults
jprovino
parents: 13886
diff changeset
   125
                    COMPILER2_PRESENT("Server")
2f7431485cfa 7189254: Change makefiles for more flexibility to override defaults
jprovino
parents: 13886
diff changeset
   126
  #endif // ZERO
2f7431485cfa 7189254: Change makefiles for more flexibility to override defaults
jprovino
parents: 13886
diff changeset
   127
  #endif // TIERED
2f7431485cfa 7189254: Change makefiles for more flexibility to override defaults
jprovino
parents: 13886
diff changeset
   128
#endif
1
489c9b5090e2 Initial load
duke
parents:
diff changeset
   129
489c9b5090e2 Initial load
duke
parents:
diff changeset
   130
#ifndef HOTSPOT_VM_DISTRO
489c9b5090e2 Initial load
duke
parents:
diff changeset
   131
  #error HOTSPOT_VM_DISTRO must be defined
489c9b5090e2 Initial load
duke
parents:
diff changeset
   132
#endif
10738
cc19612c6b9f 7096278: Update the VM name to indicate it is an embedded build
dholmes
parents: 10565
diff changeset
   133
#define VMNAME HOTSPOT_VM_DISTRO " " VMLP EMBEDDED_ONLY("Embedded ") VMTYPE " VM"
1
489c9b5090e2 Initial load
duke
parents:
diff changeset
   134
489c9b5090e2 Initial load
duke
parents:
diff changeset
   135
const char* Abstract_VM_Version::vm_name() {
489c9b5090e2 Initial load
duke
parents:
diff changeset
   136
  return VMNAME;
489c9b5090e2 Initial load
duke
parents:
diff changeset
   137
}
489c9b5090e2 Initial load
duke
parents:
diff changeset
   138
489c9b5090e2 Initial load
duke
parents:
diff changeset
   139
489c9b5090e2 Initial load
duke
parents:
diff changeset
   140
const char* Abstract_VM_Version::vm_vendor() {
489c9b5090e2 Initial load
duke
parents:
diff changeset
   141
#ifdef VENDOR
489c9b5090e2 Initial load
duke
parents:
diff changeset
   142
  return XSTR(VENDOR);
489c9b5090e2 Initial load
duke
parents:
diff changeset
   143
#else
6470
829a79f301ad 6981753: Rebrand vm vendor property settings
zgu
parents: 6187
diff changeset
   144
  return JDK_Version::is_gte_jdk17x_version() ?
829a79f301ad 6981753: Rebrand vm vendor property settings
zgu
parents: 6187
diff changeset
   145
    "Oracle Corporation" : "Sun Microsystems Inc.";
1
489c9b5090e2 Initial load
duke
parents:
diff changeset
   146
#endif
489c9b5090e2 Initial load
duke
parents:
diff changeset
   147
}
489c9b5090e2 Initial load
duke
parents:
diff changeset
   148
489c9b5090e2 Initial load
duke
parents:
diff changeset
   149
489c9b5090e2 Initial load
duke
parents:
diff changeset
   150
const char* Abstract_VM_Version::vm_info_string() {
489c9b5090e2 Initial load
duke
parents:
diff changeset
   151
  switch (Arguments::mode()) {
489c9b5090e2 Initial load
duke
parents:
diff changeset
   152
    case Arguments::_int:
489c9b5090e2 Initial load
duke
parents:
diff changeset
   153
      return UseSharedSpaces ? "interpreted mode, sharing" : "interpreted mode";
489c9b5090e2 Initial load
duke
parents:
diff changeset
   154
    case Arguments::_mixed:
489c9b5090e2 Initial load
duke
parents:
diff changeset
   155
      return UseSharedSpaces ? "mixed mode, sharing"       :  "mixed mode";
489c9b5090e2 Initial load
duke
parents:
diff changeset
   156
    case Arguments::_comp:
489c9b5090e2 Initial load
duke
parents:
diff changeset
   157
      return UseSharedSpaces ? "compiled mode, sharing"    : "compiled mode";
489c9b5090e2 Initial load
duke
parents:
diff changeset
   158
  };
489c9b5090e2 Initial load
duke
parents:
diff changeset
   159
  ShouldNotReachHere();
489c9b5090e2 Initial load
duke
parents:
diff changeset
   160
  return "";
489c9b5090e2 Initial load
duke
parents:
diff changeset
   161
}
489c9b5090e2 Initial load
duke
parents:
diff changeset
   162
489c9b5090e2 Initial load
duke
parents:
diff changeset
   163
// NOTE: do *not* use stringStream. this function is called by
489c9b5090e2 Initial load
duke
parents:
diff changeset
   164
//       fatal error handler. if the crash is in native thread,
489c9b5090e2 Initial load
duke
parents:
diff changeset
   165
//       stringStream cannot get resource allocated and will SEGV.
489c9b5090e2 Initial load
duke
parents:
diff changeset
   166
const char* Abstract_VM_Version::vm_release() {
489c9b5090e2 Initial load
duke
parents:
diff changeset
   167
  return VM_RELEASE;
489c9b5090e2 Initial load
duke
parents:
diff changeset
   168
}
489c9b5090e2 Initial load
duke
parents:
diff changeset
   169
11720
b20268d74484 7132779: build-infra merge: Enable ccache to work for most developer builds.
ohrstrom
parents: 10738
diff changeset
   170
// NOTE: do *not* use stringStream. this function is called by
b20268d74484 7132779: build-infra merge: Enable ccache to work for most developer builds.
ohrstrom
parents: 10738
diff changeset
   171
//       fatal error handlers. if the crash is in native thread,
b20268d74484 7132779: build-infra merge: Enable ccache to work for most developer builds.
ohrstrom
parents: 10738
diff changeset
   172
//       stringStream cannot get resource allocated and will SEGV.
b20268d74484 7132779: build-infra merge: Enable ccache to work for most developer builds.
ohrstrom
parents: 10738
diff changeset
   173
const char* Abstract_VM_Version::jre_release_version() {
b20268d74484 7132779: build-infra merge: Enable ccache to work for most developer builds.
ohrstrom
parents: 10738
diff changeset
   174
  return JRE_RELEASE_VERSION;
b20268d74484 7132779: build-infra merge: Enable ccache to work for most developer builds.
ohrstrom
parents: 10738
diff changeset
   175
}
b20268d74484 7132779: build-infra merge: Enable ccache to work for most developer builds.
ohrstrom
parents: 10738
diff changeset
   176
1
489c9b5090e2 Initial load
duke
parents:
diff changeset
   177
#define OS       LINUX_ONLY("linux")             \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   178
                 WINDOWS_ONLY("windows")         \
10565
dc90c239f4ec 7089790: integrate bsd-port changes
never
parents: 10267
diff changeset
   179
                 SOLARIS_ONLY("solaris")         \
dc90c239f4ec 7089790: integrate bsd-port changes
never
parents: 10267
diff changeset
   180
                 BSD_ONLY("bsd")
1
489c9b5090e2 Initial load
duke
parents:
diff changeset
   181
4013
b154310845de 6890308: integrate zero assembler hotspot changes
never
parents: 3261
diff changeset
   182
#ifdef ZERO
b154310845de 6890308: integrate zero assembler hotspot changes
never
parents: 3261
diff changeset
   183
#define CPU      ZERO_LIBARCH
b154310845de 6890308: integrate zero assembler hotspot changes
never
parents: 3261
diff changeset
   184
#else
1
489c9b5090e2 Initial load
duke
parents:
diff changeset
   185
#define CPU      IA32_ONLY("x86")                \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   186
                 IA64_ONLY("ia64")               \
489c9b5090e2 Initial load
duke
parents:
diff changeset
   187
                 AMD64_ONLY("amd64")             \
6176
4d9030fe341f 6953477: Increase portability and flexibility of building Hotspot
bobv
parents: 5547
diff changeset
   188
                 ARM_ONLY("arm")                 \
4d9030fe341f 6953477: Increase portability and flexibility of building Hotspot
bobv
parents: 5547
diff changeset
   189
                 PPC_ONLY("ppc")                 \
1
489c9b5090e2 Initial load
duke
parents:
diff changeset
   190
                 SPARC_ONLY("sparc")
4013
b154310845de 6890308: integrate zero assembler hotspot changes
never
parents: 3261
diff changeset
   191
#endif // ZERO
1
489c9b5090e2 Initial load
duke
parents:
diff changeset
   192
489c9b5090e2 Initial load
duke
parents:
diff changeset
   193
const char *Abstract_VM_Version::vm_platform_string() {
489c9b5090e2 Initial load
duke
parents:
diff changeset
   194
  return OS "-" CPU;
489c9b5090e2 Initial load
duke
parents:
diff changeset
   195
}
489c9b5090e2 Initial load
duke
parents:
diff changeset
   196
489c9b5090e2 Initial load
duke
parents:
diff changeset
   197
const char* Abstract_VM_Version::internal_vm_info_string() {
489c9b5090e2 Initial load
duke
parents:
diff changeset
   198
  #ifndef HOTSPOT_BUILD_USER
489c9b5090e2 Initial load
duke
parents:
diff changeset
   199
    #define HOTSPOT_BUILD_USER unknown
489c9b5090e2 Initial load
duke
parents:
diff changeset
   200
  #endif
489c9b5090e2 Initial load
duke
parents:
diff changeset
   201
489c9b5090e2 Initial load
duke
parents:
diff changeset
   202
  #ifndef HOTSPOT_BUILD_COMPILER
489c9b5090e2 Initial load
duke
parents:
diff changeset
   203
    #ifdef _MSC_VER
489c9b5090e2 Initial load
duke
parents:
diff changeset
   204
      #if   _MSC_VER == 1100
489c9b5090e2 Initial load
duke
parents:
diff changeset
   205
        #define HOTSPOT_BUILD_COMPILER "MS VC++ 5.0"
489c9b5090e2 Initial load
duke
parents:
diff changeset
   206
      #elif _MSC_VER == 1200
489c9b5090e2 Initial load
duke
parents:
diff changeset
   207
        #define HOTSPOT_BUILD_COMPILER "MS VC++ 6.0"
489c9b5090e2 Initial load
duke
parents:
diff changeset
   208
      #elif _MSC_VER == 1310
2257
d8e6e11e7f32 6816308: Changes to allow builds with latest Windows SDK 6.1 on 64bit Windows 2003
kvn
parents: 670
diff changeset
   209
        #define HOTSPOT_BUILD_COMPILER "MS VC++ 7.1 (VS2003)"
1
489c9b5090e2 Initial load
duke
parents:
diff changeset
   210
      #elif _MSC_VER == 1400
2257
d8e6e11e7f32 6816308: Changes to allow builds with latest Windows SDK 6.1 on 64bit Windows 2003
kvn
parents: 670
diff changeset
   211
        #define HOTSPOT_BUILD_COMPILER "MS VC++ 8.0 (VS2005)"
d8e6e11e7f32 6816308: Changes to allow builds with latest Windows SDK 6.1 on 64bit Windows 2003
kvn
parents: 670
diff changeset
   212
      #elif _MSC_VER == 1500
d8e6e11e7f32 6816308: Changes to allow builds with latest Windows SDK 6.1 on 64bit Windows 2003
kvn
parents: 670
diff changeset
   213
        #define HOTSPOT_BUILD_COMPILER "MS VC++ 9.0 (VS2008)"
1
489c9b5090e2 Initial load
duke
parents:
diff changeset
   214
      #else
489c9b5090e2 Initial load
duke
parents:
diff changeset
   215
        #define HOTSPOT_BUILD_COMPILER "unknown MS VC++:" XSTR(_MSC_VER)
489c9b5090e2 Initial load
duke
parents:
diff changeset
   216
      #endif
489c9b5090e2 Initial load
duke
parents:
diff changeset
   217
    #elif defined(__SUNPRO_CC)
489c9b5090e2 Initial load
duke
parents:
diff changeset
   218
      #if   __SUNPRO_CC == 0x420
489c9b5090e2 Initial load
duke
parents:
diff changeset
   219
        #define HOTSPOT_BUILD_COMPILER "Workshop 4.2"
489c9b5090e2 Initial load
duke
parents:
diff changeset
   220
      #elif __SUNPRO_CC == 0x500
489c9b5090e2 Initial load
duke
parents:
diff changeset
   221
        #define HOTSPOT_BUILD_COMPILER "Workshop 5.0 compat=" XSTR(__SUNPRO_CC_COMPAT)
489c9b5090e2 Initial load
duke
parents:
diff changeset
   222
      #elif __SUNPRO_CC == 0x520
489c9b5090e2 Initial load
duke
parents:
diff changeset
   223
        #define HOTSPOT_BUILD_COMPILER "Workshop 5.2 compat=" XSTR(__SUNPRO_CC_COMPAT)
489c9b5090e2 Initial load
duke
parents:
diff changeset
   224
      #elif __SUNPRO_CC == 0x580
489c9b5090e2 Initial load
duke
parents:
diff changeset
   225
        #define HOTSPOT_BUILD_COMPILER "Workshop 5.8"
489c9b5090e2 Initial load
duke
parents:
diff changeset
   226
      #elif __SUNPRO_CC == 0x590
489c9b5090e2 Initial load
duke
parents:
diff changeset
   227
        #define HOTSPOT_BUILD_COMPILER "Workshop 5.9"
5542
be05c5ffe905 6951319: enable solaris builds using Sun Studio 12 update 1
jcoomes
parents: 4013
diff changeset
   228
      #elif __SUNPRO_CC == 0x5100
be05c5ffe905 6951319: enable solaris builds using Sun Studio 12 update 1
jcoomes
parents: 4013
diff changeset
   229
        #define HOTSPOT_BUILD_COMPILER "Sun Studio 12u1"
1
489c9b5090e2 Initial load
duke
parents:
diff changeset
   230
      #else
489c9b5090e2 Initial load
duke
parents:
diff changeset
   231
        #define HOTSPOT_BUILD_COMPILER "unknown Workshop:" XSTR(__SUNPRO_CC)
489c9b5090e2 Initial load
duke
parents:
diff changeset
   232
      #endif
489c9b5090e2 Initial load
duke
parents:
diff changeset
   233
    #elif defined(__GNUC__)
489c9b5090e2 Initial load
duke
parents:
diff changeset
   234
        #define HOTSPOT_BUILD_COMPILER "gcc " __VERSION__
489c9b5090e2 Initial load
duke
parents:
diff changeset
   235
    #else
489c9b5090e2 Initial load
duke
parents:
diff changeset
   236
      #define HOTSPOT_BUILD_COMPILER "unknown compiler"
489c9b5090e2 Initial load
duke
parents:
diff changeset
   237
    #endif
489c9b5090e2 Initial load
duke
parents:
diff changeset
   238
  #endif
489c9b5090e2 Initial load
duke
parents:
diff changeset
   239
8107
78e5bd944384 7016023: Enable building ARM and PPC from src/closed repository
bobv
parents: 7397
diff changeset
   240
  #ifndef FLOAT_ARCH
78e5bd944384 7016023: Enable building ARM and PPC from src/closed repository
bobv
parents: 7397
diff changeset
   241
    #if defined(__SOFTFP__)
14572
62c896e036da 8003591: Abstract_VM_Version::internal_vm_info_string needs to stringify FLOAT_ARCH for ease of use
dholmes
parents: 13977
diff changeset
   242
      #define FLOAT_ARCH_STR "-sflt"
8107
78e5bd944384 7016023: Enable building ARM and PPC from src/closed repository
bobv
parents: 7397
diff changeset
   243
    #elif defined(E500V2)
14572
62c896e036da 8003591: Abstract_VM_Version::internal_vm_info_string needs to stringify FLOAT_ARCH for ease of use
dholmes
parents: 13977
diff changeset
   244
      #define FLOAT_ARCH_STR "-e500v2"
8107
78e5bd944384 7016023: Enable building ARM and PPC from src/closed repository
bobv
parents: 7397
diff changeset
   245
    #elif defined(ARM)
14572
62c896e036da 8003591: Abstract_VM_Version::internal_vm_info_string needs to stringify FLOAT_ARCH for ease of use
dholmes
parents: 13977
diff changeset
   246
      #define FLOAT_ARCH_STR "-vfp"
8107
78e5bd944384 7016023: Enable building ARM and PPC from src/closed repository
bobv
parents: 7397
diff changeset
   247
    #elif defined(PPC)
14572
62c896e036da 8003591: Abstract_VM_Version::internal_vm_info_string needs to stringify FLOAT_ARCH for ease of use
dholmes
parents: 13977
diff changeset
   248
      #define FLOAT_ARCH_STR "-hflt"
8107
78e5bd944384 7016023: Enable building ARM and PPC from src/closed repository
bobv
parents: 7397
diff changeset
   249
    #else
14572
62c896e036da 8003591: Abstract_VM_Version::internal_vm_info_string needs to stringify FLOAT_ARCH for ease of use
dholmes
parents: 13977
diff changeset
   250
      #define FLOAT_ARCH_STR ""
8107
78e5bd944384 7016023: Enable building ARM and PPC from src/closed repository
bobv
parents: 7397
diff changeset
   251
    #endif
14572
62c896e036da 8003591: Abstract_VM_Version::internal_vm_info_string needs to stringify FLOAT_ARCH for ease of use
dholmes
parents: 13977
diff changeset
   252
  #else
62c896e036da 8003591: Abstract_VM_Version::internal_vm_info_string needs to stringify FLOAT_ARCH for ease of use
dholmes
parents: 13977
diff changeset
   253
    #define FLOAT_ARCH_STR XSTR(FLOAT_ARCH)
8107
78e5bd944384 7016023: Enable building ARM and PPC from src/closed repository
bobv
parents: 7397
diff changeset
   254
  #endif
1
489c9b5090e2 Initial load
duke
parents:
diff changeset
   255
14572
62c896e036da 8003591: Abstract_VM_Version::internal_vm_info_string needs to stringify FLOAT_ARCH for ease of use
dholmes
parents: 13977
diff changeset
   256
  return VMNAME " (" VM_RELEASE ") for " OS "-" CPU FLOAT_ARCH_STR
1
489c9b5090e2 Initial load
duke
parents:
diff changeset
   257
         " JRE (" JRE_RELEASE_VERSION "), built on " __DATE__ " " __TIME__
489c9b5090e2 Initial load
duke
parents:
diff changeset
   258
         " by " XSTR(HOTSPOT_BUILD_USER) " with " HOTSPOT_BUILD_COMPILER;
489c9b5090e2 Initial load
duke
parents:
diff changeset
   259
}
489c9b5090e2 Initial load
duke
parents:
diff changeset
   260
8114
340b5b8b544b 7003401: Implement VM error-reporting functionality on erroneous termination
kamg
parents: 8107
diff changeset
   261
const char *Abstract_VM_Version::vm_build_user() {
340b5b8b544b 7003401: Implement VM error-reporting functionality on erroneous termination
kamg
parents: 8107
diff changeset
   262
  return HOTSPOT_BUILD_USER;
340b5b8b544b 7003401: Implement VM error-reporting functionality on erroneous termination
kamg
parents: 8107
diff changeset
   263
}
340b5b8b544b 7003401: Implement VM error-reporting functionality on erroneous termination
kamg
parents: 8107
diff changeset
   264
1
489c9b5090e2 Initial load
duke
parents:
diff changeset
   265
unsigned int Abstract_VM_Version::jvm_version() {
489c9b5090e2 Initial load
duke
parents:
diff changeset
   266
  return ((Abstract_VM_Version::vm_major_version() & 0xFF) << 24) |
489c9b5090e2 Initial load
duke
parents:
diff changeset
   267
         ((Abstract_VM_Version::vm_minor_version() & 0xFF) << 16) |
489c9b5090e2 Initial load
duke
parents:
diff changeset
   268
         (Abstract_VM_Version::vm_build_number() & 0xFF);
489c9b5090e2 Initial load
duke
parents:
diff changeset
   269
}
489c9b5090e2 Initial load
duke
parents:
diff changeset
   270
489c9b5090e2 Initial load
duke
parents:
diff changeset
   271
489c9b5090e2 Initial load
duke
parents:
diff changeset
   272
void VM_Version_init() {
489c9b5090e2 Initial load
duke
parents:
diff changeset
   273
  VM_Version::initialize();
489c9b5090e2 Initial load
duke
parents:
diff changeset
   274
489c9b5090e2 Initial load
duke
parents:
diff changeset
   275
#ifndef PRODUCT
489c9b5090e2 Initial load
duke
parents:
diff changeset
   276
  if (PrintMiscellaneous && Verbose) {
489c9b5090e2 Initial load
duke
parents:
diff changeset
   277
    os::print_cpu_info(tty);
489c9b5090e2 Initial load
duke
parents:
diff changeset
   278
  }
489c9b5090e2 Initial load
duke
parents:
diff changeset
   279
#endif
489c9b5090e2 Initial load
duke
parents:
diff changeset
   280
}
183
ba55c7f3fd45 6362677: Change parallel GC collector default number of parallel GC threads.
jmasa
parents: 1
diff changeset
   281
ba55c7f3fd45 6362677: Change parallel GC collector default number of parallel GC threads.
jmasa
parents: 1
diff changeset
   282
unsigned int Abstract_VM_Version::nof_parallel_worker_threads(
ba55c7f3fd45 6362677: Change parallel GC collector default number of parallel GC threads.
jmasa
parents: 1
diff changeset
   283
                                                      unsigned int num,
ba55c7f3fd45 6362677: Change parallel GC collector default number of parallel GC threads.
jmasa
parents: 1
diff changeset
   284
                                                      unsigned int den,
ba55c7f3fd45 6362677: Change parallel GC collector default number of parallel GC threads.
jmasa
parents: 1
diff changeset
   285
                                                      unsigned int switch_pt) {
ba55c7f3fd45 6362677: Change parallel GC collector default number of parallel GC threads.
jmasa
parents: 1
diff changeset
   286
  if (FLAG_IS_DEFAULT(ParallelGCThreads)) {
ba55c7f3fd45 6362677: Change parallel GC collector default number of parallel GC threads.
jmasa
parents: 1
diff changeset
   287
    assert(ParallelGCThreads == 0, "Default ParallelGCThreads is not 0");
ba55c7f3fd45 6362677: Change parallel GC collector default number of parallel GC threads.
jmasa
parents: 1
diff changeset
   288
    // For very large machines, there are diminishing returns
ba55c7f3fd45 6362677: Change parallel GC collector default number of parallel GC threads.
jmasa
parents: 1
diff changeset
   289
    // for large numbers of worker threads.  Instead of
ba55c7f3fd45 6362677: Change parallel GC collector default number of parallel GC threads.
jmasa
parents: 1
diff changeset
   290
    // hogging the whole system, use a fraction of the workers for every
ba55c7f3fd45 6362677: Change parallel GC collector default number of parallel GC threads.
jmasa
parents: 1
diff changeset
   291
    // processor after the first 8.  For example, on a 72 cpu machine
ba55c7f3fd45 6362677: Change parallel GC collector default number of parallel GC threads.
jmasa
parents: 1
diff changeset
   292
    // and a chosen fraction of 5/8
ba55c7f3fd45 6362677: Change parallel GC collector default number of parallel GC threads.
jmasa
parents: 1
diff changeset
   293
    // use 8 + (72 - 8) * (5/8) == 48 worker threads.
ba55c7f3fd45 6362677: Change parallel GC collector default number of parallel GC threads.
jmasa
parents: 1
diff changeset
   294
    unsigned int ncpus = (unsigned int) os::active_processor_count();
ba55c7f3fd45 6362677: Change parallel GC collector default number of parallel GC threads.
jmasa
parents: 1
diff changeset
   295
    return (ncpus <= switch_pt) ?
ba55c7f3fd45 6362677: Change parallel GC collector default number of parallel GC threads.
jmasa
parents: 1
diff changeset
   296
           ncpus :
ba55c7f3fd45 6362677: Change parallel GC collector default number of parallel GC threads.
jmasa
parents: 1
diff changeset
   297
          (switch_pt + ((ncpus - switch_pt) * num) / den);
ba55c7f3fd45 6362677: Change parallel GC collector default number of parallel GC threads.
jmasa
parents: 1
diff changeset
   298
  } else {
ba55c7f3fd45 6362677: Change parallel GC collector default number of parallel GC threads.
jmasa
parents: 1
diff changeset
   299
    return ParallelGCThreads;
ba55c7f3fd45 6362677: Change parallel GC collector default number of parallel GC threads.
jmasa
parents: 1
diff changeset
   300
  }
ba55c7f3fd45 6362677: Change parallel GC collector default number of parallel GC threads.
jmasa
parents: 1
diff changeset
   301
}
ba55c7f3fd45 6362677: Change parallel GC collector default number of parallel GC threads.
jmasa
parents: 1
diff changeset
   302
ba55c7f3fd45 6362677: Change parallel GC collector default number of parallel GC threads.
jmasa
parents: 1
diff changeset
   303
unsigned int Abstract_VM_Version::calc_parallel_worker_threads() {
ba55c7f3fd45 6362677: Change parallel GC collector default number of parallel GC threads.
jmasa
parents: 1
diff changeset
   304
  return nof_parallel_worker_threads(5, 8, 8);
ba55c7f3fd45 6362677: Change parallel GC collector default number of parallel GC threads.
jmasa
parents: 1
diff changeset
   305
}
ba55c7f3fd45 6362677: Change parallel GC collector default number of parallel GC threads.
jmasa
parents: 1
diff changeset
   306
ba55c7f3fd45 6362677: Change parallel GC collector default number of parallel GC threads.
jmasa
parents: 1
diff changeset
   307
ba55c7f3fd45 6362677: Change parallel GC collector default number of parallel GC threads.
jmasa
parents: 1
diff changeset
   308
// Does not set the _initialized flag since it is
ba55c7f3fd45 6362677: Change parallel GC collector default number of parallel GC threads.
jmasa
parents: 1
diff changeset
   309
// a global flag.
ba55c7f3fd45 6362677: Change parallel GC collector default number of parallel GC threads.
jmasa
parents: 1
diff changeset
   310
unsigned int Abstract_VM_Version::parallel_worker_threads() {
ba55c7f3fd45 6362677: Change parallel GC collector default number of parallel GC threads.
jmasa
parents: 1
diff changeset
   311
  if (!_parallel_worker_threads_initialized) {
ba55c7f3fd45 6362677: Change parallel GC collector default number of parallel GC threads.
jmasa
parents: 1
diff changeset
   312
    if (FLAG_IS_DEFAULT(ParallelGCThreads)) {
ba55c7f3fd45 6362677: Change parallel GC collector default number of parallel GC threads.
jmasa
parents: 1
diff changeset
   313
      _parallel_worker_threads = VM_Version::calc_parallel_worker_threads();
ba55c7f3fd45 6362677: Change parallel GC collector default number of parallel GC threads.
jmasa
parents: 1
diff changeset
   314
    } else {
ba55c7f3fd45 6362677: Change parallel GC collector default number of parallel GC threads.
jmasa
parents: 1
diff changeset
   315
      _parallel_worker_threads = ParallelGCThreads;
ba55c7f3fd45 6362677: Change parallel GC collector default number of parallel GC threads.
jmasa
parents: 1
diff changeset
   316
    }
ba55c7f3fd45 6362677: Change parallel GC collector default number of parallel GC threads.
jmasa
parents: 1
diff changeset
   317
    _parallel_worker_threads_initialized = true;
ba55c7f3fd45 6362677: Change parallel GC collector default number of parallel GC threads.
jmasa
parents: 1
diff changeset
   318
  }
ba55c7f3fd45 6362677: Change parallel GC collector default number of parallel GC threads.
jmasa
parents: 1
diff changeset
   319
  return _parallel_worker_threads;
ba55c7f3fd45 6362677: Change parallel GC collector default number of parallel GC threads.
jmasa
parents: 1
diff changeset
   320
}