From e3fb245fbdb5e91cf8a9750504df40bd629e0080 Mon Sep 17 00:00:00 2001 From: Alexey Frunze Date: Tue, 10 May 2016 16:08:05 -0700 Subject: MIPS32: Improve method invocation Improvements include: - CodeGeneratorMIPS::GenerateStaticOrDirectCall() supports: - MethodLoadKind::kDirectAddressWithFixup (via literals) - CodePtrLocation::kCallDirectWithFixup (via literals) - MethodLoadKind::kDexCachePcRelative - 32-bit literals to support the above (not ready for general- purpose applications yet because RA is not saved in leaf methods, but is clobbered on MIPS32R2 when simulating PC-relative addressing (MIPS32R6 is OK because it has PC-relative addressing with the lwpc instruction)) - shorter instruction sequences for recursive static/direct calls Tested: - test-art-host-gtest - test-art-target-gtest and test-art-target-run-test-optimizing on: - MIPS32R2 QEMU - CI20 board - MIPS32R6 (2nd arch) QEMU Change-Id: Id5b137ad32d5590487fd154c9a01d3b3e7e044ff --- compiler/linker/relative_patcher.cc | 8 ++++++++ 1 file changed, 8 insertions(+) (limited to 'compiler/linker/relative_patcher.cc') diff --git a/compiler/linker/relative_patcher.cc b/compiler/linker/relative_patcher.cc index 3a229831d0..77655947fd 100644 --- a/compiler/linker/relative_patcher.cc +++ b/compiler/linker/relative_patcher.cc @@ -22,6 +22,9 @@ #ifdef ART_ENABLE_CODEGEN_arm64 #include "linker/arm64/relative_patcher_arm64.h" #endif +#ifdef ART_ENABLE_CODEGEN_mips +#include "linker/mips/relative_patcher_mips.h" +#endif #ifdef ART_ENABLE_CODEGEN_x86 #include "linker/x86/relative_patcher_x86.h" #endif @@ -94,6 +97,11 @@ std::unique_ptr RelativePatcher::Create( case kArm64: return std::unique_ptr( new Arm64RelativePatcher(provider, features->AsArm64InstructionSetFeatures())); +#endif +#ifdef ART_ENABLE_CODEGEN_mips + case kMips: + return std::unique_ptr( + new MipsRelativePatcher(features->AsMipsInstructionSetFeatures())); #endif default: return std::unique_ptr(new RelativePatcherNone); -- cgit v1.2.3-59-g8ed1b