257 DEFINE_ENTRY_GETTER(blob_name, stub_name, field_name, getter_name)
258
259 #define DEFINE_ENTRY_GETTER_ARRAY(blob_name, stub_name, field_name, getter_name, count) \
260 static address getter_name(int idx) { \
261 assert(idx < count, "out of bounds"); \
262 return STUB_FIELD_NAME(field_name)[idx]; \
263 } \
264
265 public:
266 STUBGEN_ENTRIES_DO(DEFINE_ENTRY_GETTER, DEFINE_ENTRY_GETTER_INIT, DEFINE_ENTRY_GETTER_ARRAY);
267
268 #undef DEFINE_ENTRY_GETTER_ARRAY
269 #undef DEFINE_ENTRY_GETTER_INIT
270 #undef DEFINE_ENTRY_GETTER
271
272 public:
273
274 #define DECLARE_BLOB_INIT_METHOD(blob_name) \
275 static void initialize_ ## blob_name ## _stubs();
276
277 STUBGEN_BLOBS_DO(DECLARE_BLOB_INIT_METHOD)
278
279 #undef DECLARE_BLOB_INIT_METHOD
280
281 public:
282
283 // Calls to Java
284 typedef void (*CallStub)(
285 address link,
286 intptr_t* result,
287 int result_type, /* BasicType on 4 bytes */
288 Method* method,
289 address entry_point,
290 intptr_t* parameters,
291 int size_of_parameters,
292 TRAPS
293 );
294
295 static jint _verify_oop_count;
296
393
394 static address select_fill_function(BasicType t, bool aligned, const char* &name);
395
396 // Default versions of some of the arraycopy functions for platforms
397 // which do not have specialized versions
398 //
399 static void jbyte_copy (jbyte* src, jbyte* dest, size_t count);
400 static void jshort_copy (jshort* src, jshort* dest, size_t count);
401 static void jint_copy (jint* src, jint* dest, size_t count);
402 static void jlong_copy (jlong* src, jlong* dest, size_t count);
403 static void oop_copy (oop* src, oop* dest, size_t count);
404 static void oop_copy_uninit(oop* src, oop* dest, size_t count);
405
406 static void arrayof_jbyte_copy (HeapWord* src, HeapWord* dest, size_t count);
407 static void arrayof_jshort_copy (HeapWord* src, HeapWord* dest, size_t count);
408 static void arrayof_jint_copy (HeapWord* src, HeapWord* dest, size_t count);
409 static void arrayof_jlong_copy (HeapWord* src, HeapWord* dest, size_t count);
410 static void arrayof_oop_copy (HeapWord* src, HeapWord* dest, size_t count);
411 static void arrayof_oop_copy_uninit(HeapWord* src, HeapWord* dest, size_t count);
412
413 };
414
415 #endif // SHARE_RUNTIME_STUBROUTINES_HPP
|
257 DEFINE_ENTRY_GETTER(blob_name, stub_name, field_name, getter_name)
258
259 #define DEFINE_ENTRY_GETTER_ARRAY(blob_name, stub_name, field_name, getter_name, count) \
260 static address getter_name(int idx) { \
261 assert(idx < count, "out of bounds"); \
262 return STUB_FIELD_NAME(field_name)[idx]; \
263 } \
264
265 public:
266 STUBGEN_ENTRIES_DO(DEFINE_ENTRY_GETTER, DEFINE_ENTRY_GETTER_INIT, DEFINE_ENTRY_GETTER_ARRAY);
267
268 #undef DEFINE_ENTRY_GETTER_ARRAY
269 #undef DEFINE_ENTRY_GETTER_INIT
270 #undef DEFINE_ENTRY_GETTER
271
272 public:
273
274 #define DECLARE_BLOB_INIT_METHOD(blob_name) \
275 static void initialize_ ## blob_name ## _stubs();
276
277 static address _load_inline_type_fields_in_regs;
278 static address _store_inline_type_fields_to_buf;
279
280 STUBGEN_BLOBS_DO(DECLARE_BLOB_INIT_METHOD)
281
282 #undef DECLARE_BLOB_INIT_METHOD
283
284 public:
285
286 // Calls to Java
287 typedef void (*CallStub)(
288 address link,
289 intptr_t* result,
290 int result_type, /* BasicType on 4 bytes */
291 Method* method,
292 address entry_point,
293 intptr_t* parameters,
294 int size_of_parameters,
295 TRAPS
296 );
297
298 static jint _verify_oop_count;
299
396
397 static address select_fill_function(BasicType t, bool aligned, const char* &name);
398
399 // Default versions of some of the arraycopy functions for platforms
400 // which do not have specialized versions
401 //
402 static void jbyte_copy (jbyte* src, jbyte* dest, size_t count);
403 static void jshort_copy (jshort* src, jshort* dest, size_t count);
404 static void jint_copy (jint* src, jint* dest, size_t count);
405 static void jlong_copy (jlong* src, jlong* dest, size_t count);
406 static void oop_copy (oop* src, oop* dest, size_t count);
407 static void oop_copy_uninit(oop* src, oop* dest, size_t count);
408
409 static void arrayof_jbyte_copy (HeapWord* src, HeapWord* dest, size_t count);
410 static void arrayof_jshort_copy (HeapWord* src, HeapWord* dest, size_t count);
411 static void arrayof_jint_copy (HeapWord* src, HeapWord* dest, size_t count);
412 static void arrayof_jlong_copy (HeapWord* src, HeapWord* dest, size_t count);
413 static void arrayof_oop_copy (HeapWord* src, HeapWord* dest, size_t count);
414 static void arrayof_oop_copy_uninit(HeapWord* src, HeapWord* dest, size_t count);
415
416 static address load_inline_type_fields_in_regs() { return _load_inline_type_fields_in_regs; }
417 static address store_inline_type_fields_to_buf() { return _store_inline_type_fields_to_buf; }
418
419 };
420
421 #endif // SHARE_RUNTIME_STUBROUTINES_HPP
|