211 DEFINE_ENTRY_GETTER(blob_name, stub_name, field_name, getter_name)
212
213 #define DEFINE_ENTRY_GETTER_ARRAY(blob_name, stub_name, field_name, getter_name, count) \
214 static address getter_name(int idx) { \
215 assert(idx < count, "out of bounds"); \
216 return STUB_FIELD_NAME(field_name)[idx]; \
217 } \
218
219 public:
220 STUBGEN_ENTRIES_DO(DEFINE_ENTRY_GETTER, DEFINE_ENTRY_GETTER_INIT, DEFINE_ENTRY_GETTER_ARRAY);
221
222 #undef DEFINE_ENTRY_GETTER_ARRAY
223 #undef DEFINE_ENTRY_GETTER_INIT
224 #undef DEFINE_ENTRY_GETTER
225
226 public:
227
228 #define DECLARE_BLOB_INIT_METHOD(blob_name) \
229 static void initialize_ ## blob_name ## _stubs();
230
231 STUBGEN_BLOBS_DO(DECLARE_BLOB_INIT_METHOD)
232
233 #undef DECLARE_BLOB_INIT_METHOD
234
235 public:
236
237 // Calls to Java
238 typedef void (*CallStub)(
239 address link,
240 intptr_t* result,
241 int result_type, /* BasicType on 4 bytes */
242 Method* method,
243 address entry_point,
244 intptr_t* parameters,
245 int size_of_parameters,
246 TRAPS
247 );
248
249 static jint _verify_oop_count;
250
353
354 static address select_fill_function(BasicType t, bool aligned, const char* &name);
355
356 // Default versions of some of the arraycopy functions for platforms
357 // which do not have specialized versions
358 //
359 static void jbyte_copy (jbyte* src, jbyte* dest, size_t count);
360 static void jshort_copy (jshort* src, jshort* dest, size_t count);
361 static void jint_copy (jint* src, jint* dest, size_t count);
362 static void jlong_copy (jlong* src, jlong* dest, size_t count);
363 static void oop_copy (oop* src, oop* dest, size_t count);
364 static void oop_copy_uninit(oop* src, oop* dest, size_t count);
365
366 static void arrayof_jbyte_copy (HeapWord* src, HeapWord* dest, size_t count);
367 static void arrayof_jshort_copy (HeapWord* src, HeapWord* dest, size_t count);
368 static void arrayof_jint_copy (HeapWord* src, HeapWord* dest, size_t count);
369 static void arrayof_jlong_copy (HeapWord* src, HeapWord* dest, size_t count);
370 static void arrayof_oop_copy (HeapWord* src, HeapWord* dest, size_t count);
371 static void arrayof_oop_copy_uninit(HeapWord* src, HeapWord* dest, size_t count);
372
373 };
374
375 #endif // SHARE_RUNTIME_STUBROUTINES_HPP
|
211 DEFINE_ENTRY_GETTER(blob_name, stub_name, field_name, getter_name)
212
213 #define DEFINE_ENTRY_GETTER_ARRAY(blob_name, stub_name, field_name, getter_name, count) \
214 static address getter_name(int idx) { \
215 assert(idx < count, "out of bounds"); \
216 return STUB_FIELD_NAME(field_name)[idx]; \
217 } \
218
219 public:
220 STUBGEN_ENTRIES_DO(DEFINE_ENTRY_GETTER, DEFINE_ENTRY_GETTER_INIT, DEFINE_ENTRY_GETTER_ARRAY);
221
222 #undef DEFINE_ENTRY_GETTER_ARRAY
223 #undef DEFINE_ENTRY_GETTER_INIT
224 #undef DEFINE_ENTRY_GETTER
225
226 public:
227
228 #define DECLARE_BLOB_INIT_METHOD(blob_name) \
229 static void initialize_ ## blob_name ## _stubs();
230
231 static address _load_inline_type_fields_in_regs;
232 static address _store_inline_type_fields_to_buf;
233
234 STUBGEN_BLOBS_DO(DECLARE_BLOB_INIT_METHOD)
235
236 #undef DECLARE_BLOB_INIT_METHOD
237
238 public:
239
240 // Calls to Java
241 typedef void (*CallStub)(
242 address link,
243 intptr_t* result,
244 int result_type, /* BasicType on 4 bytes */
245 Method* method,
246 address entry_point,
247 intptr_t* parameters,
248 int size_of_parameters,
249 TRAPS
250 );
251
252 static jint _verify_oop_count;
253
356
357 static address select_fill_function(BasicType t, bool aligned, const char* &name);
358
359 // Default versions of some of the arraycopy functions for platforms
360 // which do not have specialized versions
361 //
362 static void jbyte_copy (jbyte* src, jbyte* dest, size_t count);
363 static void jshort_copy (jshort* src, jshort* dest, size_t count);
364 static void jint_copy (jint* src, jint* dest, size_t count);
365 static void jlong_copy (jlong* src, jlong* dest, size_t count);
366 static void oop_copy (oop* src, oop* dest, size_t count);
367 static void oop_copy_uninit(oop* src, oop* dest, size_t count);
368
369 static void arrayof_jbyte_copy (HeapWord* src, HeapWord* dest, size_t count);
370 static void arrayof_jshort_copy (HeapWord* src, HeapWord* dest, size_t count);
371 static void arrayof_jint_copy (HeapWord* src, HeapWord* dest, size_t count);
372 static void arrayof_jlong_copy (HeapWord* src, HeapWord* dest, size_t count);
373 static void arrayof_oop_copy (HeapWord* src, HeapWord* dest, size_t count);
374 static void arrayof_oop_copy_uninit(HeapWord* src, HeapWord* dest, size_t count);
375
376 static address load_inline_type_fields_in_regs() { return _load_inline_type_fields_in_regs; }
377 static address store_inline_type_fields_to_buf() { return _store_inline_type_fields_to_buf; }
378
379 };
380
381 #endif // SHARE_RUNTIME_STUBROUTINES_HPP
|