-
Bug
-
Resolution: Fixed
-
P4
-
17
-
b23
-
aarch64
For many of the C1 StubFrames, the code generated often includes an additional leave/ret after the stub has completed:
handle_exception_from_callee_id:
*leave
*ret
*leave
*ret
Anything using generate_exception_throw:
*br x8
*should_not_reach_here
*leave
*ret
In addition in generate_handle_exception(), after obtaining the return value, the value is stored on the stack then the stack then almost immediately is popped to LR. Instead the return value could be directly put into LR, saving a load/store. If/when PAC is implemented this causes an additional issue as the the value needs to be signed then unsigned when going on/off the stack.
These issues are not causing any bugs, but they do make the code unclear, especially when debugging the outputted assembly/
handle_exception_from_callee_id:
*leave
*ret
*leave
*ret
Anything using generate_exception_throw:
*br x8
*should_not_reach_here
*leave
*ret
In addition in generate_handle_exception(), after obtaining the return value, the value is stored on the stack then the stack then almost immediately is popped to LR. Instead the return value could be directly put into LR, saving a load/store. If/when PAC is implemented this causes an additional issue as the the value needs to be signed then unsigned when going on/off the stack.
These issues are not causing any bugs, but they do make the code unclear, especially when debugging the outputted assembly/