src/cpu/x86/vm/stubGenerator_x86_32.cpp
Print this page
rev 3227 : 7133857: exp() and pow() should use the x87 ISA on x86
Summary: use x87 instructions to implement exp() and pow() in interpreter/c1/c2.
Reviewed-by:
@@ -2134,15 +2134,27 @@
__ fld_d(Address(rsp, 4));
__ trigfunc('t');
__ ret(0);
}
+ {
+ StubCodeMark mark(this, "StubRoutines", "exp");
+ StubRoutines::_intrinsic_exp = (double (*)(double)) __ pc();
- // The intrinsic version of these seem to return the same value as
- // the strict version.
- StubRoutines::_intrinsic_exp = SharedRuntime::dexp;
- StubRoutines::_intrinsic_pow = SharedRuntime::dpow;
+ __ fld_d(Address(rsp, 4));
+ __ pow_or_exp(true, 0);
+ __ ret(0);
+ }
+ {
+ StubCodeMark mark(this, "StubRoutines", "pow");
+ StubRoutines::_intrinsic_pow = (double (*)(double,double)) __ pc();
+
+ __ fld_d(Address(rsp, 12));
+ __ fld_d(Address(rsp, 4));
+ __ pow_or_exp(false, 0);
+ __ ret(0);
+ }
}
public:
// Information about frame layout at time of blocking runtime call.
// Note that we only have to preserve callee-saved registers since