< prev index next >

src/hotspot/cpu/aarch64/stubGenerator_aarch64.cpp

Print this page




4920     StubRoutines::_call_stub_entry =
4921       generate_call_stub(StubRoutines::_call_stub_return_address);
4922 
4923     // is referenced by megamorphic call
4924     StubRoutines::_catch_exception_entry = generate_catch_exception();
4925 
4926     // Build this early so it's available for the interpreter.
4927     StubRoutines::_throw_StackOverflowError_entry =
4928       generate_throw_exception("StackOverflowError throw_exception",
4929                                CAST_FROM_FN_PTR(address,
4930                                                 SharedRuntime::throw_StackOverflowError));
4931     StubRoutines::_throw_delayed_StackOverflowError_entry =
4932       generate_throw_exception("delayed StackOverflowError throw_exception",
4933                                CAST_FROM_FN_PTR(address,
4934                                                 SharedRuntime::throw_delayed_StackOverflowError));
4935     if (UseCRC32Intrinsics) {
4936       // set table address before stub generation which use it
4937       StubRoutines::_crc_table_adr = (address)StubRoutines::aarch64::_crc_table;
4938       StubRoutines::_updateBytesCRC32 = generate_updateBytesCRC32();
4939     }




4940   }
4941 
4942   void generate_all() {
4943     // support for verify_oop (must happen after universe_init)
4944     StubRoutines::_verify_oop_subroutine_entry     = generate_verify_oop();
4945     StubRoutines::_throw_AbstractMethodError_entry =
4946       generate_throw_exception("AbstractMethodError throw_exception",
4947                                CAST_FROM_FN_PTR(address,
4948                                                 SharedRuntime::
4949                                                 throw_AbstractMethodError));
4950 
4951     StubRoutines::_throw_IncompatibleClassChangeError_entry =
4952       generate_throw_exception("IncompatibleClassChangeError throw_exception",
4953                                CAST_FROM_FN_PTR(address,
4954                                                 SharedRuntime::
4955                                                 throw_IncompatibleClassChangeError));
4956 
4957     StubRoutines::_throw_NullPointerException_at_call_entry =
4958       generate_throw_exception("NullPointerException at call throw_exception",
4959                                CAST_FROM_FN_PTR(address,


4995 #ifndef BUILTIN_SIM
4996     // generate GHASH intrinsics code
4997     if (UseGHASHIntrinsics) {
4998       StubRoutines::_ghash_processBlocks = generate_ghash_processBlocks();
4999     }
5000 
5001     if (UseAESIntrinsics) {
5002       StubRoutines::_aescrypt_encryptBlock = generate_aescrypt_encryptBlock();
5003       StubRoutines::_aescrypt_decryptBlock = generate_aescrypt_decryptBlock();
5004       StubRoutines::_cipherBlockChaining_encryptAESCrypt = generate_cipherBlockChaining_encryptAESCrypt();
5005       StubRoutines::_cipherBlockChaining_decryptAESCrypt = generate_cipherBlockChaining_decryptAESCrypt();
5006     }
5007 
5008     if (UseSHA1Intrinsics) {
5009       StubRoutines::_sha1_implCompress     = generate_sha1_implCompress(false,   "sha1_implCompress");
5010       StubRoutines::_sha1_implCompressMB   = generate_sha1_implCompress(true,    "sha1_implCompressMB");
5011     }
5012     if (UseSHA256Intrinsics) {
5013       StubRoutines::_sha256_implCompress   = generate_sha256_implCompress(false, "sha256_implCompress");
5014       StubRoutines::_sha256_implCompressMB = generate_sha256_implCompress(true,  "sha256_implCompressMB");
5015     }
5016 
5017     if (UseCRC32CIntrinsics) {
5018       StubRoutines::_updateBytesCRC32C = generate_updateBytesCRC32C();
5019     }
5020 
5021     // generate Adler32 intrinsics code
5022     if (UseAdler32Intrinsics) {
5023       StubRoutines::_updateBytesAdler32 = generate_updateBytesAdler32();
5024     }
5025 
5026     // Safefetch stubs.
5027     generate_safefetch("SafeFetch32", sizeof(int),     &StubRoutines::_safefetch32_entry,
5028                                                        &StubRoutines::_safefetch32_fault_pc,
5029                                                        &StubRoutines::_safefetch32_continuation_pc);
5030     generate_safefetch("SafeFetchN", sizeof(intptr_t), &StubRoutines::_safefetchN_entry,
5031                                                        &StubRoutines::_safefetchN_fault_pc,
5032                                                        &StubRoutines::_safefetchN_continuation_pc);
5033 #endif
5034     StubRoutines::aarch64::set_completed();
5035   }
5036 
5037  public:
5038   StubGenerator(CodeBuffer* code, bool all) : StubCodeGenerator(code) {


4920     StubRoutines::_call_stub_entry =
4921       generate_call_stub(StubRoutines::_call_stub_return_address);
4922 
4923     // is referenced by megamorphic call
4924     StubRoutines::_catch_exception_entry = generate_catch_exception();
4925 
4926     // Build this early so it's available for the interpreter.
4927     StubRoutines::_throw_StackOverflowError_entry =
4928       generate_throw_exception("StackOverflowError throw_exception",
4929                                CAST_FROM_FN_PTR(address,
4930                                                 SharedRuntime::throw_StackOverflowError));
4931     StubRoutines::_throw_delayed_StackOverflowError_entry =
4932       generate_throw_exception("delayed StackOverflowError throw_exception",
4933                                CAST_FROM_FN_PTR(address,
4934                                                 SharedRuntime::throw_delayed_StackOverflowError));
4935     if (UseCRC32Intrinsics) {
4936       // set table address before stub generation which use it
4937       StubRoutines::_crc_table_adr = (address)StubRoutines::aarch64::_crc_table;
4938       StubRoutines::_updateBytesCRC32 = generate_updateBytesCRC32();
4939     }
4940 
4941     if (UseCRC32CIntrinsics) {
4942       StubRoutines::_updateBytesCRC32C = generate_updateBytesCRC32C();
4943     }
4944   }
4945 
4946   void generate_all() {
4947     // support for verify_oop (must happen after universe_init)
4948     StubRoutines::_verify_oop_subroutine_entry     = generate_verify_oop();
4949     StubRoutines::_throw_AbstractMethodError_entry =
4950       generate_throw_exception("AbstractMethodError throw_exception",
4951                                CAST_FROM_FN_PTR(address,
4952                                                 SharedRuntime::
4953                                                 throw_AbstractMethodError));
4954 
4955     StubRoutines::_throw_IncompatibleClassChangeError_entry =
4956       generate_throw_exception("IncompatibleClassChangeError throw_exception",
4957                                CAST_FROM_FN_PTR(address,
4958                                                 SharedRuntime::
4959                                                 throw_IncompatibleClassChangeError));
4960 
4961     StubRoutines::_throw_NullPointerException_at_call_entry =
4962       generate_throw_exception("NullPointerException at call throw_exception",
4963                                CAST_FROM_FN_PTR(address,


4999 #ifndef BUILTIN_SIM
5000     // generate GHASH intrinsics code
5001     if (UseGHASHIntrinsics) {
5002       StubRoutines::_ghash_processBlocks = generate_ghash_processBlocks();
5003     }
5004 
5005     if (UseAESIntrinsics) {
5006       StubRoutines::_aescrypt_encryptBlock = generate_aescrypt_encryptBlock();
5007       StubRoutines::_aescrypt_decryptBlock = generate_aescrypt_decryptBlock();
5008       StubRoutines::_cipherBlockChaining_encryptAESCrypt = generate_cipherBlockChaining_encryptAESCrypt();
5009       StubRoutines::_cipherBlockChaining_decryptAESCrypt = generate_cipherBlockChaining_decryptAESCrypt();
5010     }
5011 
5012     if (UseSHA1Intrinsics) {
5013       StubRoutines::_sha1_implCompress     = generate_sha1_implCompress(false,   "sha1_implCompress");
5014       StubRoutines::_sha1_implCompressMB   = generate_sha1_implCompress(true,    "sha1_implCompressMB");
5015     }
5016     if (UseSHA256Intrinsics) {
5017       StubRoutines::_sha256_implCompress   = generate_sha256_implCompress(false, "sha256_implCompress");
5018       StubRoutines::_sha256_implCompressMB = generate_sha256_implCompress(true,  "sha256_implCompressMB");




5019     }
5020 
5021     // generate Adler32 intrinsics code
5022     if (UseAdler32Intrinsics) {
5023       StubRoutines::_updateBytesAdler32 = generate_updateBytesAdler32();
5024     }
5025 
5026     // Safefetch stubs.
5027     generate_safefetch("SafeFetch32", sizeof(int),     &StubRoutines::_safefetch32_entry,
5028                                                        &StubRoutines::_safefetch32_fault_pc,
5029                                                        &StubRoutines::_safefetch32_continuation_pc);
5030     generate_safefetch("SafeFetchN", sizeof(intptr_t), &StubRoutines::_safefetchN_entry,
5031                                                        &StubRoutines::_safefetchN_fault_pc,
5032                                                        &StubRoutines::_safefetchN_continuation_pc);
5033 #endif
5034     StubRoutines::aarch64::set_completed();
5035   }
5036 
5037  public:
5038   StubGenerator(CodeBuffer* code, bool all) : StubCodeGenerator(code) {
< prev index next >