changeset 7945:b5b3db42efca

Merge
author robm
date Tue, 29 Mar 2016 23:01:10 +0100
parents d36b75043517 e443d4e588a3
children f21c5c4d5231 d109bda16490
files
diffstat 7 files changed, 31 insertions(+), 10 deletions(-) [+]
line wrap: on
line diff
--- a/src/cpu/sparc/vm/vm_version_sparc.cpp	Tue Mar 29 13:25:38 2016 -0700
+++ b/src/cpu/sparc/vm/vm_version_sparc.cpp	Tue Mar 29 23:01:10 2016 +0100
@@ -40,7 +40,10 @@
 unsigned int VM_Version::_L2_data_cache_line_size = 0;
 
 void VM_Version::initialize() {
-  _features = determine_features();
+
+  assert(_features != VM_Version::unknown_m, "System pre-initialization is not complete.");
+  guarantee(VM_Version::has_v9(), "only SPARC v9 is supported");
+
   PrefetchCopyIntervalInBytes = prefetch_copy_interval_in_bytes();
   PrefetchScanIntervalInBytes = prefetch_scan_interval_in_bytes();
   PrefetchFieldsAhead         = prefetch_fields_ahead();
@@ -76,8 +79,6 @@
     FLAG_SET_DEFAULT(AllocatePrefetchStyle, 1);
   }
 
-  guarantee(VM_Version::has_v9(), "only SPARC v9 is supported");
-
   assert(ArraycopySrcPrefetchDistance < 4096, "invalid value");
   if (ArraycopySrcPrefetchDistance >= 4096)
     ArraycopySrcPrefetchDistance = 4064;
--- a/src/cpu/sparc/vm/vm_version_sparc.hpp	Tue Mar 29 13:25:38 2016 -0700
+++ b/src/cpu/sparc/vm/vm_version_sparc.hpp	Tue Mar 29 23:01:10 2016 +0100
@@ -124,6 +124,8 @@
   // Initialization
   static void initialize();
 
+  static void 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; }
--- a/src/share/vm/prims/jvmtiExport.cpp	Tue Mar 29 13:25:38 2016 -0700
+++ b/src/share/vm/prims/jvmtiExport.cpp	Tue Mar 29 23:01:10 2016 +0100
@@ -995,7 +995,9 @@
         // Before we call the JVMTI agent, we have to set the state in the
         // thread for which we are proxying.
         JavaThreadState prev_state = real_thread->thread_state();
-        assert(prev_state == _thread_blocked, "JavaThread should be at safepoint");
+        assert(((Thread *)real_thread)->is_ConcurrentGC_thread() ||
+               (real_thread->is_Java_thread() && prev_state == _thread_blocked),
+               "should be ConcurrentGCThread or JavaThread at safepoint");
         real_thread->set_thread_state(_thread_in_native);
 
         jvmtiExtensionEvent callback = env->ext_callbacks()->ClassUnload;
--- a/src/share/vm/runtime/os.cpp	Tue Mar 29 13:25:38 2016 -0700
+++ b/src/share/vm/runtime/os.cpp	Tue Mar 29 23:01:10 2016 +0100
@@ -325,6 +325,10 @@
   // 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 initialization identifies some characteristics of the
+  // the platform that are used during ergonomic decisions.
+  VM_Version::init_before_ergo();
 }
 
 void os::signal_init() {
--- a/src/share/vm/runtime/vm_version.hpp	Tue Mar 29 13:25:38 2016 -0700
+++ b/src/share/vm/runtime/vm_version.hpp	Tue Mar 29 23:01:10 2016 +0100
@@ -54,6 +54,12 @@
                                                   unsigned int dem,
                                                   unsigned int switch_pt);
  public:
+  // Called as part of the runtime services initialization which is
+  // 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
@@ -63,6 +69,11 @@
   // need to specialize this define VM_Version::early_initialize().
   static void early_initialize() { }
 
+  // Called to initialize VM variables needing initialization
+  // after command line parsing. Platforms that need to specialize
+  // this should define VM_Version::init_before_ergo().
+  static void init_before_ergo() {}
+
   // Name
   static const char* vm_name();
   // Vendor
--- a/test/compiler/intrinsics/montgomerymultiply/MontgomeryMultiplyTest.java	Tue Mar 29 13:25:38 2016 -0700
+++ b/test/compiler/intrinsics/montgomerymultiply/MontgomeryMultiplyTest.java	Tue Mar 29 23:01:10 2016 +0100
@@ -39,12 +39,12 @@
  * @library /testlibrary
  * @requires (os.simpleArch == "x64") & (os.family != "windows")
  * @summary Verify that the Montgomery multiply intrinsic works and correctly checks its arguments.
- * @run main/othervm -XX:+UseMontgomerySquareIntrinsic -XX:+UseMontgomeryMultiplyIntrinsic
- *      MontgomeryMultiplyTest
- * @run main/othervm -XX:+UseMontgomerySquareIntrinsic -XX:-UseMontgomeryMultiplyIntrinsic
- *      MontgomeryMultiplyTest
- * @run main/othervm -XX:-UseMontgomerySquareIntrinsic -XX:+UseMontgomeryMultiplyIntrinsic
- *      MontgomeryMultiplyTest
+ * @run main/othervm -XX:+IgnoreUnrecognizedVMOptions -XX:+UseMontgomerySquareIntrinsic
+ *      -XX:+UseMontgomeryMultiplyIntrinsic MontgomeryMultiplyTest
+ * @run main/othervm -XX:+IgnoreUnrecognizedVMOptions -XX:+UseMontgomerySquareIntrinsic
+ *      -XX:-UseMontgomeryMultiplyIntrinsic MontgomeryMultiplyTest
+ * @run main/othervm -XX:+IgnoreUnrecognizedVMOptions -XX:-UseMontgomerySquareIntrinsic
+ *      -XX:+UseMontgomeryMultiplyIntrinsic MontgomeryMultiplyTest
  */
 
 public class MontgomeryMultiplyTest {
--- a/test/compiler/intrinsics/squaretolen/TestSquareToLen.java	Tue Mar 29 13:25:38 2016 -0700
+++ b/test/compiler/intrinsics/squaretolen/TestSquareToLen.java	Tue Mar 29 23:01:10 2016 +0100
@@ -28,6 +28,7 @@
  * @summary Add C2 x86 intrinsic for BigInteger::squareToLen() method
  *
  * @run main/othervm/timeout=600 -XX:-TieredCompilation -Xbatch
+ *      -XX:+IgnoreUnrecognizedVMOptions
  *      -XX:+UseSquareToLenIntrinsic
  *      -XX:CompileCommand=exclude,TestSquareToLen::main
  *      -XX:CompileCommand=option,TestSquareToLen::base_multiply,ccstr,DisableIntrinsic,_squareToLen