src/hotspot/cpu/aarch64/stubGenerator_aarch64.cpp
changeset 55490 3f3dc00a69a5
parent 55379 865775b86780
child 57565 01bca26734bb
equal deleted inserted replaced
55489:c749ecf599c0 55490:3f3dc00a69a5
  1381 
  1381 
  1382     if (is_oop) {
  1382     if (is_oop) {
  1383       // save regs before copy_memory
  1383       // save regs before copy_memory
  1384       __ push(RegSet::of(d, count), sp);
  1384       __ push(RegSet::of(d, count), sp);
  1385     }
  1385     }
  1386     copy_memory(aligned, s, d, count, rscratch1, size);
  1386     {
       
  1387       // UnsafeCopyMemory page error: continue after ucm
       
  1388       bool add_entry = !is_oop && (!aligned || sizeof(jlong) == size);
       
  1389       UnsafeCopyMemoryMark ucmm(this, add_entry, true);
       
  1390       copy_memory(aligned, s, d, count, rscratch1, size);
       
  1391     }
  1387 
  1392 
  1388     if (is_oop) {
  1393     if (is_oop) {
  1389       __ pop(RegSet::of(d, count), sp);
  1394       __ pop(RegSet::of(d, count), sp);
  1390       if (VerifyOops)
  1395       if (VerifyOops)
  1391         verify_oop_array(size, d, count, r16);
  1396         verify_oop_array(size, d, count, r16);
  1453 
  1458 
  1454     if (is_oop) {
  1459     if (is_oop) {
  1455       // save regs before copy_memory
  1460       // save regs before copy_memory
  1456       __ push(RegSet::of(d, count), sp);
  1461       __ push(RegSet::of(d, count), sp);
  1457     }
  1462     }
  1458     copy_memory(aligned, s, d, count, rscratch1, -size);
  1463     {
       
  1464       // UnsafeCopyMemory page error: continue after ucm
       
  1465       bool add_entry = !is_oop && (!aligned || sizeof(jlong) == size);
       
  1466       UnsafeCopyMemoryMark ucmm(this, add_entry, true);
       
  1467       copy_memory(aligned, s, d, count, rscratch1, -size);
       
  1468     }
  1459     if (is_oop) {
  1469     if (is_oop) {
  1460       __ pop(RegSet::of(d, count), sp);
  1470       __ pop(RegSet::of(d, count), sp);
  1461       if (VerifyOops)
  1471       if (VerifyOops)
  1462         verify_oop_array(size, d, count, r16);
  1472         verify_oop_array(size, d, count, r16);
  1463     }
  1473     }
  5814       generate_initial();
  5824       generate_initial();
  5815     }
  5825     }
  5816   }
  5826   }
  5817 }; // end class declaration
  5827 }; // end class declaration
  5818 
  5828 
       
  5829 #define UCM_TABLE_MAX_ENTRIES 8
  5819 void StubGenerator_generate(CodeBuffer* code, bool all) {
  5830 void StubGenerator_generate(CodeBuffer* code, bool all) {
       
  5831   if (UnsafeCopyMemory::_table == NULL) {
       
  5832     UnsafeCopyMemory::create_table(UCM_TABLE_MAX_ENTRIES);
       
  5833   }
  5820   StubGenerator g(code, all);
  5834   StubGenerator g(code, all);
  5821 }
  5835 }