< prev index next >

src/hotspot/share/runtime/stubRoutines.cpp

Print this page
rev 49674 : 8198285: More consistent Access API for arraycopy


 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);


< prev index next >