393
394 JRT_LEAF(void, StubRoutines::jint_copy(jint* src, jint* dest, size_t count))
395 #ifndef PRODUCT
396 SharedRuntime::_jint_array_copy_ctr++; // Slow-path int/float array copy
397 #endif // !PRODUCT
398 Copy::conjoint_jints_atomic(src, dest, count);
399 JRT_END
400
401 JRT_LEAF(void, StubRoutines::jlong_copy(jlong* src, jlong* dest, size_t count))
402 #ifndef PRODUCT
403 SharedRuntime::_jlong_array_copy_ctr++; // Slow-path long/double array copy
404 #endif // !PRODUCT
405 Copy::conjoint_jlongs_atomic(src, dest, count);
406 JRT_END
407
408 JRT_LEAF(void, StubRoutines::oop_copy(oop* src, oop* dest, size_t count))
409 #ifndef PRODUCT
410 SharedRuntime::_oop_array_copy_ctr++; // Slow-path oop array copy
411 #endif // !PRODUCT
412 assert(count != 0, "count should be non-zero");
413 HeapAccess<>::oop_arraycopy(NULL, NULL, (HeapWord*)src, (HeapWord*)dest, count);
414 JRT_END
415
416 JRT_LEAF(void, StubRoutines::oop_copy_uninit(oop* src, oop* dest, size_t count))
417 #ifndef PRODUCT
418 SharedRuntime::_oop_array_copy_ctr++; // Slow-path oop array copy
419 #endif // !PRODUCT
420 assert(count != 0, "count should be non-zero");
421 HeapAccess<AS_DEST_NOT_INITIALIZED>::oop_arraycopy(NULL, NULL, (HeapWord*)src, (HeapWord*)dest, count);
422 JRT_END
423
424 JRT_LEAF(void, StubRoutines::arrayof_jbyte_copy(HeapWord* src, HeapWord* dest, size_t count))
425 #ifndef PRODUCT
426 SharedRuntime::_jbyte_array_copy_ctr++; // Slow-path byte array copy
427 #endif // !PRODUCT
428 Copy::arrayof_conjoint_jbytes(src, dest, count);
429 JRT_END
430
431 JRT_LEAF(void, StubRoutines::arrayof_jshort_copy(HeapWord* src, HeapWord* dest, size_t count))
432 #ifndef PRODUCT
433 SharedRuntime::_jshort_array_copy_ctr++; // Slow-path short/char array copy
434 #endif // !PRODUCT
435 Copy::arrayof_conjoint_jshorts(src, dest, count);
436 JRT_END
437
438 JRT_LEAF(void, StubRoutines::arrayof_jint_copy(HeapWord* src, HeapWord* dest, size_t count))
439 #ifndef PRODUCT
440 SharedRuntime::_jint_array_copy_ctr++; // Slow-path int/float array copy
441 #endif // !PRODUCT
442 Copy::arrayof_conjoint_jints(src, dest, count);
443 JRT_END
444
445 JRT_LEAF(void, StubRoutines::arrayof_jlong_copy(HeapWord* src, HeapWord* dest, size_t count))
446 #ifndef PRODUCT
447 SharedRuntime::_jlong_array_copy_ctr++; // Slow-path int/float array copy
448 #endif // !PRODUCT
449 Copy::arrayof_conjoint_jlongs(src, dest, count);
450 JRT_END
451
452 JRT_LEAF(void, StubRoutines::arrayof_oop_copy(HeapWord* src, HeapWord* dest, size_t count))
453 #ifndef PRODUCT
454 SharedRuntime::_oop_array_copy_ctr++; // Slow-path oop array copy
455 #endif // !PRODUCT
456 assert(count != 0, "count should be non-zero");
457 HeapAccess<ARRAYCOPY_ARRAYOF>::oop_arraycopy(NULL, NULL, src, dest, count);
458 JRT_END
459
460 JRT_LEAF(void, StubRoutines::arrayof_oop_copy_uninit(HeapWord* src, HeapWord* dest, size_t count))
461 #ifndef PRODUCT
462 SharedRuntime::_oop_array_copy_ctr++; // Slow-path oop array copy
463 #endif // !PRODUCT
464 assert(count != 0, "count should be non-zero");
465 HeapAccess<ARRAYCOPY_ARRAYOF | AS_DEST_NOT_INITIALIZED>::oop_arraycopy(NULL, NULL, src, dest, count);
466 JRT_END
467
468 address StubRoutines::select_fill_function(BasicType t, bool aligned, const char* &name) {
469 #define RETURN_STUB(xxx_fill) { \
470 name = #xxx_fill; \
471 return StubRoutines::xxx_fill(); }
472
473 switch (t) {
474 case T_BYTE:
475 case T_BOOLEAN:
476 if (!aligned) RETURN_STUB(jbyte_fill);
477 RETURN_STUB(arrayof_jbyte_fill);
478 case T_CHAR:
479 case T_SHORT:
480 if (!aligned) RETURN_STUB(jshort_fill);
481 RETURN_STUB(arrayof_jshort_fill);
482 case T_INT:
483 case T_FLOAT:
484 if (!aligned) RETURN_STUB(jint_fill);
485 RETURN_STUB(arrayof_jint_fill);
|
393
394 JRT_LEAF(void, StubRoutines::jint_copy(jint* src, jint* dest, size_t count))
395 #ifndef PRODUCT
396 SharedRuntime::_jint_array_copy_ctr++; // Slow-path int/float array copy
397 #endif // !PRODUCT
398 Copy::conjoint_jints_atomic(src, dest, count);
399 JRT_END
400
401 JRT_LEAF(void, StubRoutines::jlong_copy(jlong* src, jlong* dest, size_t count))
402 #ifndef PRODUCT
403 SharedRuntime::_jlong_array_copy_ctr++; // Slow-path long/double array copy
404 #endif // !PRODUCT
405 Copy::conjoint_jlongs_atomic(src, dest, count);
406 JRT_END
407
408 JRT_LEAF(void, StubRoutines::oop_copy(oop* src, oop* dest, size_t count))
409 #ifndef PRODUCT
410 SharedRuntime::_oop_array_copy_ctr++; // Slow-path oop array copy
411 #endif // !PRODUCT
412 assert(count != 0, "count should be non-zero");
413 HeapAccess<>::oop_arraycopy(NULL, 0, (HeapWord*)src, NULL, 0, (HeapWord*)dest, count);
414 JRT_END
415
416 JRT_LEAF(void, StubRoutines::oop_copy_uninit(oop* src, oop* dest, size_t count))
417 #ifndef PRODUCT
418 SharedRuntime::_oop_array_copy_ctr++; // Slow-path oop array copy
419 #endif // !PRODUCT
420 assert(count != 0, "count should be non-zero");
421 HeapAccess<AS_DEST_NOT_INITIALIZED>::oop_arraycopy(NULL, 0, (HeapWord*)src, NULL, 0, (HeapWord*)dest, count);
422 JRT_END
423
424 JRT_LEAF(void, StubRoutines::arrayof_jbyte_copy(HeapWord* src, HeapWord* dest, size_t count))
425 #ifndef PRODUCT
426 SharedRuntime::_jbyte_array_copy_ctr++; // Slow-path byte array copy
427 #endif // !PRODUCT
428 Copy::arrayof_conjoint_jbytes(src, dest, count);
429 JRT_END
430
431 JRT_LEAF(void, StubRoutines::arrayof_jshort_copy(HeapWord* src, HeapWord* dest, size_t count))
432 #ifndef PRODUCT
433 SharedRuntime::_jshort_array_copy_ctr++; // Slow-path short/char array copy
434 #endif // !PRODUCT
435 Copy::arrayof_conjoint_jshorts(src, dest, count);
436 JRT_END
437
438 JRT_LEAF(void, StubRoutines::arrayof_jint_copy(HeapWord* src, HeapWord* dest, size_t count))
439 #ifndef PRODUCT
440 SharedRuntime::_jint_array_copy_ctr++; // Slow-path int/float array copy
441 #endif // !PRODUCT
442 Copy::arrayof_conjoint_jints(src, dest, count);
443 JRT_END
444
445 JRT_LEAF(void, StubRoutines::arrayof_jlong_copy(HeapWord* src, HeapWord* dest, size_t count))
446 #ifndef PRODUCT
447 SharedRuntime::_jlong_array_copy_ctr++; // Slow-path int/float array copy
448 #endif // !PRODUCT
449 Copy::arrayof_conjoint_jlongs(src, dest, count);
450 JRT_END
451
452 JRT_LEAF(void, StubRoutines::arrayof_oop_copy(HeapWord* src, HeapWord* dest, size_t count))
453 #ifndef PRODUCT
454 SharedRuntime::_oop_array_copy_ctr++; // Slow-path oop array copy
455 #endif // !PRODUCT
456 assert(count != 0, "count should be non-zero");
457 HeapAccess<ARRAYCOPY_ARRAYOF>::oop_arraycopy(NULL, 0, src, NULL, 0, dest, count);
458 JRT_END
459
460 JRT_LEAF(void, StubRoutines::arrayof_oop_copy_uninit(HeapWord* src, HeapWord* dest, size_t count))
461 #ifndef PRODUCT
462 SharedRuntime::_oop_array_copy_ctr++; // Slow-path oop array copy
463 #endif // !PRODUCT
464 assert(count != 0, "count should be non-zero");
465 HeapAccess<ARRAYCOPY_ARRAYOF | AS_DEST_NOT_INITIALIZED>::oop_arraycopy(NULL, 0, src, NULL, 0, dest, count);
466 JRT_END
467
468 address StubRoutines::select_fill_function(BasicType t, bool aligned, const char* &name) {
469 #define RETURN_STUB(xxx_fill) { \
470 name = #xxx_fill; \
471 return StubRoutines::xxx_fill(); }
472
473 switch (t) {
474 case T_BYTE:
475 case T_BOOLEAN:
476 if (!aligned) RETURN_STUB(jbyte_fill);
477 RETURN_STUB(arrayof_jbyte_fill);
478 case T_CHAR:
479 case T_SHORT:
480 if (!aligned) RETURN_STUB(jshort_fill);
481 RETURN_STUB(arrayof_jshort_fill);
482 case T_INT:
483 case T_FLOAT:
484 if (!aligned) RETURN_STUB(jint_fill);
485 RETURN_STUB(arrayof_jint_fill);
|