2926 __ fstp_d(Address(rsp, 0)); |
2926 __ fstp_d(Address(rsp, 0)); |
2927 __ movdbl(xmm0, Address(rsp, 0)); |
2927 __ movdbl(xmm0, Address(rsp, 0)); |
2928 __ addq(rsp, 8); |
2928 __ addq(rsp, 8); |
2929 __ ret(0); |
2929 __ ret(0); |
2930 } |
2930 } |
2931 |
2931 { |
2932 // The intrinsic version of these seem to return the same value as |
2932 StubCodeMark mark(this, "StubRoutines", "exp"); |
2933 // the strict version. |
2933 StubRoutines::_intrinsic_exp = (double (*)(double)) __ pc(); |
2934 StubRoutines::_intrinsic_exp = SharedRuntime::dexp; |
2934 |
2935 StubRoutines::_intrinsic_pow = SharedRuntime::dpow; |
2935 __ subq(rsp, 8); |
|
2936 __ movdbl(Address(rsp, 0), xmm0); |
|
2937 __ fld_d(Address(rsp, 0)); |
|
2938 __ exp_with_fallback(0); |
|
2939 __ fstp_d(Address(rsp, 0)); |
|
2940 __ movdbl(xmm0, Address(rsp, 0)); |
|
2941 __ addq(rsp, 8); |
|
2942 __ ret(0); |
|
2943 } |
|
2944 { |
|
2945 StubCodeMark mark(this, "StubRoutines", "pow"); |
|
2946 StubRoutines::_intrinsic_pow = (double (*)(double,double)) __ pc(); |
|
2947 |
|
2948 __ subq(rsp, 8); |
|
2949 __ movdbl(Address(rsp, 0), xmm1); |
|
2950 __ fld_d(Address(rsp, 0)); |
|
2951 __ movdbl(Address(rsp, 0), xmm0); |
|
2952 __ fld_d(Address(rsp, 0)); |
|
2953 __ pow_with_fallback(0); |
|
2954 __ fstp_d(Address(rsp, 0)); |
|
2955 __ movdbl(xmm0, Address(rsp, 0)); |
|
2956 __ addq(rsp, 8); |
|
2957 __ ret(0); |
|
2958 } |
2936 } |
2959 } |
2937 |
2960 |
2938 #undef __ |
2961 #undef __ |
2939 #define __ masm-> |
2962 #define __ masm-> |
2940 |
2963 |