hotspot/src/cpu/x86/vm/interpreter_x86_32.cpp
changeset 33089 f4e956ed8b43
parent 25950 b5c40ed1d349
child 33465 6063f28a6efb
--- a/hotspot/src/cpu/x86/vm/interpreter_x86_32.cpp	Wed Sep 30 04:35:39 2015 -0400
+++ b/hotspot/src/cpu/x86/vm/interpreter_x86_32.cpp	Mon Oct 05 20:02:40 2015 -0700
@@ -151,11 +151,15 @@
       __ pop_fTOS();
       break;
     case Interpreter::java_lang_math_exp:
-      __ exp_with_fallback(0);
-      // Store to stack to convert 80bit precision back to 64bits
-      __ push_fTOS();
-      __ pop_fTOS();
-      break;
+      __ subptr(rsp, 2*wordSize);
+      __ fstp_d(Address(rsp, 0));
+      if (VM_Version::supports_sse2()) {
+        __ call(RuntimeAddress(CAST_FROM_FN_PTR(address, StubRoutines::dexp())));
+      } else {
+        __ call(RuntimeAddress(CAST_FROM_FN_PTR(address, SharedRuntime::dexp)));
+      }
+      __ addptr(rsp, 2*wordSize);
+    break;
     default                              :
         ShouldNotReachHere();
   }