< prev index next > src/hotspot/cpu/arm/arm.ad
Print this page
// 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" %}
+ format %{ "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);
%}
instruct ForwardExceptionjmp()
%{
match(ForwardException);
ins_cost(CALL_COST);
- format %{ "b forward_exception_stub" %}
+ 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 >