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