3479 // Entry points that exist in all platforms.
3480 // Note: This is code that could be shared among different platforms - however the
3481 // benefit seems to be smaller than the disadvantage of having a
3482 // much more complicated generator structure. See also comment in
3483 // stubRoutines.hpp.
3484
3485 StubRoutines::_forward_exception_entry = generate_forward_exception();
3486 StubRoutines::_call_stub_entry = generate_call_stub(StubRoutines::_call_stub_return_address);
3487 StubRoutines::_catch_exception_entry = generate_catch_exception();
3488
3489 // Build this early so it's available for the interpreter.
3490 StubRoutines::_throw_StackOverflowError_entry =
3491 generate_throw_exception("StackOverflowError throw_exception",
3492 CAST_FROM_FN_PTR(address, SharedRuntime::throw_StackOverflowError), false);
3493 StubRoutines::_throw_delayed_StackOverflowError_entry =
3494 generate_throw_exception("delayed StackOverflowError throw_exception",
3495 CAST_FROM_FN_PTR(address, SharedRuntime::throw_delayed_StackOverflowError), false);
3496
3497 // CRC32 Intrinsics.
3498 if (UseCRC32Intrinsics) {
3499 StubRoutines::_crc_table_adr = (address)StubRoutines::ppc64::_crc_table;
3500 if (VM_Version::has_vpmsumb()) {
3501 StubRoutines::ppc64::_crc_constants = StubRoutines::ppc64::generate_crc_constants(REVERSE_CRC32_POLY);
3502 }
3503 StubRoutines::_updateBytesCRC32 = generate_CRC32_updateBytes(false);
3504 }
3505
3506 // CRC32C Intrinsics.
3507 if (UseCRC32CIntrinsics) {
3508 StubRoutines::_crc32c_table_addr = (address)StubRoutines::ppc64::_crc32c_table;
3509 if (VM_Version::has_vpmsumb()) {
3510 StubRoutines::ppc64::_crc32c_constants = StubRoutines::ppc64::generate_crc_constants(REVERSE_CRC32C_POLY);
3511 }
3512 StubRoutines::_updateBytesCRC32C = generate_CRC32_updateBytes(true);
3513 }
3514 }
3515
3516 void generate_all() {
3517 // Generates all stubs and initializes the entry points
3518
3519 // These entry points require SharedInfo::stack0 to be set up in
3520 // non-core builds
3521 StubRoutines::_throw_AbstractMethodError_entry = generate_throw_exception("AbstractMethodError throw_exception", CAST_FROM_FN_PTR(address, SharedRuntime::throw_AbstractMethodError), false);
3522 // Handle IncompatibleClassChangeError in itable stubs.
3523 StubRoutines::_throw_IncompatibleClassChangeError_entry= generate_throw_exception("IncompatibleClassChangeError throw_exception", CAST_FROM_FN_PTR(address, SharedRuntime::throw_IncompatibleClassChangeError), false);
3524 StubRoutines::_throw_NullPointerException_at_call_entry= generate_throw_exception("NullPointerException at call throw_exception", CAST_FROM_FN_PTR(address, SharedRuntime::throw_NullPointerException_at_call), false);
3525
3526 // support for verify_oop (must happen after universe_init)
3527 StubRoutines::_verify_oop_subroutine_entry = generate_verify_oop();
3528
3529 // arraycopy stubs used by compilers
3530 generate_arraycopy_stubs();
3531
|
3479 // Entry points that exist in all platforms.
3480 // Note: This is code that could be shared among different platforms - however the
3481 // benefit seems to be smaller than the disadvantage of having a
3482 // much more complicated generator structure. See also comment in
3483 // stubRoutines.hpp.
3484
3485 StubRoutines::_forward_exception_entry = generate_forward_exception();
3486 StubRoutines::_call_stub_entry = generate_call_stub(StubRoutines::_call_stub_return_address);
3487 StubRoutines::_catch_exception_entry = generate_catch_exception();
3488
3489 // Build this early so it's available for the interpreter.
3490 StubRoutines::_throw_StackOverflowError_entry =
3491 generate_throw_exception("StackOverflowError throw_exception",
3492 CAST_FROM_FN_PTR(address, SharedRuntime::throw_StackOverflowError), false);
3493 StubRoutines::_throw_delayed_StackOverflowError_entry =
3494 generate_throw_exception("delayed StackOverflowError throw_exception",
3495 CAST_FROM_FN_PTR(address, SharedRuntime::throw_delayed_StackOverflowError), false);
3496
3497 // CRC32 Intrinsics.
3498 if (UseCRC32Intrinsics) {
3499 StubRoutines::_crc_table_adr = StubRoutines::generate_crc_constants(REVERSE_CRC32_POLY);
3500 StubRoutines::_updateBytesCRC32 = generate_CRC32_updateBytes(false);
3501 }
3502
3503 // CRC32C Intrinsics.
3504 if (UseCRC32CIntrinsics) {
3505 StubRoutines::_crc32c_table_addr = StubRoutines::generate_crc_constants(REVERSE_CRC32C_POLY);
3506 StubRoutines::_updateBytesCRC32C = generate_CRC32_updateBytes(true);
3507 }
3508 }
3509
3510 void generate_all() {
3511 // Generates all stubs and initializes the entry points
3512
3513 // These entry points require SharedInfo::stack0 to be set up in
3514 // non-core builds
3515 StubRoutines::_throw_AbstractMethodError_entry = generate_throw_exception("AbstractMethodError throw_exception", CAST_FROM_FN_PTR(address, SharedRuntime::throw_AbstractMethodError), false);
3516 // Handle IncompatibleClassChangeError in itable stubs.
3517 StubRoutines::_throw_IncompatibleClassChangeError_entry= generate_throw_exception("IncompatibleClassChangeError throw_exception", CAST_FROM_FN_PTR(address, SharedRuntime::throw_IncompatibleClassChangeError), false);
3518 StubRoutines::_throw_NullPointerException_at_call_entry= generate_throw_exception("NullPointerException at call throw_exception", CAST_FROM_FN_PTR(address, SharedRuntime::throw_NullPointerException_at_call), false);
3519
3520 // support for verify_oop (must happen after universe_init)
3521 StubRoutines::_verify_oop_subroutine_entry = generate_verify_oop();
3522
3523 // arraycopy stubs used by compilers
3524 generate_arraycopy_stubs();
3525
|