< prev index next >

src/cpu/x86/vm/stubGenerator_x86_64.cpp

Print this page




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



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


5145       StubRoutines::_dexp = generate_libmExp();


5146       StubRoutines::_dlog = generate_libmLog();


5147       StubRoutines::_dlog10 = generate_libmLog10();


5148       StubRoutines::_dpow = generate_libmPow();
5149       StubRoutines::_dtan = generate_libmTan();

5150       StubRoutines::_dsin = generate_libmSin();


5151       StubRoutines::_dcos = generate_libmCos();




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




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


< prev index next >