< prev index next >

src/hotspot/share/runtime/stubRoutines.cpp

Print this page

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



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

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

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

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

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