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 } |