< prev index next >

src/hotspot/share/runtime/stubRoutines.cpp

Print this page

152 address StubRoutines::_squareToLen = nullptr;
153 address StubRoutines::_mulAdd = nullptr;
154 address StubRoutines::_montgomeryMultiply = nullptr;
155 address StubRoutines::_montgomerySquare = nullptr;
156 address StubRoutines::_bigIntegerRightShiftWorker = nullptr;
157 address StubRoutines::_bigIntegerLeftShiftWorker = nullptr;
158 
159 address StubRoutines::_vectorizedMismatch = nullptr;
160 
161 address StubRoutines::_dexp = nullptr;
162 address StubRoutines::_dlog = nullptr;
163 address StubRoutines::_dlog10 = nullptr;
164 address StubRoutines::_dpow = nullptr;
165 address StubRoutines::_dsin = nullptr;
166 address StubRoutines::_dcos = nullptr;
167 address StubRoutines::_dlibm_sin_cos_huge = nullptr;
168 address StubRoutines::_dlibm_reduce_pi04l = nullptr;
169 address StubRoutines::_dlibm_tan_cot_huge = nullptr;
170 address StubRoutines::_dtan = nullptr;
171 



172 address StubRoutines::_f2hf = nullptr;
173 address StubRoutines::_hf2f = nullptr;
174 
175 address StubRoutines::_vector_f_math[VectorSupport::NUM_VEC_SIZES][VectorSupport::NUM_SVML_OP] = {{nullptr}, {nullptr}};
176 address StubRoutines::_vector_d_math[VectorSupport::NUM_VEC_SIZES][VectorSupport::NUM_SVML_OP] = {{nullptr}, {nullptr}};
177 
178 address StubRoutines::_cont_thaw          = nullptr;
179 address StubRoutines::_cont_returnBarrier = nullptr;
180 address StubRoutines::_cont_returnBarrierExc = nullptr;
181 
182 JFR_ONLY(RuntimeStub* StubRoutines::_jfr_write_checkpoint_stub = nullptr;)
183 JFR_ONLY(address StubRoutines::_jfr_write_checkpoint = nullptr;)
184 
185 // Initialization
186 //
187 // Note: to break cycle with universe initialization, stubs are generated in two phases.
188 // The first one generates stubs needed during universe init (e.g., _handle_must_compile_first_entry).
189 // The second phase includes all other stubs (which may depend on universe being initialized.)
190 
191 extern void StubGenerator_generate(CodeBuffer* code, StubCodeGenerator::StubsKind kind); // only interface to generators

