8181785: Remove the experimental ClearFPUAtPark JVM Flag
authoreosterlund
Wed, 14 Jun 2017 08:47:27 +0200
changeset 46540 9c0aa7bc3fe3
parent 46539 c23c825bcfc2
child 46541 d20828de9e39
8181785: Remove the experimental ClearFPUAtPark JVM Flag Summary: Removing the experimental and unstable ClearFPUAtPark optimization for SPARC Reviewed-by: kbarrett, tschatzl, rehn
hotspot/src/os/solaris/vm/os_share_solaris.hpp
hotspot/src/os/solaris/vm/os_solaris.cpp
hotspot/src/os_cpu/solaris_sparc/vm/os_solaris_sparc.cpp
hotspot/src/os_cpu/solaris_sparc/vm/solaris_sparc.il
hotspot/src/share/vm/runtime/globals.hpp
--- a/hotspot/src/os/solaris/vm/os_share_solaris.hpp	Wed Jun 14 01:30:11 2017 -0700
+++ b/hotspot/src/os/solaris/vm/os_share_solaris.hpp	Wed Jun 14 08:47:27 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1999, 2013, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1999, 2017, Oracle and/or its affiliates. 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
@@ -37,14 +37,6 @@
 void continue_with_dump(void);
 #endif
 
-#if defined(__sparc) && defined(COMPILER2)
-// For Sun Studio compiler implementation is in  file
-// src/os_cpu/solaris_sparc/vm/solaris_sparc.il
-// For gcc implementation is in  file
-// src/os_cpu/solaris_sparc/vm/os_solaris_sparc.cpp
-extern "C" void _mark_fpu_nosave() ;
-#endif
-
 #define PROCFILE_LENGTH 128
 
 #endif // OS_SOLARIS_VM_OS_SHARE_SOLARIS_HPP
--- a/hotspot/src/os/solaris/vm/os_solaris.cpp	Wed Jun 14 01:30:11 2017 -0700
+++ b/hotspot/src/os/solaris/vm/os_solaris.cpp	Wed Jun 14 08:47:27 2017 +0200
@@ -5103,11 +5103,6 @@
   if (v == 0) {
     // Do this the hard way by blocking ...
     // See http://monaco.sfbay/detail.jsf?cr=5094058.
-    // TODO-FIXME: for Solaris SPARC set fprs.FEF=0 prior to parking.
-    // Only for SPARC >= V8PlusA
-#if defined(__sparc) && defined(COMPILER2)
-    if (ClearFPUAtPark) { _mark_fpu_nosave(); }
-#endif
     int status = os::Solaris::mutex_lock(_mutex);
     assert_status(status == 0, status, "mutex_lock");
     guarantee(_nParked == 0, "invariant");
@@ -5150,11 +5145,6 @@
   compute_abstime(&abst, millis);
 
   // See http://monaco.sfbay/detail.jsf?cr=5094058.
-  // For Solaris SPARC set fprs.FEF=0 prior to parking.
-  // Only for SPARC >= V8PlusA
-#if defined(__sparc) && defined(COMPILER2)
-  if (ClearFPUAtPark) { _mark_fpu_nosave(); }
-#endif
   int status = os::Solaris::mutex_lock(_mutex);
   assert_status(status == 0, status, "mutex_lock");
   guarantee(_nParked == 0, "invariant");
@@ -5347,12 +5337,6 @@
 
   // Do this the hard way by blocking ...
   // See http://monaco.sfbay/detail.jsf?cr=5094058.
-  // TODO-FIXME: for Solaris SPARC set fprs.FEF=0 prior to parking.
-  // Only for SPARC >= V8PlusA
-#if defined(__sparc) && defined(COMPILER2)
-  if (ClearFPUAtPark) { _mark_fpu_nosave(); }
-#endif
-
   if (time == 0) {
     status = os::Solaris::cond_wait(_cond, _mutex);
   } else {
--- a/hotspot/src/os_cpu/solaris_sparc/vm/os_solaris_sparc.cpp	Wed Jun 14 01:30:11 2017 -0700
+++ b/hotspot/src/os_cpu/solaris_sparc/vm/os_solaris_sparc.cpp	Wed Jun 14 08:47:27 2017 +0200
@@ -725,14 +725,6 @@
     // Nothing needed on Sparc.
 }
 
-#if defined(__sparc) && defined(COMPILER2) && defined(_GNU_SOURCE)
- // See file build/solaris/makefiles/$compiler.make
- // For compiler1 the architecture is v8 and frps isn't present in v8
- extern "C"  void _mark_fpu_nosave() {
-   __asm__ __volatile__ ("wr %%g0, 0, %%fprs \n\t" : : :);
-  }
-#endif //defined(__sparc) && defined(COMPILER2)
-
 #ifndef PRODUCT
 void os::verify_stack_alignment() {
 }
--- a/hotspot/src/os_cpu/solaris_sparc/vm/solaris_sparc.il	Wed Jun 14 01:30:11 2017 -0700
+++ b/hotspot/src/os_cpu/solaris_sparc/vm/solaris_sparc.il	Wed Jun 14 08:47:27 2017 +0200
@@ -1,5 +1,5 @@
 //
-// Copyright (c) 2002, 2015, Oracle and/or its affiliates. All rights reserved.
+// Copyright (c) 2002, 2017, Oracle and/or its affiliates. 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
@@ -32,17 +32,6 @@
        .end
 
 
-  // Clear SPARC fprs.FEF DU and DL bits --
-  // allows the kernel to avoid saving FPU state at context-switch time.
-  // Use for state-transition points (into _thread_blocked) or when
-  // parking.
-
-       .inline _mark_fpu_nosave, 0
-       .volatile
-       wr   %g0, 0, %fprs
-       .nonvolatile
-       .end
-
   // Support for jint Atomic::xchg(jint exchange_value, volatile jint* dest).
   //
   // Arguments:
--- a/hotspot/src/share/vm/runtime/globals.hpp	Wed Jun 14 01:30:11 2017 -0700
+++ b/hotspot/src/share/vm/runtime/globals.hpp	Wed Jun 14 08:47:27 2017 +0200
@@ -1191,8 +1191,6 @@
                                                                             \
   diagnostic(bool, InlineNotify, true, "intrinsify subset of notify")       \
                                                                             \
-  experimental(intx, ClearFPUAtPark, 0, "(Unsafe, Unstable)")               \
-                                                                            \
   experimental(intx, hashCode, 5,                                           \
                "(Unstable) select hashCode generation algorithm")           \
                                                                             \