--- old/src/cpu/x86/vm/stubGenerator_x86_32.cpp 2015-10-13 18:20:43.453173600 -0700 +++ new/src/cpu/x86/vm/stubGenerator_x86_32.cpp 2015-10-13 18:20:43.108139100 -0700 @@ -2095,14 +2095,6 @@ void generate_math_stubs() { { - StubCodeMark mark(this, "StubRoutines", "log"); - StubRoutines::_intrinsic_log = (double (*)(double)) __ pc(); - - __ fld_d(Address(rsp, 4)); - __ flog(); - __ ret(0); - } - { StubCodeMark mark(this, "StubRoutines", "log10"); StubRoutines::_intrinsic_log10 = (double (*)(double)) __ pc(); @@ -3065,6 +3057,32 @@ } + address generate_libmLog() { + address start = __ pc(); + + const XMMRegister x0 = xmm0; + const XMMRegister x1 = xmm1; + const XMMRegister x2 = xmm2; + const XMMRegister x3 = xmm3; + + const XMMRegister x4 = xmm4; + const XMMRegister x5 = xmm5; + const XMMRegister x6 = xmm6; + const XMMRegister x7 = xmm7; + + const Register tmp = rbx; + + BLOCK_COMMENT("Entry:"); + __ enter(); // required for proper stackwalking of RuntimeStub frame + __ fast_log(x0, x1, x2, x3, x4, x5, x6, x7, rax, rcx, rdx, tmp); + __ leave(); // required for proper stackwalking of RuntimeStub frame + __ ret(0); + + return start; + + } + + // Safefetch stubs. void generate_safefetch(const char* name, int size, address* entry, @@ -3288,6 +3306,7 @@ } if (VM_Version::supports_sse2()) { StubRoutines::_dexp = generate_libmExp(); + StubRoutines::_dlog = generate_libmLog(); } }