< prev index next >

src/hotspot/share/runtime/stubRoutines.cpp

Print this page

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



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

486 #define RETURN_STUB(xxx_fill) { \
487   name = #xxx_fill; \
488   return StubRoutines::xxx_fill(); }
489 
490   switch (t) {
491   case T_BYTE:
492   case T_BOOLEAN:
493     if (!aligned) RETURN_STUB(jbyte_fill);
494     RETURN_STUB(arrayof_jbyte_fill);
495   case T_CHAR:
496   case T_SHORT:
497     if (!aligned) RETURN_STUB(jshort_fill);
498     RETURN_STUB(arrayof_jshort_fill);
499   case T_INT:
500   case T_FLOAT:
501     if (!aligned) RETURN_STUB(jint_fill);
502     RETURN_STUB(arrayof_jint_fill);
503   case T_DOUBLE:
504   case T_LONG:
505   case T_ARRAY:

506   case T_OBJECT:
507   case T_NARROWOOP:
508   case T_NARROWKLASS:
509   case T_ADDRESS:
510   case T_VOID:
511     // Currently unsupported
512     return NULL;
513 
514   default:
515     ShouldNotReachHere();
516     return NULL;
517   }
518 
519 #undef RETURN_STUB
520 }
521 
522 // constants for computing the copy function
523 enum {
524   COPYFUNC_UNALIGNED = 0,
525   COPYFUNC_ALIGNED = 1,                 // src, dest aligned to HeapWordSize

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

489 #define RETURN_STUB(xxx_fill) { \
490   name = #xxx_fill; \
491   return StubRoutines::xxx_fill(); }
492 
493   switch (t) {
494   case T_BYTE:
495   case T_BOOLEAN:
496     if (!aligned) RETURN_STUB(jbyte_fill);
497     RETURN_STUB(arrayof_jbyte_fill);
498   case T_CHAR:
499   case T_SHORT:
500     if (!aligned) RETURN_STUB(jshort_fill);
501     RETURN_STUB(arrayof_jshort_fill);
502   case T_INT:
503   case T_FLOAT:
504     if (!aligned) RETURN_STUB(jint_fill);
505     RETURN_STUB(arrayof_jint_fill);
506   case T_DOUBLE:
507   case T_LONG:
508   case T_ARRAY:
509   case T_PRIMITIVE_OBJECT:
510   case T_OBJECT:
511   case T_NARROWOOP:
512   case T_NARROWKLASS:
513   case T_ADDRESS:
514   case T_VOID:
515     // Currently unsupported
516     return NULL;
517 
518   default:
519     ShouldNotReachHere();
520     return NULL;
521   }
522 
523 #undef RETURN_STUB
524 }
525 
526 // constants for computing the copy function
527 enum {
528   COPYFUNC_UNALIGNED = 0,
529   COPYFUNC_ALIGNED = 1,                 // src, dest aligned to HeapWordSize
< prev index next >