251 static address _dexp;
252 static address _dlog;
253 static address _dlog10;
254 static address _dpow;
255 static address _dsin;
256 static address _dcos;
257 static address _dlibm_sin_cos_huge;
258 static address _dlibm_reduce_pi04l;
259 static address _dlibm_tan_cot_huge;
260 static address _dtan;
261 static address _fmod;
262
263 static address _f2hf;
264 static address _hf2f;
265
266 static address _method_entry_barrier;
267
268 static address _cont_thaw;
269 static address _cont_returnBarrier;
270 static address _cont_returnBarrierExc;
271
272 JFR_ONLY(static RuntimeStub* _jfr_write_checkpoint_stub;)
273 JFR_ONLY(static address _jfr_write_checkpoint;)
274 JFR_ONLY(static RuntimeStub* _jfr_return_lease_stub;)
275 JFR_ONLY(static address _jfr_return_lease;)
276
277 // Vector Math Routines
278 static address _vector_f_math[VectorSupport::NUM_VEC_SIZES][VectorSupport::NUM_SVML_OP];
279 static address _vector_d_math[VectorSupport::NUM_VEC_SIZES][VectorSupport::NUM_SVML_OP];
280
281 static address _upcall_stub_exception_handler;
282
283 static address _lookup_secondary_supers_table_stubs[];
284 static address _lookup_secondary_supers_table_slow_path_stub;
285
286 public:
287 // Initialization/Testing
288 static void initialize_initial_stubs(); // must happen before universe::genesis
289 static void initialize_continuation_stubs(); // must happen after universe::genesis
290 static void initialize_compiler_stubs(); // must happen after universe::genesis
469 static address hf2f_adr() { return _hf2f; }
470
471 static jshort f2hf(jfloat x) {
472 assert(_f2hf != nullptr, "stub is not implemented on this platform");
473 MACOS_AARCH64_ONLY(ThreadWXEnable wx(WXExec, Thread::current());) // About to call into code cache
474 typedef jshort (*f2hf_stub_t)(jfloat x);
475 return ((f2hf_stub_t)_f2hf)(x);
476 }
477 static jfloat hf2f(jshort x) {
478 assert(_hf2f != nullptr, "stub is not implemented on this platform");
479 MACOS_AARCH64_ONLY(ThreadWXEnable wx(WXExec, Thread::current());) // About to call into code cache
480 typedef jfloat (*hf2f_stub_t)(jshort x);
481 return ((hf2f_stub_t)_hf2f)(x);
482 }
483
484 static address method_entry_barrier() { return _method_entry_barrier; }
485
486 static address cont_thaw() { return _cont_thaw; }
487 static address cont_returnBarrier() { return _cont_returnBarrier; }
488 static address cont_returnBarrierExc(){return _cont_returnBarrierExc; }
489
490 JFR_ONLY(static address jfr_write_checkpoint() { return _jfr_write_checkpoint; })
491 JFR_ONLY(static address jfr_return_lease() { return _jfr_return_lease; })
492
493 static address upcall_stub_exception_handler() {
494 assert(_upcall_stub_exception_handler != nullptr, "not implemented");
495 return _upcall_stub_exception_handler;
496 }
497
498 static address lookup_secondary_supers_table_stub(u1 slot) {
499 assert(slot < Klass::SECONDARY_SUPERS_TABLE_SIZE, "out of bounds");
500 assert(_lookup_secondary_supers_table_stubs[slot] != nullptr, "not implemented");
501 return _lookup_secondary_supers_table_stubs[slot];
502 }
503
504 static address lookup_secondary_supers_table_slow_path_stub() {
505 assert(_lookup_secondary_supers_table_slow_path_stub != nullptr, "not implemented");
506 return _lookup_secondary_supers_table_slow_path_stub;
507 }
508
|
251 static address _dexp;
252 static address _dlog;
253 static address _dlog10;
254 static address _dpow;
255 static address _dsin;
256 static address _dcos;
257 static address _dlibm_sin_cos_huge;
258 static address _dlibm_reduce_pi04l;
259 static address _dlibm_tan_cot_huge;
260 static address _dtan;
261 static address _fmod;
262
263 static address _f2hf;
264 static address _hf2f;
265
266 static address _method_entry_barrier;
267
268 static address _cont_thaw;
269 static address _cont_returnBarrier;
270 static address _cont_returnBarrierExc;
271 static address _cont_preempt_stub;
272 static address _cont_resume_monitor_operation;
273 static address _cont_resume_compiler_adapter;
274
275 JFR_ONLY(static RuntimeStub* _jfr_write_checkpoint_stub;)
276 JFR_ONLY(static address _jfr_write_checkpoint;)
277 JFR_ONLY(static RuntimeStub* _jfr_return_lease_stub;)
278 JFR_ONLY(static address _jfr_return_lease;)
279
280 // Vector Math Routines
281 static address _vector_f_math[VectorSupport::NUM_VEC_SIZES][VectorSupport::NUM_SVML_OP];
282 static address _vector_d_math[VectorSupport::NUM_VEC_SIZES][VectorSupport::NUM_SVML_OP];
283
284 static address _upcall_stub_exception_handler;
285
286 static address _lookup_secondary_supers_table_stubs[];
287 static address _lookup_secondary_supers_table_slow_path_stub;
288
289 public:
290 // Initialization/Testing
291 static void initialize_initial_stubs(); // must happen before universe::genesis
292 static void initialize_continuation_stubs(); // must happen after universe::genesis
293 static void initialize_compiler_stubs(); // must happen after universe::genesis
472 static address hf2f_adr() { return _hf2f; }
473
474 static jshort f2hf(jfloat x) {
475 assert(_f2hf != nullptr, "stub is not implemented on this platform");
476 MACOS_AARCH64_ONLY(ThreadWXEnable wx(WXExec, Thread::current());) // About to call into code cache
477 typedef jshort (*f2hf_stub_t)(jfloat x);
478 return ((f2hf_stub_t)_f2hf)(x);
479 }
480 static jfloat hf2f(jshort x) {
481 assert(_hf2f != nullptr, "stub is not implemented on this platform");
482 MACOS_AARCH64_ONLY(ThreadWXEnable wx(WXExec, Thread::current());) // About to call into code cache
483 typedef jfloat (*hf2f_stub_t)(jshort x);
484 return ((hf2f_stub_t)_hf2f)(x);
485 }
486
487 static address method_entry_barrier() { return _method_entry_barrier; }
488
489 static address cont_thaw() { return _cont_thaw; }
490 static address cont_returnBarrier() { return _cont_returnBarrier; }
491 static address cont_returnBarrierExc(){return _cont_returnBarrierExc; }
492 static address cont_preempt_stub() { return _cont_preempt_stub; }
493 static address cont_resume_monitor_operation() { return _cont_resume_monitor_operation; }
494 static address cont_resume_compiler_adapter() { return _cont_resume_compiler_adapter; }
495
496 JFR_ONLY(static address jfr_write_checkpoint() { return _jfr_write_checkpoint; })
497 JFR_ONLY(static address jfr_return_lease() { return _jfr_return_lease; })
498
499 static address upcall_stub_exception_handler() {
500 assert(_upcall_stub_exception_handler != nullptr, "not implemented");
501 return _upcall_stub_exception_handler;
502 }
503
504 static address lookup_secondary_supers_table_stub(u1 slot) {
505 assert(slot < Klass::SECONDARY_SUPERS_TABLE_SIZE, "out of bounds");
506 assert(_lookup_secondary_supers_table_stubs[slot] != nullptr, "not implemented");
507 return _lookup_secondary_supers_table_stubs[slot];
508 }
509
510 static address lookup_secondary_supers_table_slow_path_stub() {
511 assert(_lookup_secondary_supers_table_slow_path_stub != nullptr, "not implemented");
512 return _lookup_secondary_supers_table_slow_path_stub;
513 }
514
|