summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Peter Collingbourne <pcc@google.com> 2018-08-29 17:34:39 +0000
committer Gerrit Code Review <noreply-gerritcodereview@google.com> 2018-08-29 17:34:39 +0000
commitecbb5701276dd5965d68fe825da31637ca62d8c1 (patch)
tree9ac83e8cc1242c1a0f415d442d8e51b801cc9875
parent7786176c18d63db66684d336d647bef4a0aeb02b (diff)
parent0ed1eaba4f5bd56fd2fba621e71aa8484397ef0e (diff)
Merge "arm64: Don't use the GOT to access art::Runtime::instance_."
-rw-r--r--runtime/arch/arm64/quick_entrypoints_arm64.S32
1 files changed, 12 insertions, 20 deletions
diff --git a/runtime/arch/arm64/quick_entrypoints_arm64.S b/runtime/arch/arm64/quick_entrypoints_arm64.S
index 2622d400be..96ceecfe9b 100644
--- a/runtime/arch/arm64/quick_entrypoints_arm64.S
+++ b/runtime/arch/arm64/quick_entrypoints_arm64.S
@@ -83,12 +83,10 @@
* Runtime::CreateCalleeSaveMethod(kSaveAllCalleeSaves)
*/
.macro SETUP_SAVE_ALL_CALLEE_SAVES_FRAME
- // art::Runtime** xIP0 = &art::Runtime::instance_
- adrp xIP0, :got:_ZN3art7Runtime9instance_E
- ldr xIP0, [xIP0, #:got_lo12:_ZN3art7Runtime9instance_E]
-
+ // art::Runtime* xIP0 = art::Runtime::instance_;
// Our registers aren't intermixed - just spill in order.
- ldr xIP0, [xIP0] // art::Runtime* xIP0 = art::Runtime::instance_;
+ adrp xIP0, _ZN3art7Runtime9instance_E
+ ldr xIP0, [xIP0, #:lo12:_ZN3art7Runtime9instance_E]
// ArtMethod* xIP0 = Runtime::instance_->callee_save_methods_[kSaveAllCalleeSaves];
ldr xIP0, [xIP0, RUNTIME_SAVE_ALL_CALLEE_SAVES_METHOD_OFFSET]
@@ -127,12 +125,10 @@
* Runtime::CreateCalleeSaveMethod(kSaveRefsOnly).
*/
.macro SETUP_SAVE_REFS_ONLY_FRAME
- // art::Runtime** xIP0 = &art::Runtime::instance_
- adrp xIP0, :got:_ZN3art7Runtime9instance_E
- ldr xIP0, [xIP0, #:got_lo12:_ZN3art7Runtime9instance_E]
-
+ // art::Runtime* xIP0 = art::Runtime::instance_;
// Our registers aren't intermixed - just spill in order.
- ldr xIP0, [xIP0] // art::Runtime* xIP0 = art::Runtime::instance_;
+ adrp xIP0, _ZN3art7Runtime9instance_E
+ ldr xIP0, [xIP0, #:lo12:_ZN3art7Runtime9instance_E]
// ArtMethod* xIP0 = Runtime::instance_->callee_save_methods_[kSaveRefOnly];
ldr xIP0, [xIP0, RUNTIME_SAVE_REFS_ONLY_METHOD_OFFSET]
@@ -227,12 +223,10 @@
* TODO This is probably too conservative - saving FP & LR.
*/
.macro SETUP_SAVE_REFS_AND_ARGS_FRAME
- // art::Runtime** xIP0 = &art::Runtime::instance_
- adrp xIP0, :got:_ZN3art7Runtime9instance_E
- ldr xIP0, [xIP0, #:got_lo12:_ZN3art7Runtime9instance_E]
-
+ // art::Runtime* xIP0 = art::Runtime::instance_;
// Our registers aren't intermixed - just spill in order.
- ldr xIP0, [xIP0] // art::Runtime* xIP0 = art::Runtime::instance_;
+ adrp xIP0, _ZN3art7Runtime9instance_E
+ ldr xIP0, [xIP0, #:lo12:_ZN3art7Runtime9instance_E]
// ArtMethod* xIP0 = Runtime::instance_->callee_save_methods_[kSaveRefAndArgs];
ldr xIP0, [xIP0, RUNTIME_SAVE_REFS_AND_ARGS_METHOD_OFFSET]
@@ -331,11 +325,9 @@
SAVE_TWO_REGS x25, x26, 464
SAVE_TWO_REGS x27, x28, 480
- // art::Runtime** xIP0 = &art::Runtime::instance_
- adrp xIP0, :got:_ZN3art7Runtime9instance_E
- ldr xIP0, [xIP0, #:got_lo12:_ZN3art7Runtime9instance_E]
-
- ldr xIP0, [xIP0] // art::Runtime* xIP0 = art::Runtime::instance_;
+ // art::Runtime* xIP0 = art::Runtime::instance_;
+ adrp xIP0, _ZN3art7Runtime9instance_E
+ ldr xIP0, [xIP0, #:lo12:_ZN3art7Runtime9instance_E]
// ArtMethod* xIP0 = Runtime::instance_->callee_save_methods_[kSaveEverything];
ldr xIP0, [xIP0, \runtime_method_offset]