src/hotspot/cpu/aarch64/interp_masm_aarch64.cpp
changeset 48183 ee8e37f85775
parent 48127 efc459cf351e
child 48953 67aa88701d46
equal deleted inserted replaced
48182:5fb0f3f24f6b 48183:ee8e37f85775
  1604   restore_bcp();
  1604   restore_bcp();
  1605   restore_locals();
  1605   restore_locals();
  1606 }
  1606 }
  1607 
  1607 
  1608 void InterpreterMacroAssembler::profile_obj_type(Register obj, const Address& mdo_addr) {
  1608 void InterpreterMacroAssembler::profile_obj_type(Register obj, const Address& mdo_addr) {
       
  1609   assert_different_registers(obj, rscratch1);
  1609   Label update, next, none;
  1610   Label update, next, none;
  1610 
  1611 
  1611   verify_oop(obj);
  1612   verify_oop(obj);
  1612 
  1613 
  1613   cbnz(obj, update);
  1614   cbnz(obj, update);
  1764     bind(profile_continue);
  1765     bind(profile_continue);
  1765   }
  1766   }
  1766 }
  1767 }
  1767 
  1768 
  1768 void InterpreterMacroAssembler::profile_parameters_type(Register mdp, Register tmp1, Register tmp2) {
  1769 void InterpreterMacroAssembler::profile_parameters_type(Register mdp, Register tmp1, Register tmp2) {
       
  1770   assert_different_registers(rscratch1, rscratch2, mdp, tmp1, tmp2);
  1769   if (ProfileInterpreter && MethodData::profile_parameters()) {
  1771   if (ProfileInterpreter && MethodData::profile_parameters()) {
  1770     Label profile_continue, done;
  1772     Label profile_continue, done;
  1771 
  1773 
  1772     test_method_data_pointer(mdp, profile_continue);
  1774     test_method_data_pointer(mdp, profile_continue);
  1773 
  1775 
  1774     // Load the offset of the area within the MDO used for
  1776     // Load the offset of the area within the MDO used for
  1775     // parameters. If it's negative we're not profiling any parameters
  1777     // parameters. If it's negative we're not profiling any parameters
  1776     ldr(tmp1, Address(mdp, in_bytes(MethodData::parameters_type_data_di_offset()) - in_bytes(MethodData::data_offset())));
  1778     ldrw(tmp1, Address(mdp, in_bytes(MethodData::parameters_type_data_di_offset()) - in_bytes(MethodData::data_offset())));
  1777     tbnz(tmp1, 63, profile_continue);  // i.e. sign bit set
  1779     tbnz(tmp1, 31, profile_continue);  // i.e. sign bit set
  1778 
  1780 
  1779     // Compute a pointer to the area for parameters from the offset
  1781     // Compute a pointer to the area for parameters from the offset
  1780     // and move the pointer to the slot for the last
  1782     // and move the pointer to the slot for the last
  1781     // parameters. Collect profiling from last parameter down.
  1783     // parameters. Collect profiling from last parameter down.
  1782     // mdo start + parameters offset + array length - 1
  1784     // mdo start + parameters offset + array length - 1