< prev index next >

src/cpu/x86/vm/stubGenerator_x86_64.cpp

Print this page




5115                                                 SharedRuntime::
5116                                                 throw_StackOverflowError));
5117     StubRoutines::_throw_delayed_StackOverflowError_entry =
5118       generate_throw_exception("delayed StackOverflowError throw_exception",
5119                                CAST_FROM_FN_PTR(address,
5120                                                 SharedRuntime::
5121                                                 throw_delayed_StackOverflowError));
5122     if (UseCRC32Intrinsics) {
5123       // set table address before stub generation which use it
5124       StubRoutines::_crc_table_adr = (address)StubRoutines::x86::_crc_table;
5125       StubRoutines::_updateBytesCRC32 = generate_updateBytesCRC32();
5126     }
5127 
5128     if (UseCRC32CIntrinsics) {
5129       bool supports_clmul = VM_Version::supports_clmul();
5130       StubRoutines::x86::generate_CRC32C_table(supports_clmul);
5131       StubRoutines::_crc32c_table_addr = (address)StubRoutines::x86::_crc32c_table;
5132       StubRoutines::_updateBytesCRC32C = generate_updateBytesCRC32C(supports_clmul);
5133     }
5134     if (VM_Version::supports_sse2() && UseLibmIntrinsic) {



5135       StubRoutines::x86::_ONEHALF_adr = (address)StubRoutines::x86::_ONEHALF;
5136       StubRoutines::x86::_P_2_adr = (address)StubRoutines::x86::_P_2;
5137       StubRoutines::x86::_SC_4_adr = (address)StubRoutines::x86::_SC_4;
5138       StubRoutines::x86::_Ctable_adr = (address)StubRoutines::x86::_Ctable;
5139       StubRoutines::x86::_SC_2_adr = (address)StubRoutines::x86::_SC_2;
5140       StubRoutines::x86::_SC_3_adr = (address)StubRoutines::x86::_SC_3;
5141       StubRoutines::x86::_SC_1_adr = (address)StubRoutines::x86::_SC_1;
5142       StubRoutines::x86::_PI_INV_TABLE_adr = (address)StubRoutines::x86::_PI_INV_TABLE;
5143       StubRoutines::x86::_PI_4_adr = (address)StubRoutines::x86::_PI_4;
5144       StubRoutines::x86::_PI32INV_adr = (address)StubRoutines::x86::_PI32INV;
5145       StubRoutines::x86::_SIGN_MASK_adr = (address)StubRoutines::x86::_SIGN_MASK;
5146       StubRoutines::x86::_P_1_adr = (address)StubRoutines::x86::_P_1;
5147       StubRoutines::x86::_P_3_adr = (address)StubRoutines::x86::_P_3;
5148       StubRoutines::x86::_NEG_ZERO_adr = (address)StubRoutines::x86::_NEG_ZERO;


5149       StubRoutines::_dexp = generate_libmExp();


5150       StubRoutines::_dlog = generate_libmLog();


5151       StubRoutines::_dlog10 = generate_libmLog10();


5152       StubRoutines::_dpow = generate_libmPow();
5153       StubRoutines::_dtan = generate_libmTan();

5154       StubRoutines::_dsin = generate_libmSin();


5155       StubRoutines::_dcos = generate_libmCos();




5156     }
5157   }
5158 
5159   void generate_all() {
5160     // Generates all stubs and initializes the entry points
5161 
5162     // These entry points require SharedInfo::stack0 to be set up in
5163     // non-core builds and need to be relocatable, so they each
5164     // fabricate a RuntimeStub internally.
5165     StubRoutines::_throw_AbstractMethodError_entry =
5166       generate_throw_exception("AbstractMethodError throw_exception",
5167                                CAST_FROM_FN_PTR(address,
5168                                                 SharedRuntime::
5169                                                 throw_AbstractMethodError));
5170 
5171     StubRoutines::_throw_IncompatibleClassChangeError_entry =
5172       generate_throw_exception("IncompatibleClassChangeError throw_exception",
5173                                CAST_FROM_FN_PTR(address,
5174                                                 SharedRuntime::
5175                                                 throw_IncompatibleClassChangeError));




5115                                                 SharedRuntime::
5116                                                 throw_StackOverflowError));
5117     StubRoutines::_throw_delayed_StackOverflowError_entry =
5118       generate_throw_exception("delayed StackOverflowError throw_exception",
5119                                CAST_FROM_FN_PTR(address,
5120                                                 SharedRuntime::
5121                                                 throw_delayed_StackOverflowError));
5122     if (UseCRC32Intrinsics) {
5123       // set table address before stub generation which use it
5124       StubRoutines::_crc_table_adr = (address)StubRoutines::x86::_crc_table;
5125       StubRoutines::_updateBytesCRC32 = generate_updateBytesCRC32();
5126     }
5127 
5128     if (UseCRC32CIntrinsics) {
5129       bool supports_clmul = VM_Version::supports_clmul();
5130       StubRoutines::x86::generate_CRC32C_table(supports_clmul);
5131       StubRoutines::_crc32c_table_addr = (address)StubRoutines::x86::_crc32c_table;
5132       StubRoutines::_updateBytesCRC32C = generate_updateBytesCRC32C(supports_clmul);
5133     }
5134     if (VM_Version::supports_sse2() && UseLibmIntrinsic) {
5135       if (vmIntrinsics::is_intrinsic_available(vmIntrinsics::_dsin) ||
5136           vmIntrinsics::is_intrinsic_available(vmIntrinsics::_dcos) ||
5137           vmIntrinsics::is_intrinsic_available(vmIntrinsics::_dtan)) {
5138         StubRoutines::x86::_ONEHALF_adr = (address)StubRoutines::x86::_ONEHALF;
5139         StubRoutines::x86::_P_2_adr = (address)StubRoutines::x86::_P_2;
5140         StubRoutines::x86::_SC_4_adr = (address)StubRoutines::x86::_SC_4;
5141         StubRoutines::x86::_Ctable_adr = (address)StubRoutines::x86::_Ctable;
5142         StubRoutines::x86::_SC_2_adr = (address)StubRoutines::x86::_SC_2;
5143         StubRoutines::x86::_SC_3_adr = (address)StubRoutines::x86::_SC_3;
5144         StubRoutines::x86::_SC_1_adr = (address)StubRoutines::x86::_SC_1;
5145         StubRoutines::x86::_PI_INV_TABLE_adr = (address)StubRoutines::x86::_PI_INV_TABLE;
5146         StubRoutines::x86::_PI_4_adr = (address)StubRoutines::x86::_PI_4;
5147         StubRoutines::x86::_PI32INV_adr = (address)StubRoutines::x86::_PI32INV;
5148         StubRoutines::x86::_SIGN_MASK_adr = (address)StubRoutines::x86::_SIGN_MASK;
5149         StubRoutines::x86::_P_1_adr = (address)StubRoutines::x86::_P_1;
5150         StubRoutines::x86::_P_3_adr = (address)StubRoutines::x86::_P_3;
5151         StubRoutines::x86::_NEG_ZERO_adr = (address)StubRoutines::x86::_NEG_ZERO;
5152       }
5153       if (vmIntrinsics::is_intrinsic_available(vmIntrinsics::_dexp)) {
5154         StubRoutines::_dexp = generate_libmExp();
5155       }
5156       if (vmIntrinsics::is_intrinsic_available(vmIntrinsics::_dlog)) {
5157         StubRoutines::_dlog = generate_libmLog();
5158       }
5159       if (vmIntrinsics::is_intrinsic_available(vmIntrinsics::_dlog10)) {
5160         StubRoutines::_dlog10 = generate_libmLog10();
5161       }
5162       if (vmIntrinsics::is_intrinsic_available(vmIntrinsics::_dpow)) {
5163         StubRoutines::_dpow = generate_libmPow();
5164       }
5165       if (vmIntrinsics::is_intrinsic_available(vmIntrinsics::_dsin)) {
5166         StubRoutines::_dsin = generate_libmSin();
5167       }
5168       if (vmIntrinsics::is_intrinsic_available(vmIntrinsics::_dcos)) {
5169         StubRoutines::_dcos = generate_libmCos();
5170       }
5171       if (vmIntrinsics::is_intrinsic_available(vmIntrinsics::_dtan)) {
5172         StubRoutines::_dtan = generate_libmTan();
5173       }
5174     }
5175   }
5176 
5177   void generate_all() {
5178     // Generates all stubs and initializes the entry points
5179 
5180     // These entry points require SharedInfo::stack0 to be set up in
5181     // non-core builds and need to be relocatable, so they each
5182     // fabricate a RuntimeStub internally.
5183     StubRoutines::_throw_AbstractMethodError_entry =
5184       generate_throw_exception("AbstractMethodError throw_exception",
5185                                CAST_FROM_FN_PTR(address,
5186                                                 SharedRuntime::
5187                                                 throw_AbstractMethodError));
5188 
5189     StubRoutines::_throw_IncompatibleClassChangeError_entry =
5190       generate_throw_exception("IncompatibleClassChangeError throw_exception",
5191                                CAST_FROM_FN_PTR(address,
5192                                                 SharedRuntime::
5193                                                 throw_IncompatibleClassChangeError));


< prev index next >