equal
deleted
inserted
replaced
6952 if (!VM_Version::supports_cmov()) { |
6952 if (!VM_Version::supports_cmov()) { |
6953 // fcmp needs a temporary so preserve rdx, |
6953 // fcmp needs a temporary so preserve rdx, |
6954 tmp = rdx; |
6954 tmp = rdx; |
6955 } |
6955 } |
6956 Register tmp2 = rax; |
6956 Register tmp2 = rax; |
6957 NOT_LP64(Register tmp3 = rcx;) |
6957 Register tmp3 = rcx; |
6958 |
6958 |
6959 if (is_exp) { |
6959 if (is_exp) { |
6960 // Stack: X |
6960 // Stack: X |
6961 fld_s(0); // duplicate argument for runtime call. Stack: X X |
6961 fld_s(0); // duplicate argument for runtime call. Stack: X X |
6962 fast_exp(); // Stack: exp(X) X |
6962 fast_exp(); // Stack: exp(X) X |
7079 bind(integer); |
7079 bind(integer); |
7080 } |
7080 } |
7081 #else |
7081 #else |
7082 { |
7082 { |
7083 Label integer; |
7083 Label integer; |
7084 shlq(tmp2, 1); |
7084 mov(tmp3, tmp2); // preserve tmp2 for parity check below |
|
7085 shlq(tmp3, 1); |
7085 jcc(Assembler::carryClear, integer); |
7086 jcc(Assembler::carryClear, integer); |
7086 jcc(Assembler::notZero, integer); |
7087 jcc(Assembler::notZero, integer); |
7087 stop("integer indefinite value shouldn't be seen here"); |
7088 stop("integer indefinite value shouldn't be seen here"); |
7088 bind(integer); |
7089 bind(integer); |
7089 } |
7090 } |