< prev index next >

src/cpu/aarch64/vm/interp_masm_aarch64.cpp

Print this page
rev 8083 : 8079203: AARCH64: Need to cater for different partner implementations
Summary: Parse /proc/cpuinfo to derive implementation specific info
Reviewed-by: duke


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   }


< prev index next >