OSDN Git Service

MIPS64: Improve method invocation.
authorAlexey Frunze <Alexey.Frunze@imgtec.com>
Thu, 1 Dec 2016 03:19:55 +0000 (19:19 -0800)
committerAlexey Frunze <Alexey.Frunze@imgtec.com>
Tue, 13 Dec 2016 22:07:16 +0000 (14:07 -0800)
commit19f6c696bbb7a17d8ac521b316c40f9cbef32151
tree6ce87f3ba9f224efc0036d3ab99e4272c48eeddb
parentaea9ffece7eb32f3884a4ad0553e1df4d90fd9e4
MIPS64: Improve method invocation.

Improvements include:
- support for all kinds of method loads and static/direct calls
- 32-bit and 64-bit literals for the above and future work
- shorter instruction sequences for recursive static/direct calls
Also:
- include the MIPS64 dinsu instruction (missed earlier) and minor
  clean-up in the disassembler
- properly prefix constant names with 'k' in relative patcher tests

Test: test-art-host-gtest
Test: booted MIPS64 (with 2nd arch MIPS32R6) in QEMU
Test: "make -j1 ART_TEST_DEFAULT_COMPILER=false ART_TEST_OPTIMIZING=true
       ART_TEST_INTERPRETER=false ART_TEST_JIT=false
       ART_TEST_PIC_TEST=true test-art-target-run-test64"

Change-Id: I19876fa5316b68531af7dfddfce90d2068433116
14 files changed:
compiler/Android.bp
compiler/driver/compiler_driver.cc
compiler/linker/mips/relative_patcher_mips32r6_test.cc
compiler/linker/mips/relative_patcher_mips_test.cc
compiler/linker/mips64/relative_patcher_mips64.cc [new file with mode: 0644]
compiler/linker/mips64/relative_patcher_mips64.h [new file with mode: 0644]
compiler/linker/mips64/relative_patcher_mips64_test.cc [new file with mode: 0644]
compiler/linker/relative_patcher.cc
compiler/optimizing/code_generator_mips64.cc
compiler/optimizing/code_generator_mips64.h
compiler/utils/mips64/assembler_mips64.cc
compiler/utils/mips64/assembler_mips64.h
compiler/utils/mips64/assembler_mips64_test.cc
disassembler/disassembler_mips.cc