< prev index next >

src/cpu/x86/vm/interpreter_x86_64.cpp

Print this page

        

@@ -254,19 +254,27 @@
     __ movdbl(xmm0, Address(rsp, wordSize));
     __ call(RuntimeAddress(CAST_FROM_FN_PTR(address, StubRoutines::dexp())));
   } else if (kind == Interpreter::java_lang_math_log) {
     __ movdbl(xmm0, Address(rsp, wordSize));
     __ call(RuntimeAddress(CAST_FROM_FN_PTR(address, StubRoutines::dlog())));
+  } else if (kind == Interpreter::java_lang_math_sin) {
+    __ movdbl(xmm0, Address(rsp, wordSize));
+    if (StubRoutines::dsin() != NULL) {
+      __ call(RuntimeAddress(CAST_FROM_FN_PTR(address, StubRoutines::dsin())));
+    } else {
+      __ call(RuntimeAddress(CAST_FROM_FN_PTR(address, SharedRuntime::dsin)));
+    }
+  } else if (kind == Interpreter::java_lang_math_cos) {
+    __ movdbl(xmm0, Address(rsp, wordSize));
+    if (StubRoutines::dcos() != NULL) {
+      __ call(RuntimeAddress(CAST_FROM_FN_PTR(address, StubRoutines::dcos())));
+    } else {
+      __ call(RuntimeAddress(CAST_FROM_FN_PTR(address, SharedRuntime::dcos)));
+    }
   } else {
     __ fld_d(Address(rsp, wordSize));
     switch (kind) {
-      case Interpreter::java_lang_math_sin :
-          __ trigfunc('s');
-          break;
-      case Interpreter::java_lang_math_cos :
-          __ trigfunc('c');
-          break;
       case Interpreter::java_lang_math_tan :
           __ trigfunc('t');
           break;
       case Interpreter::java_lang_math_abs:
           __ fabs();
< prev index next >