< prev index next >

src/hotspot/cpu/arm/c1_Runtime1_arm.cpp

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


 351   restore_live_registers(sasm, true, true, false, restore_fpu_registers);
 352 }
 353 
 354 void StubAssembler::save_live_registers() {
 355   ::save_live_registers(this);
 356 }
 357 
 358 void StubAssembler::restore_live_registers_without_return() {
 359   ::restore_live_registers_without_return(this);
 360 }
 361 
 362 void Runtime1::initialize_pd() {
 363 }
 364 
 365 
 366 OopMapSet* Runtime1::generate_exception_throw(StubAssembler* sasm, address target, bool has_argument) {
 367   OopMap* oop_map = save_live_registers(sasm);
 368 
 369   if (has_argument) {
 370     __ ldr(R1, Address(SP, arg1_offset));

 371   }
 372 
 373   int call_offset = __ call_RT(noreg, noreg, target);
 374   OopMapSet* oop_maps = new OopMapSet();
 375   oop_maps->add_gc_map(call_offset, oop_map);
 376 
 377   DEBUG_ONLY(STOP("generate_exception_throw");)  // Should not reach here
 378   return oop_maps;
 379 }
 380 
 381 
 382 static void restore_sp_for_method_handle(StubAssembler* sasm) {
 383   // Restore SP from its saved reg (FP) if the exception PC is a MethodHandle call site.
 384   __ ldr_s32(Rtemp, Address(Rthread, JavaThread::is_method_handle_return_offset()));
 385 #ifdef AARCH64
 386   Label skip;
 387   __ cbz(Rtemp, skip);
 388   __ mov(SP, Rmh_SP_save);
 389   __ bind(skip);
 390 #else




 351   restore_live_registers(sasm, true, true, false, restore_fpu_registers);
 352 }
 353 
 354 void StubAssembler::save_live_registers() {
 355   ::save_live_registers(this);
 356 }
 357 
 358 void StubAssembler::restore_live_registers_without_return() {
 359   ::restore_live_registers_without_return(this);
 360 }
 361 
 362 void Runtime1::initialize_pd() {
 363 }
 364 
 365 
 366 OopMapSet* Runtime1::generate_exception_throw(StubAssembler* sasm, address target, bool has_argument) {
 367   OopMap* oop_map = save_live_registers(sasm);
 368 
 369   if (has_argument) {
 370     __ ldr(R1, Address(SP, arg1_offset));
 371     __ ldr(R2, Address(SP, arg2_offset));
 372   }
 373 
 374   int call_offset = __ call_RT(noreg, noreg, target);
 375   OopMapSet* oop_maps = new OopMapSet();
 376   oop_maps->add_gc_map(call_offset, oop_map);
 377 
 378   DEBUG_ONLY(STOP("generate_exception_throw");)  // Should not reach here
 379   return oop_maps;
 380 }
 381 
 382 
 383 static void restore_sp_for_method_handle(StubAssembler* sasm) {
 384   // Restore SP from its saved reg (FP) if the exception PC is a MethodHandle call site.
 385   __ ldr_s32(Rtemp, Address(Rthread, JavaThread::is_method_handle_return_offset()));
 386 #ifdef AARCH64
 387   Label skip;
 388   __ cbz(Rtemp, skip);
 389   __ mov(SP, Rmh_SP_save);
 390   __ bind(skip);
 391 #else


< prev index next >