Adds additional support for shortening LDR literal jmps.
commit3d48a9e37d48492004699fc92dc73bc36ed89f73
authorDave Estes <cestes@qti.qualcomm.com>
Tue, 6 Feb 2018 23:09:23 +0000 (6 15:09 -0800)
committerHhvm Bot <hhvm-bot@users.noreply.github.com>
Tue, 6 Feb 2018 23:18:02 +0000 (6 15:18 -0800)
treec2d12b72c4090580e7af6c5c642166690e60171c
parent61efaf09068defb83f06002344f4f79ff84a7389
Adds additional support for shortening LDR literal jmps.

Summary:
During relocation, jmps which use LDR (literal) and BR sequences
(smashed smashable jmps/jccs and patchable jmps/jccs) are shortened
to use simple PC relative B instructions. This patch extends this
to also shorten these sequences to absolute branches using
MOVZ/MOVK and BR instructions. The effect is to reduce D$ pressure
and to decrease instruction count.
Closes https://github.com/facebook/hhvm/pull/8059

Differential Revision: D6764250

Pulled By: mxw

fbshipit-source-id: ccdfb060ebdfdc84ab8134a09d6af5af9cbbeeb5
hphp/runtime/vm/jit/relocation-arm.cpp