summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Mathieu Chartier <mathieuc@google.com> 2016-08-30 09:42:28 -0700
committer Mathieu Chartier <mathieuc@google.com> 2016-08-31 17:13:17 -0700
commite3fbe38a4236a8c6ee52d6285502846b265ed6f3 (patch)
tree73609aa99d573be2df05fa21bf6965691bd82992
parent1c29876b303ab392e615b2294db009a971613bea (diff)
Clean up art_quick_resolve_string for arm64
Use ubfx instead of and, add missing cfi directives. Test: test-art-target-run-test CC baker, N6P phone booting. Change-Id: I6e0e958fa7d77a37f727a7170f6fe03eecbc7bcc
-rw-r--r--runtime/arch/arm64/quick_entrypoints_arm64.S8
1 files changed, 7 insertions, 1 deletions
diff --git a/runtime/arch/arm64/quick_entrypoints_arm64.S b/runtime/arch/arm64/quick_entrypoints_arm64.S
index 3f87a1443a..27314f67f7 100644
--- a/runtime/arch/arm64/quick_entrypoints_arm64.S
+++ b/runtime/arch/arm64/quick_entrypoints_arm64.S
@@ -1796,7 +1796,7 @@ ENTRY art_quick_resolve_string
ldr x1, [sp] // load referrer
ldr w2, [x1, #ART_METHOD_DECLARING_CLASS_OFFSET] // load declaring class
ldr x1, [x2, #DECLARING_CLASS_DEX_CACHE_STRINGS_OFFSET] // load string dex cache
- and x2, x0, #STRING_DEX_CACHE_SIZE_MINUS_ONE // get masked string index into x2
+ ubfx x2, x0, #0, #STRING_DEX_CACHE_HASH_BITS // get masked string index into x2
ldr x2, [x1, x2, lsl #STRING_DEX_CACHE_ELEMENT_SIZE_SHIFT] // load dex cache pair into x2
cmp x0, x2, lsr #32 // compare against upper 32 bits
bne .Lart_quick_resolve_string_slow_path
@@ -1822,8 +1822,14 @@ ENTRY art_quick_resolve_string
tbnz x3, #LOCK_WORD_MARK_BIT_SHIFT, .Lart_quick_resolve_string_no_rb
// Save LR so that we can return, also x1 for alignment purposes.
stp x1, xLR, [sp, #-16]! // Save x1, LR.
+ .cfi_adjust_cfa_offset 16
+ .cfi_rel_offset x1, 0
+ .cfi_rel_offset xLR, 8
bl artReadBarrierMark // Get the marked string back.
ldp x1, xLR, [sp], #16 // Restore registers.
+ .cfi_restore xLR
+ .cfi_restore x1
+ .cfi_adjust_cfa_offset -16
.Lart_quick_resolve_string_no_rb:
ret