205 static address _squareToLen; |
205 static address _squareToLen; |
206 static address _mulAdd; |
206 static address _mulAdd; |
207 static address _montgomeryMultiply; |
207 static address _montgomeryMultiply; |
208 static address _montgomerySquare; |
208 static address _montgomerySquare; |
209 |
209 |
|
210 static address _dexp; |
|
211 |
210 // These are versions of the java.lang.Math methods which perform |
212 // These are versions of the java.lang.Math methods which perform |
211 // the same operations as the intrinsic version. They are used for |
213 // the same operations as the intrinsic version. They are used for |
212 // constant folding in the compiler to ensure equivalence. If the |
214 // constant folding in the compiler to ensure equivalence. If the |
213 // intrinsic version returns the same result as the strict version |
215 // intrinsic version returns the same result as the strict version |
214 // then they can be set to the appropriate function from |
216 // then they can be set to the appropriate function from |
215 // SharedRuntime. |
217 // SharedRuntime. |
216 static double (*_intrinsic_log)(double); |
218 static double (*_intrinsic_log)(double); |
217 static double (*_intrinsic_log10)(double); |
219 static double (*_intrinsic_log10)(double); |
218 static double (*_intrinsic_exp)(double); |
|
219 static double (*_intrinsic_pow)(double, double); |
220 static double (*_intrinsic_pow)(double, double); |
220 static double (*_intrinsic_sin)(double); |
221 static double (*_intrinsic_sin)(double); |
221 static double (*_intrinsic_cos)(double); |
222 static double (*_intrinsic_cos)(double); |
222 static double (*_intrinsic_tan)(double); |
223 static double (*_intrinsic_tan)(double); |
223 |
224 |
373 static address squareToLen() {return _squareToLen; } |
374 static address squareToLen() {return _squareToLen; } |
374 static address mulAdd() {return _mulAdd; } |
375 static address mulAdd() {return _mulAdd; } |
375 static address montgomeryMultiply() { return _montgomeryMultiply; } |
376 static address montgomeryMultiply() { return _montgomeryMultiply; } |
376 static address montgomerySquare() { return _montgomerySquare; } |
377 static address montgomerySquare() { return _montgomerySquare; } |
377 |
378 |
|
379 static address dexp() {return _dexp; } |
|
380 |
378 static address select_fill_function(BasicType t, bool aligned, const char* &name); |
381 static address select_fill_function(BasicType t, bool aligned, const char* &name); |
379 |
382 |
380 static address zero_aligned_words() { return _zero_aligned_words; } |
383 static address zero_aligned_words() { return _zero_aligned_words; } |
381 |
384 |
382 static double intrinsic_log(double d) { |
385 static double intrinsic_log(double d) { |
384 return _intrinsic_log(d); |
387 return _intrinsic_log(d); |
385 } |
388 } |
386 static double intrinsic_log10(double d) { |
389 static double intrinsic_log10(double d) { |
387 assert(_intrinsic_log != NULL, "must be defined"); |
390 assert(_intrinsic_log != NULL, "must be defined"); |
388 return _intrinsic_log10(d); |
391 return _intrinsic_log10(d); |
389 } |
|
390 static double intrinsic_exp(double d) { |
|
391 assert(_intrinsic_exp != NULL, "must be defined"); |
|
392 return _intrinsic_exp(d); |
|
393 } |
392 } |
394 static double intrinsic_pow(double d, double d2) { |
393 static double intrinsic_pow(double d, double d2) { |
395 assert(_intrinsic_pow != NULL, "must be defined"); |
394 assert(_intrinsic_pow != NULL, "must be defined"); |
396 return _intrinsic_pow(d, d2); |
395 return _intrinsic_pow(d, d2); |
397 } |
396 } |