changeset 58045:c22087442921

8238896: Massive x86_32 crashes after JDK-7175279 (Don't use x87 FPU on x86-64) Reviewed-by: thartmann, stuefe, vlivanov
author shade
date Thu, 13 Feb 2020 17:05:54 +0100
parents bc5af528b6ec
children c27f595b4dd0
files src/hotspot/cpu/x86/c1_LIRAssembler_x86.cpp
diffstat 1 files changed, 8 insertions(+), 5 deletions(-) [+]
line wrap: on
line diff
--- a/src/hotspot/cpu/x86/c1_LIRAssembler_x86.cpp	Thu Feb 13 17:05:30 2020 +0100
+++ b/src/hotspot/cpu/x86/c1_LIRAssembler_x86.cpp	Thu Feb 13 17:05:54 2020 +0100
@@ -908,11 +908,6 @@
   } else if (dest->is_double_xmm() && !src->is_double_xmm()) {
     __ fstp_d(Address(rsp, 0));
     __ movdbl(dest->as_xmm_double_reg(), Address(rsp, 0));
-
-  // move between fpu-registers (no instruction necessary because of fpu-stack)
-  } else if (dest->is_single_fpu() || dest->is_double_fpu()) {
-    assert(src->is_single_fpu() || src->is_double_fpu(), "must match");
-    assert(src->fpu() == dest->fpu(), "currently should be nothing to do");
 #endif // !_LP64
 
     // move between xmm-registers
@@ -923,6 +918,13 @@
     assert(src->is_double_xmm(), "must match");
     __ movdbl(dest->as_xmm_double_reg(), src->as_xmm_double_reg());
 
+#ifndef _LP64
+    // move between fpu-registers (no instruction necessary because of fpu-stack)
+  } else if (dest->is_single_fpu() || dest->is_double_fpu()) {
+    assert(src->is_single_fpu() || src->is_double_fpu(), "must match");
+    assert(src->fpu() == dest->fpu(), "currently should be nothing to do");
+#endif // !_LP64
+
   } else {
     ShouldNotReachHere();
   }
@@ -1595,6 +1597,7 @@
       __ movl(Address(rsp, BytesPerWord), src->as_register_hi());
       __ fild_d(Address(rsp, 0));
       // float result is rounded later through spilling
+      break;
 
     case Bytecodes::_f2i:
     case Bytecodes::_d2i: