Mercurial > hg > graal-jvmci-8
diff src/share/vm/runtime/vm_version.cpp @ 0:a61af66fc99e jdk7-b24
Initial load
author | duke |
---|---|
date | Sat, 01 Dec 2007 00:00:00 +0000 |
parents | |
children | 28372612af5e |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/share/vm/runtime/vm_version.cpp Sat Dec 01 00:00:00 2007 +0000 @@ -0,0 +1,212 @@ +/* + * Copyright 1998-2007 Sun Microsystems, Inc. All Rights Reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara, + * CA 95054 USA or visit www.sun.com if you need additional information or + * have any questions. + * + */ + +# include "incls/_precompiled.incl" +# include "incls/_vm_version.cpp.incl" + +const char* Abstract_VM_Version::_s_vm_release = Abstract_VM_Version::vm_release(); +const char* Abstract_VM_Version::_s_internal_vm_info_string = Abstract_VM_Version::internal_vm_info_string(); +bool Abstract_VM_Version::_supports_cx8 = false; +unsigned int Abstract_VM_Version::_logical_processors_per_package = 1U; + +#ifndef HOTSPOT_RELEASE_VERSION + #error HOTSPOT_RELEASE_VERSION must be defined +#endif +#ifndef JRE_RELEASE_VERSION + #error JRE_RELEASE_VERSION must be defined +#endif +#ifndef HOTSPOT_BUILD_TARGET + #error HOTSPOT_BUILD_TARGET must be defined +#endif + +#ifdef PRODUCT + #define VM_RELEASE HOTSPOT_RELEASE_VERSION +#else + #define VM_RELEASE HOTSPOT_RELEASE_VERSION "-" HOTSPOT_BUILD_TARGET +#endif + +// HOTSPOT_RELEASE_VERSION must follow the release version naming convention +// <major_ver>.<minor_ver>-b<nn>[-<identifier>][-<debug_target>] +int Abstract_VM_Version::_vm_major_version = 0; +int Abstract_VM_Version::_vm_minor_version = 0; +int Abstract_VM_Version::_vm_build_number = 0; +bool Abstract_VM_Version::_initialized = false; + +void Abstract_VM_Version::initialize() { + if (_initialized) { + return; + } + char* vm_version = os::strdup(HOTSPOT_RELEASE_VERSION); + + // Expecting the next vm_version format: + // <major_ver>.<minor_ver>-b<nn>[-<identifier>] + char* vm_major_ver = vm_version; + assert(isdigit(vm_major_ver[0]),"wrong vm major version number"); + char* vm_minor_ver = strchr(vm_major_ver, '.'); + assert(vm_minor_ver != NULL && isdigit(vm_minor_ver[1]),"wrong vm minor version number"); + vm_minor_ver[0] = '\0'; // terminate vm_major_ver + vm_minor_ver += 1; + char* vm_build_num = strchr(vm_minor_ver, '-'); + assert(vm_build_num != NULL && vm_build_num[1] == 'b' && isdigit(vm_build_num[2]),"wrong vm build number"); + vm_build_num[0] = '\0'; // terminate vm_minor_ver + vm_build_num += 2; + + _vm_major_version = atoi(vm_major_ver); + _vm_minor_version = atoi(vm_minor_ver); + _vm_build_number = atoi(vm_build_num); + + os::free(vm_version); + _initialized = true; +} + +#if defined(_LP64) + #define VMLP "64-Bit " +#else + #define VMLP "" +#endif + +#ifdef KERNEL + #define VMTYPE "Kernel" +#else // KERNEL +#ifdef TIERED + #define VMTYPE "Server" +#else + #define VMTYPE COMPILER1_PRESENT("Client") \ + COMPILER2_PRESENT("Server") +#endif // TIERED +#endif // KERNEL + +#ifndef HOTSPOT_VM_DISTRO + #error HOTSPOT_VM_DISTRO must be defined +#endif +#define VMNAME HOTSPOT_VM_DISTRO " " VMLP VMTYPE " VM" + +const char* Abstract_VM_Version::vm_name() { + return VMNAME; +} + + +const char* Abstract_VM_Version::vm_vendor() { +#ifdef VENDOR + return XSTR(VENDOR); +#else + return "Sun Microsystems Inc."; +#endif +} + + +const char* Abstract_VM_Version::vm_info_string() { + switch (Arguments::mode()) { + case Arguments::_int: + return UseSharedSpaces ? "interpreted mode, sharing" : "interpreted mode"; + case Arguments::_mixed: + return UseSharedSpaces ? "mixed mode, sharing" : "mixed mode"; + case Arguments::_comp: + return UseSharedSpaces ? "compiled mode, sharing" : "compiled mode"; + }; + ShouldNotReachHere(); + return ""; +} + +// NOTE: do *not* use stringStream. this function is called by +// fatal error handler. if the crash is in native thread, +// stringStream cannot get resource allocated and will SEGV. +const char* Abstract_VM_Version::vm_release() { + return VM_RELEASE; +} + +#define OS LINUX_ONLY("linux") \ + WINDOWS_ONLY("windows") \ + SOLARIS_ONLY("solaris") + +#define CPU IA32_ONLY("x86") \ + IA64_ONLY("ia64") \ + AMD64_ONLY("amd64") \ + SPARC_ONLY("sparc") + +const char *Abstract_VM_Version::vm_platform_string() { + return OS "-" CPU; +} + +const char* Abstract_VM_Version::internal_vm_info_string() { + #ifndef HOTSPOT_BUILD_USER + #define HOTSPOT_BUILD_USER unknown + #endif + + #ifndef HOTSPOT_BUILD_COMPILER + #ifdef _MSC_VER + #if _MSC_VER == 1100 + #define HOTSPOT_BUILD_COMPILER "MS VC++ 5.0" + #elif _MSC_VER == 1200 + #define HOTSPOT_BUILD_COMPILER "MS VC++ 6.0" + #elif _MSC_VER == 1310 + #define HOTSPOT_BUILD_COMPILER "MS VC++ 7.1" + #elif _MSC_VER == 1400 + #define HOTSPOT_BUILD_COMPILER "MS VC++ 8.0" + #else + #define HOTSPOT_BUILD_COMPILER "unknown MS VC++:" XSTR(_MSC_VER) + #endif + #elif defined(__SUNPRO_CC) + #if __SUNPRO_CC == 0x420 + #define HOTSPOT_BUILD_COMPILER "Workshop 4.2" + #elif __SUNPRO_CC == 0x500 + #define HOTSPOT_BUILD_COMPILER "Workshop 5.0 compat=" XSTR(__SUNPRO_CC_COMPAT) + #elif __SUNPRO_CC == 0x520 + #define HOTSPOT_BUILD_COMPILER "Workshop 5.2 compat=" XSTR(__SUNPRO_CC_COMPAT) + #elif __SUNPRO_CC == 0x580 + #define HOTSPOT_BUILD_COMPILER "Workshop 5.8" + #elif __SUNPRO_CC == 0x590 + #define HOTSPOT_BUILD_COMPILER "Workshop 5.9" + #else + #define HOTSPOT_BUILD_COMPILER "unknown Workshop:" XSTR(__SUNPRO_CC) + #endif + #elif defined(__GNUC__) + #define HOTSPOT_BUILD_COMPILER "gcc " __VERSION__ + #else + #define HOTSPOT_BUILD_COMPILER "unknown compiler" + #endif + #endif + + + return VMNAME " (" VM_RELEASE ") for " OS "-" CPU + " JRE (" JRE_RELEASE_VERSION "), built on " __DATE__ " " __TIME__ + " by " XSTR(HOTSPOT_BUILD_USER) " with " HOTSPOT_BUILD_COMPILER; +} + +unsigned int Abstract_VM_Version::jvm_version() { + return ((Abstract_VM_Version::vm_major_version() & 0xFF) << 24) | + ((Abstract_VM_Version::vm_minor_version() & 0xFF) << 16) | + (Abstract_VM_Version::vm_build_number() & 0xFF); +} + + +void VM_Version_init() { + VM_Version::initialize(); + +#ifndef PRODUCT + if (PrintMiscellaneous && Verbose) { + os::print_cpu_info(tty); + } +#endif +}