< prev index next >

src/hotspot/cpu/arm/c1_Runtime1_arm.cpp

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


 349 
 350 static void restore_live_registers_without_return(StubAssembler* sasm, bool restore_fpu_registers = HaveVFP) {
 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
 391   __ cmp(Rtemp, 0);
 392   __ mov(SP, Rmh_SP_save, ne);
 393 #endif // AARCH64




 349 
 350 static void restore_live_registers_without_return(StubAssembler* sasm, bool restore_fpu_registers = HaveVFP) {
 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   int call_offset;
 370   if (has_argument) {
 371     __ ldr(R1, Address(SP, arg1_offset));
 372     __ ldr(R2, Address(SP, arg2_offset));
 373     call_offset = __ call_RT(noreg, noreg, target, R1, R2);
 374   } else {
 375     call_offset = __ call_RT(noreg, noreg, target);
 376   }
 377 

 378   OopMapSet* oop_maps = new OopMapSet();
 379   oop_maps->add_gc_map(call_offset, oop_map);
 380 
 381   DEBUG_ONLY(STOP("generate_exception_throw");)  // Should not reach here
 382   return oop_maps;
 383 }
 384 
 385 
 386 static void restore_sp_for_method_handle(StubAssembler* sasm) {
 387   // Restore SP from its saved reg (FP) if the exception PC is a MethodHandle call site.
 388   __ ldr_s32(Rtemp, Address(Rthread, JavaThread::is_method_handle_return_offset()));
 389 #ifdef AARCH64
 390   Label skip;
 391   __ cbz(Rtemp, skip);
 392   __ mov(SP, Rmh_SP_save);
 393   __ bind(skip);
 394 #else
 395   __ cmp(Rtemp, 0);
 396   __ mov(SP, Rmh_SP_save, ne);
 397 #endif // AARCH64


< prev index next >