Tue, 29 Mar 2016 23:01:10 +0100
Merge
1.1 --- a/src/cpu/sparc/vm/vm_version_sparc.cpp Tue Mar 29 13:25:38 2016 -0700 1.2 +++ b/src/cpu/sparc/vm/vm_version_sparc.cpp Tue Mar 29 23:01:10 2016 +0100 1.3 @@ -40,7 +40,10 @@ 1.4 unsigned int VM_Version::_L2_data_cache_line_size = 0; 1.5 1.6 void VM_Version::initialize() { 1.7 - _features = determine_features(); 1.8 + 1.9 + assert(_features != VM_Version::unknown_m, "System pre-initialization is not complete."); 1.10 + guarantee(VM_Version::has_v9(), "only SPARC v9 is supported"); 1.11 + 1.12 PrefetchCopyIntervalInBytes = prefetch_copy_interval_in_bytes(); 1.13 PrefetchScanIntervalInBytes = prefetch_scan_interval_in_bytes(); 1.14 PrefetchFieldsAhead = prefetch_fields_ahead(); 1.15 @@ -76,8 +79,6 @@ 1.16 FLAG_SET_DEFAULT(AllocatePrefetchStyle, 1); 1.17 } 1.18 1.19 - guarantee(VM_Version::has_v9(), "only SPARC v9 is supported"); 1.20 - 1.21 assert(ArraycopySrcPrefetchDistance < 4096, "invalid value"); 1.22 if (ArraycopySrcPrefetchDistance >= 4096) 1.23 ArraycopySrcPrefetchDistance = 4064;
2.1 --- a/src/cpu/sparc/vm/vm_version_sparc.hpp Tue Mar 29 13:25:38 2016 -0700 2.2 +++ b/src/cpu/sparc/vm/vm_version_sparc.hpp Tue Mar 29 23:01:10 2016 +0100 2.3 @@ -124,6 +124,8 @@ 2.4 // Initialization 2.5 static void initialize(); 2.6 2.7 + static void init_before_ergo() { _features = determine_features(); } 2.8 + 2.9 // Instruction support 2.10 static bool has_v8() { return (_features & v8_instructions_m) != 0; } 2.11 static bool has_v9() { return (_features & v9_instructions_m) != 0; }
3.1 --- a/src/share/vm/prims/jvmtiExport.cpp Tue Mar 29 13:25:38 2016 -0700 3.2 +++ b/src/share/vm/prims/jvmtiExport.cpp Tue Mar 29 23:01:10 2016 +0100 3.3 @@ -995,7 +995,9 @@ 3.4 // Before we call the JVMTI agent, we have to set the state in the 3.5 // thread for which we are proxying. 3.6 JavaThreadState prev_state = real_thread->thread_state(); 3.7 - assert(prev_state == _thread_blocked, "JavaThread should be at safepoint"); 3.8 + assert(((Thread *)real_thread)->is_ConcurrentGC_thread() || 3.9 + (real_thread->is_Java_thread() && prev_state == _thread_blocked), 3.10 + "should be ConcurrentGCThread or JavaThread at safepoint"); 3.11 real_thread->set_thread_state(_thread_in_native); 3.12 3.13 jvmtiExtensionEvent callback = env->ext_callbacks()->ClassUnload;
4.1 --- a/src/share/vm/runtime/os.cpp Tue Mar 29 13:25:38 2016 -0700 4.2 +++ b/src/share/vm/runtime/os.cpp Tue Mar 29 23:01:10 2016 +0100 4.3 @@ -325,6 +325,10 @@ 4.4 // We need to initialize large page support here because ergonomics takes some 4.5 // decisions depending on large page support and the calculated large page size. 4.6 large_page_init(); 4.7 + 4.8 + // VM version initialization identifies some characteristics of the 4.9 + // the platform that are used during ergonomic decisions. 4.10 + VM_Version::init_before_ergo(); 4.11 } 4.12 4.13 void os::signal_init() {
5.1 --- a/src/share/vm/runtime/vm_version.hpp Tue Mar 29 13:25:38 2016 -0700 5.2 +++ b/src/share/vm/runtime/vm_version.hpp Tue Mar 29 23:01:10 2016 +0100 5.3 @@ -54,6 +54,12 @@ 5.4 unsigned int dem, 5.5 unsigned int switch_pt); 5.6 public: 5.7 + // Called as part of the runtime services initialization which is 5.8 + // called from the management module initialization (via init_globals()) 5.9 + // after argument parsing and attaching of the main thread has 5.10 + // occurred. Examines a variety of the hardware capabilities of 5.11 + // the platform to determine which features can be used to execute the 5.12 + // program. 5.13 static void initialize(); 5.14 5.15 // This allows for early initialization of VM_Version information 5.16 @@ -63,6 +69,11 @@ 5.17 // need to specialize this define VM_Version::early_initialize(). 5.18 static void early_initialize() { } 5.19 5.20 + // Called to initialize VM variables needing initialization 5.21 + // after command line parsing. Platforms that need to specialize 5.22 + // this should define VM_Version::init_before_ergo(). 5.23 + static void init_before_ergo() {} 5.24 + 5.25 // Name 5.26 static const char* vm_name(); 5.27 // Vendor
6.1 --- a/test/compiler/intrinsics/montgomerymultiply/MontgomeryMultiplyTest.java Tue Mar 29 13:25:38 2016 -0700 6.2 +++ b/test/compiler/intrinsics/montgomerymultiply/MontgomeryMultiplyTest.java Tue Mar 29 23:01:10 2016 +0100 6.3 @@ -39,12 +39,12 @@ 6.4 * @library /testlibrary 6.5 * @requires (os.simpleArch == "x64") & (os.family != "windows") 6.6 * @summary Verify that the Montgomery multiply intrinsic works and correctly checks its arguments. 6.7 - * @run main/othervm -XX:+UseMontgomerySquareIntrinsic -XX:+UseMontgomeryMultiplyIntrinsic 6.8 - * MontgomeryMultiplyTest 6.9 - * @run main/othervm -XX:+UseMontgomerySquareIntrinsic -XX:-UseMontgomeryMultiplyIntrinsic 6.10 - * MontgomeryMultiplyTest 6.11 - * @run main/othervm -XX:-UseMontgomerySquareIntrinsic -XX:+UseMontgomeryMultiplyIntrinsic 6.12 - * MontgomeryMultiplyTest 6.13 + * @run main/othervm -XX:+IgnoreUnrecognizedVMOptions -XX:+UseMontgomerySquareIntrinsic 6.14 + * -XX:+UseMontgomeryMultiplyIntrinsic MontgomeryMultiplyTest 6.15 + * @run main/othervm -XX:+IgnoreUnrecognizedVMOptions -XX:+UseMontgomerySquareIntrinsic 6.16 + * -XX:-UseMontgomeryMultiplyIntrinsic MontgomeryMultiplyTest 6.17 + * @run main/othervm -XX:+IgnoreUnrecognizedVMOptions -XX:-UseMontgomerySquareIntrinsic 6.18 + * -XX:+UseMontgomeryMultiplyIntrinsic MontgomeryMultiplyTest 6.19 */ 6.20 6.21 public class MontgomeryMultiplyTest {
7.1 --- a/test/compiler/intrinsics/squaretolen/TestSquareToLen.java Tue Mar 29 13:25:38 2016 -0700 7.2 +++ b/test/compiler/intrinsics/squaretolen/TestSquareToLen.java Tue Mar 29 23:01:10 2016 +0100 7.3 @@ -28,6 +28,7 @@ 7.4 * @summary Add C2 x86 intrinsic for BigInteger::squareToLen() method 7.5 * 7.6 * @run main/othervm/timeout=600 -XX:-TieredCompilation -Xbatch 7.7 + * -XX:+IgnoreUnrecognizedVMOptions 7.8 * -XX:+UseSquareToLenIntrinsic 7.9 * -XX:CompileCommand=exclude,TestSquareToLen::main 7.10 * -XX:CompileCommand=option,TestSquareToLen::base_multiply,ccstr,DisableIntrinsic,_squareToLen