summaryrefslogtreecommitdiffstats
path: root/compiler/optimizing/code_generator_arm.h
diff options
context:
space:
mode:
authorNicolas Geoffray <ngeoffray@google.com>2014-10-27 15:14:55 +0000
committerNicolas Geoffray <ngeoffray@google.com>2014-10-27 17:20:35 +0000
commit1ba0f596e9e4ddd778ab431237d11baa85594eba (patch)
treec1d51616adf4d98aab3ebccf47ad5146635cb87f /compiler/optimizing/code_generator_arm.h
parent1ef3495abfa2a858b3cc7a1844383c8e7dff0b60 (diff)
downloadart-1ba0f596e9e4ddd778ab431237d11baa85594eba.tar.gz
art-1ba0f596e9e4ddd778ab431237d11baa85594eba.tar.bz2
art-1ba0f596e9e4ddd778ab431237d11baa85594eba.zip
Support hard float on arm in optimizing compiler.
Also bump oat version, needed after latest hard float switch. Change-Id: Idf5acfb36c07e74acff00edab998419a3c6b2965
Diffstat (limited to 'compiler/optimizing/code_generator_arm.h')
-rw-r--r--compiler/optimizing/code_generator_arm.h14
1 files changed, 10 insertions, 4 deletions
diff --git a/compiler/optimizing/code_generator_arm.h b/compiler/optimizing/code_generator_arm.h
index 1fe8a7eacc..b1c36c0c00 100644
--- a/compiler/optimizing/code_generator_arm.h
+++ b/compiler/optimizing/code_generator_arm.h
@@ -32,10 +32,11 @@ static constexpr size_t kArmWordSize = 4;
static constexpr Register kParameterCoreRegisters[] = { R1, R2, R3 };
static constexpr RegisterPair kParameterCorePairRegisters[] = { R1_R2, R2_R3 };
static constexpr size_t kParameterCoreRegistersLength = arraysize(kParameterCoreRegisters);
-static constexpr DRegister kParameterFpuRegisters[] = { };
-static constexpr size_t kParameterFpuRegistersLength = 0;
+static constexpr SRegister kParameterFpuRegisters[] =
+ { S0, S1, S2, S3, S4, S5, S6, S7, S8, S9, S10, S11, S12, S13, S14, S15 };
+static constexpr size_t kParameterFpuRegistersLength = arraysize(kParameterFpuRegisters);
-class InvokeDexCallingConvention : public CallingConvention<Register, DRegister> {
+class InvokeDexCallingConvention : public CallingConvention<Register, SRegister> {
public:
InvokeDexCallingConvention()
: CallingConvention(kParameterCoreRegisters,
@@ -54,13 +55,18 @@ class InvokeDexCallingConvention : public CallingConvention<Register, DRegister>
class InvokeDexCallingConventionVisitor {
public:
- InvokeDexCallingConventionVisitor() : gp_index_(0) {}
+ InvokeDexCallingConventionVisitor()
+ : gp_index_(0), float_index_(0), double_index_(0), stack_index_(0) {}
Location GetNextLocation(Primitive::Type type);
+ Location GetReturnLocation(Primitive::Type type);
private:
InvokeDexCallingConvention calling_convention;
uint32_t gp_index_;
+ uint32_t float_index_;
+ uint32_t double_index_;
+ uint32_t stack_index_;
DISALLOW_COPY_AND_ASSIGN(InvokeDexCallingConventionVisitor);
};