From 7fb49da8ec62e8a10ed9419ade9f32c6b1174687 Mon Sep 17 00:00:00 2001 From: Nicolas Geoffray Date: Mon, 6 Oct 2014 09:12:41 +0100 Subject: Add support for floats and doubles. - Follows Quick conventions. - Currently only works with baseline register allocator. Change-Id: Ie4b8e298f4f5e1cd82364da83e4344d4fc3621a3 --- compiler/optimizing/code_generator.h | 26 ++++++++++++++++++++------ 1 file changed, 20 insertions(+), 6 deletions(-) (limited to 'compiler/optimizing/code_generator.h') diff --git a/compiler/optimizing/code_generator.h b/compiler/optimizing/code_generator.h index b58f3b3efc..c7623fe895 100644 --- a/compiler/optimizing/code_generator.h +++ b/compiler/optimizing/code_generator.h @@ -203,28 +203,42 @@ class CodeGenerator : public ArenaObject { DISALLOW_COPY_AND_ASSIGN(CodeGenerator); }; -template +template class CallingConvention { public: - CallingConvention(const T* registers, int number_of_registers) - : registers_(registers), number_of_registers_(number_of_registers) {} + CallingConvention(const C* registers, + size_t number_of_registers, + const F* fpu_registers, + size_t number_of_fpu_registers) + : registers_(registers), + number_of_registers_(number_of_registers), + fpu_registers_(fpu_registers), + number_of_fpu_registers_(number_of_fpu_registers) {} size_t GetNumberOfRegisters() const { return number_of_registers_; } + size_t GetNumberOfFpuRegisters() const { return number_of_fpu_registers_; } - T GetRegisterAt(size_t index) const { + C GetRegisterAt(size_t index) const { DCHECK_LT(index, number_of_registers_); return registers_[index]; } - uint8_t GetStackOffsetOf(size_t index) const { + F GetFpuRegisterAt(size_t index) const { + DCHECK_LT(index, number_of_fpu_registers_); + return fpu_registers_[index]; + } + + size_t GetStackOffsetOf(size_t index) const { // We still reserve the space for parameters passed by registers. // Add one for the method pointer. return (index + 1) * kVRegSize; } private: - const T* registers_; + const C* registers_; const size_t number_of_registers_; + const F* fpu_registers_; + const size_t number_of_fpu_registers_; DISALLOW_COPY_AND_ASSIGN(CallingConvention); }; -- cgit v1.2.3-59-g8ed1b