199
200 static address _crc32c_table_addr;
201 static address _updateBytesCRC32C;
202 static address _updateBytesAdler32;
203
204 static address _multiplyToLen;
205 static address _squareToLen;
206 static address _mulAdd;
207 static address _montgomeryMultiply;
208 static address _montgomerySquare;
209
210 static address _dexp;
211 static address _dlog;
212
213 // These are versions of the java.lang.Math methods which perform
214 // the same operations as the intrinsic version. They are used for
215 // constant folding in the compiler to ensure equivalence. If the
216 // intrinsic version returns the same result as the strict version
217 // then they can be set to the appropriate function from
218 // SharedRuntime.
219 static double (*_intrinsic_log)(double);
220 static double (*_intrinsic_log10)(double);
221 static double (*_intrinsic_pow)(double, double);
222 static double (*_intrinsic_sin)(double);
223 static double (*_intrinsic_cos)(double);
224 static double (*_intrinsic_tan)(double);
225
226 // Safefetch stubs.
227 static address _safefetch32_entry;
228 static address _safefetch32_fault_pc;
229 static address _safefetch32_continuation_pc;
230 static address _safefetchN_entry;
231 static address _safefetchN_fault_pc;
232 static address _safefetchN_continuation_pc;
233
234 public:
235 // Initialization/Testing
236 static void initialize1(); // must happen before universe::genesis
237 static void initialize2(); // must happen after universe::genesis
238
239 static bool is_stub_code(address addr) { return contains(addr); }
367 static address updateBytesCRC32() { return _updateBytesCRC32; }
368 static address crc_table_addr() { return _crc_table_adr; }
369
370 static address crc32c_table_addr() { return _crc32c_table_addr; }
371 static address updateBytesCRC32C() { return _updateBytesCRC32C; }
372 static address updateBytesAdler32() { return _updateBytesAdler32; }
373
374 static address multiplyToLen() {return _multiplyToLen; }
375 static address squareToLen() {return _squareToLen; }
376 static address mulAdd() {return _mulAdd; }
377 static address montgomeryMultiply() { return _montgomeryMultiply; }
378 static address montgomerySquare() { return _montgomerySquare; }
379
380 static address dexp() { return _dexp; }
381 static address dlog() { return _dlog; }
382
383 static address select_fill_function(BasicType t, bool aligned, const char* &name);
384
385 static address zero_aligned_words() { return _zero_aligned_words; }
386
387 static double intrinsic_log(double d) {
388 assert(_intrinsic_log != NULL, "must be defined");
389 return _intrinsic_log(d);
390 }
391 static double intrinsic_log10(double d) {
392 assert(_intrinsic_log != NULL, "must be defined");
393 return _intrinsic_log10(d);
394 }
395 static double intrinsic_pow(double d, double d2) {
396 assert(_intrinsic_pow != NULL, "must be defined");
397 return _intrinsic_pow(d, d2);
398 }
399 static double intrinsic_sin(double d) {
400 assert(_intrinsic_sin != NULL, "must be defined");
401 return _intrinsic_sin(d);
402 }
403 static double intrinsic_cos(double d) {
404 assert(_intrinsic_cos != NULL, "must be defined");
405 return _intrinsic_cos(d);
406 }
407 static double intrinsic_tan(double d) {
408 assert(_intrinsic_tan != NULL, "must be defined");
409 return _intrinsic_tan(d);
410 }
411
412 //
|
199
200 static address _crc32c_table_addr;
201 static address _updateBytesCRC32C;
202 static address _updateBytesAdler32;
203
204 static address _multiplyToLen;
205 static address _squareToLen;
206 static address _mulAdd;
207 static address _montgomeryMultiply;
208 static address _montgomerySquare;
209
210 static address _dexp;
211 static address _dlog;
212
213 // These are versions of the java.lang.Math methods which perform
214 // the same operations as the intrinsic version. They are used for
215 // constant folding in the compiler to ensure equivalence. If the
216 // intrinsic version returns the same result as the strict version
217 // then they can be set to the appropriate function from
218 // SharedRuntime.
219 static double (*_intrinsic_log10)(double);
220 static double (*_intrinsic_pow)(double, double);
221 static double (*_intrinsic_sin)(double);
222 static double (*_intrinsic_cos)(double);
223 static double (*_intrinsic_tan)(double);
224
225 // Safefetch stubs.
226 static address _safefetch32_entry;
227 static address _safefetch32_fault_pc;
228 static address _safefetch32_continuation_pc;
229 static address _safefetchN_entry;
230 static address _safefetchN_fault_pc;
231 static address _safefetchN_continuation_pc;
232
233 public:
234 // Initialization/Testing
235 static void initialize1(); // must happen before universe::genesis
236 static void initialize2(); // must happen after universe::genesis
237
238 static bool is_stub_code(address addr) { return contains(addr); }
366 static address updateBytesCRC32() { return _updateBytesCRC32; }
367 static address crc_table_addr() { return _crc_table_adr; }
368
369 static address crc32c_table_addr() { return _crc32c_table_addr; }
370 static address updateBytesCRC32C() { return _updateBytesCRC32C; }
371 static address updateBytesAdler32() { return _updateBytesAdler32; }
372
373 static address multiplyToLen() {return _multiplyToLen; }
374 static address squareToLen() {return _squareToLen; }
375 static address mulAdd() {return _mulAdd; }
376 static address montgomeryMultiply() { return _montgomeryMultiply; }
377 static address montgomerySquare() { return _montgomerySquare; }
378
379 static address dexp() { return _dexp; }
380 static address dlog() { return _dlog; }
381
382 static address select_fill_function(BasicType t, bool aligned, const char* &name);
383
384 static address zero_aligned_words() { return _zero_aligned_words; }
385
386 static double intrinsic_log10(double d) {
387 assert(_intrinsic_log10 != NULL, "must be defined");
388 return _intrinsic_log10(d);
389 }
390 static double intrinsic_pow(double d, double d2) {
391 assert(_intrinsic_pow != NULL, "must be defined");
392 return _intrinsic_pow(d, d2);
393 }
394 static double intrinsic_sin(double d) {
395 assert(_intrinsic_sin != NULL, "must be defined");
396 return _intrinsic_sin(d);
397 }
398 static double intrinsic_cos(double d) {
399 assert(_intrinsic_cos != NULL, "must be defined");
400 return _intrinsic_cos(d);
401 }
402 static double intrinsic_tan(double d) {
403 assert(_intrinsic_tan != NULL, "must be defined");
404 return _intrinsic_tan(d);
405 }
406
407 //
|