hotspot/src/share/vm/runtime/vm_version.hpp
changeset 1 489c9b5090e2
child 183 ba55c7f3fd45
equal deleted inserted replaced
0:fd16c54261b3 1:489c9b5090e2
       
     1 /*
       
     2  * Copyright 1997-2007 Sun Microsystems, Inc.  All Rights Reserved.
       
     3  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
       
     4  *
       
     5  * This code is free software; you can redistribute it and/or modify it
       
     6  * under the terms of the GNU General Public License version 2 only, as
       
     7  * published by the Free Software Foundation.
       
     8  *
       
     9  * This code is distributed in the hope that it will be useful, but WITHOUT
       
    10  * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
       
    11  * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
       
    12  * version 2 for more details (a copy is included in the LICENSE file that
       
    13  * accompanied this code).
       
    14  *
       
    15  * You should have received a copy of the GNU General Public License version
       
    16  * 2 along with this work; if not, write to the Free Software Foundation,
       
    17  * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
       
    18  *
       
    19  * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
       
    20  * CA 95054 USA or visit www.sun.com if you need additional information or
       
    21  * have any questions.
       
    22  *
       
    23  */
       
    24 
       
    25 // VM_Version provides information about the VM.
       
    26 
       
    27 class Abstract_VM_Version: AllStatic {
       
    28  protected:
       
    29   friend class VMStructs;
       
    30   static const char*  _s_vm_release;
       
    31   static const char*  _s_internal_vm_info_string;
       
    32   // These are set by machine-dependent initializations
       
    33   static bool         _supports_cx8;
       
    34   static unsigned int _logical_processors_per_package;
       
    35   static int          _vm_major_version;
       
    36   static int          _vm_minor_version;
       
    37   static int          _vm_build_number;
       
    38   static bool         _initialized;
       
    39  public:
       
    40   static void initialize();
       
    41 
       
    42   // Name
       
    43   static const char* vm_name();
       
    44   // Vendor
       
    45   static const char* vm_vendor();
       
    46   // VM version information string printed by launcher (java -version)
       
    47   static const char* vm_info_string();
       
    48   static const char* vm_release();
       
    49   static const char* vm_platform_string();
       
    50 
       
    51   static int vm_major_version()               { assert(_initialized, "not initialized"); return _vm_major_version; }
       
    52   static int vm_minor_version()               { assert(_initialized, "not initialized"); return _vm_minor_version; }
       
    53   static int vm_build_number()                { assert(_initialized, "not initialized"); return _vm_build_number; }
       
    54 
       
    55   // Gets the jvm_version_info.jvm_version defined in jvm.h
       
    56   static unsigned int jvm_version();
       
    57 
       
    58   // Internal version providing additional build information
       
    59   static const char* internal_vm_info_string();
       
    60 
       
    61   // does HW support an 8-byte compare-exchange operation?
       
    62   static bool supports_cx8()  {return _supports_cx8;}
       
    63   static unsigned int logical_processors_per_package() {
       
    64     return _logical_processors_per_package;
       
    65   }
       
    66 
       
    67   // Number of page sizes efficiently supported by the hardware.  Most chips now
       
    68   // support two sizes, thus this default implementation.  Processor-specific
       
    69   // subclasses should define new versions to hide this one as needed.  Note
       
    70   // that the O/S may support more sizes, but at most this many are used.
       
    71   static uint page_size_count() { return 2; }
       
    72 };