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));
|