src/cpu/x86/vm/assembler_x86.cpp
Index Unified diffs Context diffs Sdiffs Wdiffs Patch New Old Previous File Next File 6791168 Cdiff src/cpu/x86/vm/assembler_x86.cpp

src/cpu/x86/vm/assembler_x86.cpp

Print this page

        

*** 6941,6952 **** push(tmp); } Label slow_case, done; // x ?<= pi/4 ! fld_d(ExternalAddress((address)&pi_4)); fld_s(1); // Stack: X PI/4 X fabs(); // Stack: |X| PI/4 X fcmp(tmp); jcc(Assembler::above, slow_case); --- 6941,6954 ---- push(tmp); } Label slow_case, done; + ExternalAddress pi4_adr = (address)&pi_4; + if (reachable(pi4_adr)) { // x ?<= pi/4 ! fld_d(pi4_adr); // ExternalAddress((address)&pi_4)); fld_s(1); // Stack: X PI/4 X fabs(); // Stack: |X| PI/4 X fcmp(tmp); jcc(Assembler::above, slow_case);
*** 6964,6973 **** --- 6966,6976 ---- default: assert(false, "bad intrinsic"); break; } jmp(done); + } // slow case: runtime call bind(slow_case); // Preserve registers across runtime call pusha();
src/cpu/x86/vm/assembler_x86.cpp
Index Unified diffs Context diffs Sdiffs Wdiffs Patch New Old Previous File Next File