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