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