519 #define RETURN_STUB(xxx_fill) { \
520   name = #xxx_fill; \
521   return StubRoutines::xxx_fill(); }
522 
523   switch (t) {
524   case T_BYTE:
525   case T_BOOLEAN:
526     if (!aligned) RETURN_STUB(jbyte_fill);
527     RETURN_STUB(arrayof_jbyte_fill);
528   case T_CHAR:
529   case T_SHORT:
530     if (!aligned) RETURN_STUB(jshort_fill);
531     RETURN_STUB(arrayof_jshort_fill);
532   case T_INT:
533   case T_FLOAT:
534     if (!aligned) RETURN_STUB(jint_fill);
535     RETURN_STUB(arrayof_jint_fill);
536   case T_DOUBLE:
537   case T_LONG:
538   case T_ARRAY:

539   case T_OBJECT:
540   case T_NARROWOOP:
541   case T_NARROWKLASS:
542   case T_ADDRESS:
543   case T_VOID:
544     // Currently unsupported
545     return nullptr;
546 
547   default:
548     ShouldNotReachHere();
549     return nullptr;
550   }
551 
552 #undef RETURN_STUB
553 }
554 
555 // constants for computing the copy function
556 enum {
557   COPYFUNC_UNALIGNED = 0,
558   COPYFUNC_ALIGNED = 1,                 // src, dest aligned to HeapWordSize

152 address StubRoutines::_squareToLen = nullptr;
153 address StubRoutines::_mulAdd = nullptr;
154 address StubRoutines::_montgomeryMultiply = nullptr;
155 address StubRoutines::_montgomerySquare = nullptr;
156 address StubRoutines::_bigIntegerRightShiftWorker = nullptr;
157 address StubRoutines::_bigIntegerLeftShiftWorker = nullptr;
158 
159 address StubRoutines::_vectorizedMismatch = nullptr;
160 
161 address StubRoutines::_dexp = nullptr;
162 address StubRoutines::_dlog = nullptr;
163 address StubRoutines::_dlog10 = nullptr;
164 address StubRoutines::_dpow = nullptr;
165 address StubRoutines::_dsin = nullptr;
166 address StubRoutines::_dcos = nullptr;
167 address StubRoutines::_dlibm_sin_cos_huge = nullptr;
168 address StubRoutines::_dlibm_reduce_pi04l = nullptr;
169 address StubRoutines::_dlibm_tan_cot_huge = nullptr;
170 address StubRoutines::_dtan = nullptr;
171 
172 address StubRoutines::_load_inline_type_fields_in_regs = nullptr;
173 address StubRoutines::_store_inline_type_fields_to_buf = nullptr;
174 
175 address StubRoutines::_f2hf = nullptr;
176 address StubRoutines::_hf2f = nullptr;
177 
178 address StubRoutines::_vector_f_math[VectorSupport::NUM_VEC_SIZES][VectorSupport::NUM_SVML_OP] = {{nullptr}, {nullptr}};
179 address StubRoutines::_vector_d_math[VectorSupport::NUM_VEC_SIZES][VectorSupport::NUM_SVML_OP] = {{nullptr}, {nullptr}};
180 
181 address StubRoutines::_cont_thaw          = nullptr;
182 address StubRoutines::_cont_returnBarrier = nullptr;
183 address StubRoutines::_cont_returnBarrierExc = nullptr;
184 
185 JFR_ONLY(RuntimeStub* StubRoutines::_jfr_write_checkpoint_stub = nullptr;)
186 JFR_ONLY(address StubRoutines::_jfr_write_checkpoint = nullptr;)
187 
188 // Initialization
189 //
190 // Note: to break cycle with universe initialization, stubs are generated in two phases.
191 // The first one generates stubs needed during universe init (e.g., _handle_must_compile_first_entry).
192 // The second phase includes all other stubs (which may depend on universe being initialized.)
193 
194 extern void StubGenerator_generate(CodeBuffer* code, StubCodeGenerator::StubsKind kind); // only interface to generators

522 #define RETURN_STUB(xxx_fill) { \
523   name = #xxx_fill; \
524   return StubRoutines::xxx_fill(); }
525 
526   switch (t) {
527   case T_BYTE:
528   case T_BOOLEAN:
529     if (!aligned) RETURN_STUB(jbyte_fill);
530     RETURN_STUB(arrayof_jbyte_fill);
531   case T_CHAR:
532   case T_SHORT:
533     if (!aligned) RETURN_STUB(jshort_fill);
534     RETURN_STUB(arrayof_jshort_fill);
535   case T_INT:
536   case T_FLOAT:
537     if (!aligned) RETURN_STUB(jint_fill);
538     RETURN_STUB(arrayof_jint_fill);
539   case T_DOUBLE:
540   case T_LONG:
541   case T_ARRAY:
542   case T_PRIMITIVE_OBJECT:
543   case T_OBJECT:
544   case T_NARROWOOP:
545   case T_NARROWKLASS:
546   case T_ADDRESS:
547   case T_VOID:
548     // Currently unsupported
549     return nullptr;
550 
551   default:
552     ShouldNotReachHere();
553     return nullptr;
554   }
555 
556 #undef RETURN_STUB
557 }
558 
559 // constants for computing the copy function
560 enum {
561   COPYFUNC_UNALIGNED = 0,
562   COPYFUNC_ALIGNED = 1,                 // src, dest aligned to HeapWordSize
< prev index next >