< prev index next >

src/hotspot/cpu/arm/arm.ad

Print this page
*** 8886,17 ***
  // TailJump below removes the return address.
  instruct TailCalljmpInd(IPRegP jump_target, inline_cache_regP method_ptr) %{
    match(TailCall jump_target method_ptr);
  
    ins_cost(CALL_COST);
!   format %{ "MOV    Rexception_pc, LR\n\t"
-             "jump   $jump_target  \t! $method_ptr holds method" %}
    ins_encode %{
-     __ mov(Rexception_pc, LR);   // this is used only to call
-                                  // StubRoutines::forward_exception_entry()
-                                  // which expects PC of exception in
-                                  // R5. FIXME?
      __ jump($jump_target$$Register);
    %}
    ins_pipe(tail_call);
  %}
  
--- 8886,12 ---
  // TailJump below removes the return address.
  instruct TailCalljmpInd(IPRegP jump_target, inline_cache_regP method_ptr) %{
    match(TailCall jump_target method_ptr);
  
    ins_cost(CALL_COST);
!   format %{ "jump   $jump_target  \t! $method_ptr holds method" %}
    ins_encode %{
      __ jump($jump_target$$Register);
    %}
    ins_pipe(tail_call);
  %}
  

*** 8937,12 ***
  instruct ForwardExceptionjmp()
  %{
    match(ForwardException);
    ins_cost(CALL_COST);
  
!   format %{ "b    forward_exception_stub" %}
    ins_encode %{
      // OK to trash Rtemp, because Rtemp is used by stub
      __ jump(StubRoutines::forward_exception_entry(), relocInfo::runtime_call_type, Rtemp);
    %}
    ins_pipe(tail_call);
  %}
--- 8932,14 ---
  instruct ForwardExceptionjmp()
  %{
    match(ForwardException);
    ins_cost(CALL_COST);
  
!   format %{ "MOV  Rexception_pc, LR\n\t"
+             "b    forward_exception_entry" %}
    ins_encode %{
+     __ mov(Rexception_pc, LR);
      // OK to trash Rtemp, because Rtemp is used by stub
      __ jump(StubRoutines::forward_exception_entry(), relocInfo::runtime_call_type, Rtemp);
    %}
    ins_pipe(tail_call);
  %}
< prev index next >