1297 in_bytes(MultiBranchData::
1298 default_displacement_offset()));
1299
1300 bind(profile_continue);
1301 }
1302 }
1303
1304 void InterpreterMacroAssembler::profile_switch_case(Register index,
1305 Register mdp,
1306 Register reg2) {
1307 if (ProfileInterpreter) {
1308 Label profile_continue;
1309
1310 // If no method data exists, go to profile_continue.
1311 test_method_data_pointer(mdp, profile_continue);
1312
1313 // Build the base (index * per_case_size_in_bytes()) +
1314 // case_array_offset_in_bytes()
1315 movw(reg2, in_bytes(MultiBranchData::per_case_size()));
1316 movw(rscratch1, in_bytes(MultiBranchData::case_array_offset()));
1317 maddw(index, index, reg2, rscratch1);
1318
1319 // Update the case count
1320 increment_mdp_data_at(mdp,
1321 index,
1322 in_bytes(MultiBranchData::relative_count_offset()));
1323
1324 // The method data pointer needs to be updated.
1325 update_mdp_by_offset(mdp,
1326 index,
1327 in_bytes(MultiBranchData::
1328 relative_displacement_offset()));
1329
1330 bind(profile_continue);
1331 }
1332 }
1333
1334 void InterpreterMacroAssembler::verify_oop(Register reg, TosState state) {
1335 if (state == atos) {
1336 MacroAssembler::verify_oop(reg);
1337 }
|
1297 in_bytes(MultiBranchData::
1298 default_displacement_offset()));
1299
1300 bind(profile_continue);
1301 }
1302 }
1303
1304 void InterpreterMacroAssembler::profile_switch_case(Register index,
1305 Register mdp,
1306 Register reg2) {
1307 if (ProfileInterpreter) {
1308 Label profile_continue;
1309
1310 // If no method data exists, go to profile_continue.
1311 test_method_data_pointer(mdp, profile_continue);
1312
1313 // Build the base (index * per_case_size_in_bytes()) +
1314 // case_array_offset_in_bytes()
1315 movw(reg2, in_bytes(MultiBranchData::per_case_size()));
1316 movw(rscratch1, in_bytes(MultiBranchData::case_array_offset()));
1317 Assembler::maddw(index, index, reg2, rscratch1);
1318
1319 // Update the case count
1320 increment_mdp_data_at(mdp,
1321 index,
1322 in_bytes(MultiBranchData::relative_count_offset()));
1323
1324 // The method data pointer needs to be updated.
1325 update_mdp_by_offset(mdp,
1326 index,
1327 in_bytes(MultiBranchData::
1328 relative_displacement_offset()));
1329
1330 bind(profile_continue);
1331 }
1332 }
1333
1334 void InterpreterMacroAssembler::verify_oop(Register reg, TosState state) {
1335 if (state == atos) {
1336 MacroAssembler::verify_oop(reg);
1337 }
|