diff options
| -rw-r--r-- | runtime/arch/arm64/quick_entrypoints_arm64.S | 32 |
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] |