summaryrefslogtreecommitdiffstats
path: root/compiler/optimizing/code_generator_x86_64.h
diff options
context:
space:
mode:
authorNicolas Geoffray <ngeoffray@google.com>2015-03-27 09:53:16 +0000
committerNicolas Geoffray <ngeoffray@google.com>2015-03-27 12:01:40 +0000
commitd75948ac93a4a317feaf136cae78823071234ba5 (patch)
tree7593fb8c1ba2b67decdaa967b6348501f58d8b9d /compiler/optimizing/code_generator_x86_64.h
parentb3665e3dfdd23cc7a2f17a0b53bb16205bf4151f (diff)
downloadart-d75948ac93a4a317feaf136cae78823071234ba5.tar.gz
art-d75948ac93a4a317feaf136cae78823071234ba5.tar.bz2
art-d75948ac93a4a317feaf136cae78823071234ba5.zip
Intrinsify String.compareTo.
Change-Id: Ia540df98755ac493fe61bd63f0bd94f6d97fbb57
Diffstat (limited to 'compiler/optimizing/code_generator_x86_64.h')
-rw-r--r--compiler/optimizing/code_generator_x86_64.h19
1 files changed, 19 insertions, 0 deletions
diff --git a/compiler/optimizing/code_generator_x86_64.h b/compiler/optimizing/code_generator_x86_64.h
index 707c9992c0..a380b6a04c 100644
--- a/compiler/optimizing/code_generator_x86_64.h
+++ b/compiler/optimizing/code_generator_x86_64.h
@@ -37,6 +37,25 @@ static constexpr FloatRegister kParameterFloatRegisters[] =
static constexpr size_t kParameterCoreRegistersLength = arraysize(kParameterCoreRegisters);
static constexpr size_t kParameterFloatRegistersLength = arraysize(kParameterFloatRegisters);
+static constexpr Register kRuntimeParameterCoreRegisters[] = { RDI, RSI, RDX };
+static constexpr size_t kRuntimeParameterCoreRegistersLength =
+ arraysize(kRuntimeParameterCoreRegisters);
+static constexpr FloatRegister kRuntimeParameterFpuRegisters[] = { XMM0, XMM1 };
+static constexpr size_t kRuntimeParameterFpuRegistersLength =
+ arraysize(kRuntimeParameterFpuRegisters);
+
+class InvokeRuntimeCallingConvention : public CallingConvention<Register, FloatRegister> {
+ public:
+ InvokeRuntimeCallingConvention()
+ : CallingConvention(kRuntimeParameterCoreRegisters,
+ kRuntimeParameterCoreRegistersLength,
+ kRuntimeParameterFpuRegisters,
+ kRuntimeParameterFpuRegistersLength) {}
+
+ private:
+ DISALLOW_COPY_AND_ASSIGN(InvokeRuntimeCallingConvention);
+};
+
class InvokeDexCallingConvention : public CallingConvention<Register, FloatRegister> {
public:
InvokeDexCallingConvention() : CallingConvention(