< prev index next >

src/hotspot/cpu/aarch64/c1_Runtime1_aarch64.cpp

Print this page
rev 50027 : 8201593: Print array length in ArrayIndexOutOfBoundsException.
Reviewed-by: dholmes, mdoerr, smonteith, shade


 306 void Runtime1::initialize_pd() {
 307   int i;
 308   int sp_offset = 0;
 309 
 310   // all float registers are saved explicitly
 311   assert(FrameMap::nof_fpu_regs == 32, "double registers not handled here");
 312   for (i = 0; i < FrameMap::nof_fpu_regs; i++) {
 313     fpu_reg_save_offsets[i] = sp_offset;
 314     sp_offset += 2;   // SP offsets are in halfwords
 315   }
 316 
 317   for (i = 0; i < FrameMap::nof_cpu_regs; i++) {
 318     Register r = as_Register(i);
 319     cpu_reg_save_offsets[i] = sp_offset;
 320     sp_offset += 2;   // SP offsets are in halfwords
 321   }
 322 }
 323 
 324 
 325 // target: the entry point of the method that creates and posts the exception oop
 326 // has_argument: true if the exception needs an argument (passed in rscratch1)
 327 
 328 OopMapSet* Runtime1::generate_exception_throw(StubAssembler* sasm, address target, bool has_argument) {
 329   // make a frame and preserve the caller's caller-save registers
 330   OopMap* oop_map = save_live_registers(sasm);
 331   int call_offset;
 332   if (!has_argument) {
 333     call_offset = __ call_RT(noreg, noreg, target);
 334   } else {
 335     call_offset = __ call_RT(noreg, noreg, target, rscratch1);
 336   }
 337   OopMapSet* oop_maps = new OopMapSet();
 338   oop_maps->add_gc_map(call_offset, oop_map);
 339 
 340   __ should_not_reach_here();
 341   return oop_maps;
 342 }
 343 
 344 
 345 OopMapSet* Runtime1::generate_handle_exception(StubID id, StubAssembler *sasm) {
 346   __ block_comment("generate_handle_exception");
 347 
 348   // incoming parameters
 349   const Register exception_oop = r0;
 350   const Register exception_pc  = r3;
 351   // other registers used in this stub
 352 
 353   // Save registers, if required.
 354   OopMapSet* oop_maps = new OopMapSet();
 355   OopMap* oop_map = NULL;




 306 void Runtime1::initialize_pd() {
 307   int i;
 308   int sp_offset = 0;
 309 
 310   // all float registers are saved explicitly
 311   assert(FrameMap::nof_fpu_regs == 32, "double registers not handled here");
 312   for (i = 0; i < FrameMap::nof_fpu_regs; i++) {
 313     fpu_reg_save_offsets[i] = sp_offset;
 314     sp_offset += 2;   // SP offsets are in halfwords
 315   }
 316 
 317   for (i = 0; i < FrameMap::nof_cpu_regs; i++) {
 318     Register r = as_Register(i);
 319     cpu_reg_save_offsets[i] = sp_offset;
 320     sp_offset += 2;   // SP offsets are in halfwords
 321   }
 322 }
 323 
 324 
 325 // target: the entry point of the method that creates and posts the exception oop
 326 // has_argument: true if the exception needs arguments (passed in r22 and r23)
 327 
 328 OopMapSet* Runtime1::generate_exception_throw(StubAssembler* sasm, address target, bool has_argument) {
 329   // make a frame and preserve the caller's caller-save registers
 330   OopMap* oop_map = save_live_registers(sasm);
 331   int call_offset;
 332   if (!has_argument) {
 333     call_offset = __ call_RT(noreg, noreg, target);
 334   } else {
 335     call_offset = __ call_RT(noreg, noreg, target, r22, r23);
 336   }
 337   OopMapSet* oop_maps = new OopMapSet();
 338   oop_maps->add_gc_map(call_offset, oop_map);
 339 
 340   __ should_not_reach_here();
 341   return oop_maps;
 342 }
 343 
 344 
 345 OopMapSet* Runtime1::generate_handle_exception(StubID id, StubAssembler *sasm) {
 346   __ block_comment("generate_handle_exception");
 347 
 348   // incoming parameters
 349   const Register exception_oop = r0;
 350   const Register exception_pc  = r3;
 351   // other registers used in this stub
 352 
 353   // Save registers, if required.
 354   OopMapSet* oop_maps = new OopMapSet();
 355   OopMap* oop_map = NULL;


< prev index next >