< prev index next >

src/hotspot/cpu/ppc/templateInterpreterGenerator_ppc.cpp

Print this page
rev 49172 : 8197405: Improve messages of AbstractMethodErrors and IncompatibleClassChangeErrors.
Reviewed-by: coleenp, dholmes, mdoerr, njian


 435   //
 436   //   0       [TOP_IJAVA_FRAME_ABI]         <-- R1_SP
 437   //           alignment (optional)
 438   //           [outgoing Java arguments]
 439   //           ...
 440   //   PARENT  [PARENT_IJAVA_FRAME_ABI]
 441   //            ...
 442   //
 443 
 444   // Can't use call_VM here because we have not set up a new
 445   // interpreter state. Make the call to the vm and make it look like
 446   // our caller set up the JavaFrameAnchor.
 447   __ set_top_ijava_frame_at_SP_as_last_Java_frame(R1_SP, R12_scratch2/*tmp*/);
 448 
 449   // Push a new C frame and save LR.
 450   __ save_LR_CR(R0);
 451   __ push_frame_reg_args(0, R11_scratch1);
 452 
 453   // This is not a leaf but we have a JavaFrameAnchor now and we will
 454   // check (create) exceptions afterward so this is ok.
 455   __ call_VM_leaf(CAST_FROM_FN_PTR(address, InterpreterRuntime::throw_AbstractMethodError),
 456                   R16_thread);
 457 
 458   // Pop the C frame and restore LR.
 459   __ pop_frame();
 460   __ restore_LR_CR(R0);
 461 
 462   // Reset JavaFrameAnchor from call_VM_leaf above.
 463   __ reset_last_Java_frame();
 464 
 465   // We don't know our caller, so jump to the general forward exception stub,
 466   // which will also pop our full frame off. Satisfy the interface of
 467   // SharedRuntime::generate_forward_exception()
 468   __ load_const_optimized(R11_scratch1, StubRoutines::forward_exception_entry(), R0);
 469   __ mtctr(R11_scratch1);
 470   __ bctr();
 471 
 472   return entry;
 473 }
 474 
 475 // Interpreter intrinsic for WeakReference.get().
 476 // 1. Don't push a full blown frame and go on dispatching, but fetch the value




 435   //
 436   //   0       [TOP_IJAVA_FRAME_ABI]         <-- R1_SP
 437   //           alignment (optional)
 438   //           [outgoing Java arguments]
 439   //           ...
 440   //   PARENT  [PARENT_IJAVA_FRAME_ABI]
 441   //            ...
 442   //
 443 
 444   // Can't use call_VM here because we have not set up a new
 445   // interpreter state. Make the call to the vm and make it look like
 446   // our caller set up the JavaFrameAnchor.
 447   __ set_top_ijava_frame_at_SP_as_last_Java_frame(R1_SP, R12_scratch2/*tmp*/);
 448 
 449   // Push a new C frame and save LR.
 450   __ save_LR_CR(R0);
 451   __ push_frame_reg_args(0, R11_scratch1);
 452 
 453   // This is not a leaf but we have a JavaFrameAnchor now and we will
 454   // check (create) exceptions afterward so this is ok.
 455   __ call_VM_leaf(CAST_FROM_FN_PTR(address, InterpreterRuntime::throw_AbstractMethodErrorWithMethod),
 456                   R16_thread, R19_method);
 457 
 458   // Pop the C frame and restore LR.
 459   __ pop_frame();
 460   __ restore_LR_CR(R0);
 461 
 462   // Reset JavaFrameAnchor from call_VM_leaf above.
 463   __ reset_last_Java_frame();
 464 
 465   // We don't know our caller, so jump to the general forward exception stub,
 466   // which will also pop our full frame off. Satisfy the interface of
 467   // SharedRuntime::generate_forward_exception()
 468   __ load_const_optimized(R11_scratch1, StubRoutines::forward_exception_entry(), R0);
 469   __ mtctr(R11_scratch1);
 470   __ bctr();
 471 
 472   return entry;
 473 }
 474 
 475 // Interpreter intrinsic for WeakReference.get().
 476 // 1. Don't push a full blown frame and go on dispatching, but fetch the value


< prev index next >