diff options
author | Chih-Hung Hsieh <chh@google.com> | 2015-07-27 10:10:44 -0700 |
---|---|---|
committer | Adnan Begovic <adnan@cyngn.com> | 2016-05-08 22:15:31 -0700 |
commit | 81dc9271819cdeeca81f6521b5cf418f4f9e0815 (patch) | |
tree | 7501ba4764d3ca3b3aaae9c644b4a4924180fe3e | |
parent | 6817f4b36357f068cb0d83e1d577d7a393e68a03 (diff) | |
download | art-81dc9271819cdeeca81f6521b5cf418f4f9e0815.tar.gz art-81dc9271819cdeeca81f6521b5cf418f4f9e0815.tar.bz2 art-81dc9271819cdeeca81f6521b5cf418f4f9e0815.zip |
ART: Remove unique-numbered labels from arm64 assembly
Use local labels like 1, 2, 3 in macros. Clang does not support
the unique counter variable \@.
Bug: 22799850
Change-Id: I9ef1859be40b875ef4d7ae74ec1af52ad05f7352
-rw-r--r-- | runtime/arch/arm64/quick_entrypoints_arm64.S | 33 |
1 files changed, 18 insertions, 15 deletions
diff --git a/runtime/arch/arm64/quick_entrypoints_arm64.S b/runtime/arch/arm64/quick_entrypoints_arm64.S index fce5f2347d..835908d997 100644 --- a/runtime/arch/arm64/quick_entrypoints_arm64.S +++ b/runtime/arch/arm64/quick_entrypoints_arm64.S @@ -569,18 +569,18 @@ SAVE_SIZE_AND_METHOD=SAVE_SIZE+8 // W10 - temporary add x9, sp, #8 // Destination address is bottom of stack + null. - // Use \@ to differentiate between macro invocations. -.LcopyParams\@: + // Copy parameters into the stack. Use numeric label as this is a macro and Clang's assembler + // does not have unique-id variables. +1: cmp w2, #0 - beq .LendCopyParams\@ + beq 2f sub w2, w2, #4 // Need 65536 bytes of range. ldr w10, [x1, x2] str w10, [x9, x2] - b .LcopyParams\@ - -.LendCopyParams\@: + b 1b +2: // Store null into ArtMethod* at bottom of frame. str xzr, [sp] .endm @@ -619,26 +619,29 @@ SAVE_SIZE_AND_METHOD=SAVE_SIZE+8 // Store result (w0/x0/s0/d0) appropriately, depending on resultType. ldrb w10, [x5] + // Check the return type and store the correct register into the jvalue in memory. + // Use numeric label as this is a macro and Clang's assembler does not have unique-id variables. + // Don't set anything for a void type. cmp w10, #'V' - beq .Lexit_art_quick_invoke_stub\@ + beq 3f + // Is it a double? cmp w10, #'D' - bne .Lreturn_is_float\@ + bne 1f str d0, [x4] - b .Lexit_art_quick_invoke_stub\@ + b 3f -.Lreturn_is_float\@: +1: // Is it a float? cmp w10, #'F' - bne .Lreturn_is_int\@ + bne 2f str s0, [x4] - b .Lexit_art_quick_invoke_stub\@ + b 3f - // Just store x0. Doesn't matter if it is 64 or 32 bits. -.Lreturn_is_int\@: +2: // Just store x0. Doesn't matter if it is 64 or 32 bits. str x0, [x4] -.Lexit_art_quick_invoke_stub\@: +3: // Finish up. ldp x2, x19, [xFP, #32] // Restore stack pointer and x19. .cfi_restore x19 mov sp, x2 |