# HG changeset patch # User jmasa # Date 1448409400 28800 # Tue Nov 24 15:56:40 2015 -0800 # Node ID 7b2c5928bf3460db0112583d6b505c0711b2aafa # Parent 3148b7fc645f35c158fa287426b2de64281ec131 8133023: ParallelGCThreads is not calculated correctly Reviewed-by: kbarrett, tschatzl, sangheki, dholmes diff --git a/src/cpu/sparc/vm/vm_version_sparc.cpp b/src/cpu/sparc/vm/vm_version_sparc.cpp --- a/src/cpu/sparc/vm/vm_version_sparc.cpp +++ b/src/cpu/sparc/vm/vm_version_sparc.cpp @@ -35,7 +35,10 @@ unsigned int VM_Version::_L2_data_cache_line_size = 0; void VM_Version::initialize() { - _features = determine_features(); + + guarantee(VM_Version::has_v9(), "only SPARC v9 is supported"); + assert(_features != VM_Version::unknown_m, "System pre-initialization is not complete."); + PrefetchCopyIntervalInBytes = prefetch_copy_interval_in_bytes(); PrefetchScanIntervalInBytes = prefetch_scan_interval_in_bytes(); PrefetchFieldsAhead = prefetch_fields_ahead(); @@ -60,8 +63,6 @@ FLAG_SET_DEFAULT(AllocatePrefetchStyle, 1); } - guarantee(VM_Version::has_v9(), "only SPARC v9 is supported"); - UseSSE = 0; // Only on x86 and x64 _supports_cx8 = has_v9(); diff --git a/src/cpu/sparc/vm/vm_version_sparc.hpp b/src/cpu/sparc/vm/vm_version_sparc.hpp --- a/src/cpu/sparc/vm/vm_version_sparc.hpp +++ b/src/cpu/sparc/vm/vm_version_sparc.hpp @@ -127,6 +127,8 @@ // Initialization static void initialize(); + static void vm_init_before_ergo() { _features = determine_features(); } + // Instruction support static bool has_v8() { return (_features & v8_instructions_m) != 0; } static bool has_v9() { return (_features & v9_instructions_m) != 0; } diff --git a/src/cpu/x86/vm/vm_version_x86.hpp b/src/cpu/x86/vm/vm_version_x86.hpp --- a/src/cpu/x86/vm/vm_version_x86.hpp +++ b/src/cpu/x86/vm/vm_version_x86.hpp @@ -605,6 +605,8 @@ // Initialization static void initialize(); + static void vm_init_before_ergo() {}; + // Override Abstract_VM_Version implementation static bool use_biased_locking(); diff --git a/src/share/vm/runtime/os.cpp b/src/share/vm/runtime/os.cpp --- a/src/share/vm/runtime/os.cpp +++ b/src/share/vm/runtime/os.cpp @@ -315,6 +315,8 @@ // We need to initialize large page support here because ergonomics takes some // decisions depending on large page support and the calculated large page size. large_page_init(); + + VM_Version::vm_init_before_ergo(); } void os::signal_init() { # HG changeset patch # User jmasa # Date 1449092811 28800 # Wed Dec 02 13:46:51 2015 -0800 # Node ID a83b15ccb6510945e61aeeaeb28eb22aa7453dda # Parent 7b2c5928bf3460db0112583d6b505c0711b2aafa [mq]: delta1 diff --git a/src/cpu/sparc/vm/vm_version_sparc.cpp b/src/cpu/sparc/vm/vm_version_sparc.cpp --- a/src/cpu/sparc/vm/vm_version_sparc.cpp +++ b/src/cpu/sparc/vm/vm_version_sparc.cpp @@ -36,8 +36,8 @@ void VM_Version::initialize() { + assert(_features != VM_Version::unknown_m, "System pre-initialization is not complete."); guarantee(VM_Version::has_v9(), "only SPARC v9 is supported"); - assert(_features != VM_Version::unknown_m, "System pre-initialization is not complete."); PrefetchCopyIntervalInBytes = prefetch_copy_interval_in_bytes(); PrefetchScanIntervalInBytes = prefetch_scan_interval_in_bytes(); diff --git a/src/cpu/sparc/vm/vm_version_sparc.hpp b/src/cpu/sparc/vm/vm_version_sparc.hpp --- a/src/cpu/sparc/vm/vm_version_sparc.hpp +++ b/src/cpu/sparc/vm/vm_version_sparc.hpp @@ -127,7 +127,7 @@ // Initialization static void initialize(); - static void vm_init_before_ergo() { _features = determine_features(); } + static void vm_init_before_ergo() { _features = determine_features(); } // Instruction support static bool has_v8() { return (_features & v8_instructions_m) != 0; } diff --git a/src/cpu/x86/vm/vm_version_x86.hpp b/src/cpu/x86/vm/vm_version_x86.hpp --- a/src/cpu/x86/vm/vm_version_x86.hpp +++ b/src/cpu/x86/vm/vm_version_x86.hpp @@ -605,8 +605,6 @@ // Initialization static void initialize(); - static void vm_init_before_ergo() {}; - // Override Abstract_VM_Version implementation static bool use_biased_locking(); diff --git a/src/share/vm/runtime/vm_version.hpp b/src/share/vm/runtime/vm_version.hpp --- a/src/share/vm/runtime/vm_version.hpp +++ b/src/share/vm/runtime/vm_version.hpp @@ -64,6 +64,9 @@ // other part of the VM being initialized when called. Platforms that // need to specialize this define VM_Version::early_initialize(). static void early_initialize() { } + // Called to initialize VM variables needing initialization + // after command line parsing + static void vm_init_before_ergo(void) {} // Name static const char* vm_name(); # HG changeset patch # User jmasa # Date 1449596990 28800 # Tue Dec 08 09:49:50 2015 -0800 # Node ID 6a64260a66f0754760bd27b9f2449c7f7b198ea7 # Parent a83b15ccb6510945e61aeeaeb28eb22aa7453dda [mq]: delta2 diff --git a/src/cpu/sparc/vm/vm_version_sparc.hpp b/src/cpu/sparc/vm/vm_version_sparc.hpp --- a/src/cpu/sparc/vm/vm_version_sparc.hpp +++ b/src/cpu/sparc/vm/vm_version_sparc.hpp @@ -127,7 +127,7 @@ // Initialization static void initialize(); - static void vm_init_before_ergo() { _features = determine_features(); } + static void init_before_ergo() { _features = determine_features(); } // Instruction support static bool has_v8() { return (_features & v8_instructions_m) != 0; } diff --git a/src/share/vm/runtime/os.cpp b/src/share/vm/runtime/os.cpp --- a/src/share/vm/runtime/os.cpp +++ b/src/share/vm/runtime/os.cpp @@ -316,7 +316,9 @@ // decisions depending on large page support and the calculated large page size. large_page_init(); - VM_Version::vm_init_before_ergo(); + // VM version initialization identifies some characteristics of the + // the platform that are used during ergonomic decisions. + VM_Version::init_before_ergo(); } void os::signal_init() { diff --git a/src/share/vm/runtime/vm_version.hpp b/src/share/vm/runtime/vm_version.hpp --- a/src/share/vm/runtime/vm_version.hpp +++ b/src/share/vm/runtime/vm_version.hpp @@ -56,6 +56,12 @@ unsigned int dem, unsigned int switch_pt); public: + // Called as part of the runtime services initialization + // called from the management module initialization (via init_globals()) + // after argument parsing and attaching of the main thread has + // occurred. Examines a variety of the hardware capabilities of + // the platform to determine which features can be used to execute the + // program. static void initialize(); // This allows for early initialization of VM_Version information @@ -66,7 +72,7 @@ static void early_initialize() { } // Called to initialize VM variables needing initialization // after command line parsing - static void vm_init_before_ergo(void) {} + static void init_before_ergo(void) {} // Name static const char* vm_name();