src/hotspot/cpu/ppc/templateTable_ppc_64.cpp
branchepsilon-gc-branch
changeset 56719 a846e7bbcdfa
parent 56578 e8414c8ead61
parent 50446 39ca7558bc43
equal deleted inserted replaced
56675:483d23cdc9e5 56719:a846e7bbcdfa
   686                  Rarray     = R4_ARG2,
   686                  Rarray     = R4_ARG2,
   687                  Rtemp      = R5_ARG3,
   687                  Rtemp      = R5_ARG3,
   688                  Rtemp2     = R31;
   688                  Rtemp2     = R31;
   689   __ index_check(Rarray, R17_tos /* index */, UseCompressedOops ? 2 : LogBytesPerWord, Rtemp, Rload_addr);
   689   __ index_check(Rarray, R17_tos /* index */, UseCompressedOops ? 2 : LogBytesPerWord, Rtemp, Rload_addr);
   690   do_oop_load(_masm, Rload_addr, arrayOopDesc::base_offset_in_bytes(T_OBJECT), R17_tos, Rtemp, Rtemp2,
   690   do_oop_load(_masm, Rload_addr, arrayOopDesc::base_offset_in_bytes(T_OBJECT), R17_tos, Rtemp, Rtemp2,
   691               IN_HEAP | IN_HEAP_ARRAY);
   691               IN_HEAP_ARRAY);
   692   __ verify_oop(R17_tos);
   692   __ verify_oop(R17_tos);
   693   //__ dcbt(R17_tos); // prefetch
   693   //__ dcbt(R17_tos); // prefetch
   694 }
   694 }
   695 
   695 
   696 void TemplateTable::baload() {
   696 void TemplateTable::baload() {
  1013   __ mtctr(R11_scratch1);
  1013   __ mtctr(R11_scratch1);
  1014   __ bctr();
  1014   __ bctr();
  1015 
  1015 
  1016   __ bind(Lis_null);
  1016   __ bind(Lis_null);
  1017   do_oop_store(_masm, Rstore_addr, arrayOopDesc::base_offset_in_bytes(T_OBJECT), noreg /* 0 */,
  1017   do_oop_store(_masm, Rstore_addr, arrayOopDesc::base_offset_in_bytes(T_OBJECT), noreg /* 0 */,
  1018                Rscratch, Rscratch2, Rscratch3, IN_HEAP | IN_HEAP_ARRAY);
  1018                Rscratch, Rscratch2, Rscratch3, IN_HEAP_ARRAY);
  1019   __ profile_null_seen(Rscratch, Rscratch2);
  1019   __ profile_null_seen(Rscratch, Rscratch2);
  1020   __ b(Ldone);
  1020   __ b(Ldone);
  1021 
  1021 
  1022   // Store is OK.
  1022   // Store is OK.
  1023   __ bind(Lstore_ok);
  1023   __ bind(Lstore_ok);
  1024   do_oop_store(_masm, Rstore_addr, arrayOopDesc::base_offset_in_bytes(T_OBJECT), R17_tos /* value */,
  1024   do_oop_store(_masm, Rstore_addr, arrayOopDesc::base_offset_in_bytes(T_OBJECT), R17_tos /* value */,
  1025                Rscratch, Rscratch2, Rscratch3, IN_HEAP | IN_HEAP_ARRAY | OOP_NOT_NULL);
  1025                Rscratch, Rscratch2, Rscratch3, IN_HEAP_ARRAY | OOP_NOT_NULL);
  1026 
  1026 
  1027   __ bind(Ldone);
  1027   __ bind(Ldone);
  1028   // Adjust sp (pops array, index and value).
  1028   // Adjust sp (pops array, index and value).
  1029   __ addi(R15_esp, R15_esp, 3 * Interpreter::stackElementSize);
  1029   __ addi(R15_esp, R15_esp, 3 * Interpreter::stackElementSize);
  1030 }
  1030 }