diff options
| author | 2015-01-23 21:51:55 +0000 | |
|---|---|---|
| committer | 2015-01-23 21:53:39 +0000 | |
| commit | 4597b5b7648169fbdca1af69b7643e27a6c8a523 (patch) | |
| tree | e1979403ef5ca29bfcf72e6f5e4824de97a3e26b /compiler/optimizing | |
| parent | c08e6453878da2e064729e01d562973280948ce1 (diff) | |
Fix valgrind error.
Also introduce kLastCpuRegister to define kFakeReturnRegister.
Change-Id: I58cef6186c0452d45b5d2dcba9298cbe07f3552d
Diffstat (limited to 'compiler/optimizing')
| -rw-r--r-- | compiler/optimizing/code_generator_x86_64.cc | 14 |
1 files changed, 7 insertions, 7 deletions
diff --git a/compiler/optimizing/code_generator_x86_64.cc b/compiler/optimizing/code_generator_x86_64.cc index e60f8a5690..8cc0678bae 100644 --- a/compiler/optimizing/code_generator_x86_64.cc +++ b/compiler/optimizing/code_generator_x86_64.cc @@ -45,9 +45,7 @@ static constexpr size_t kRuntimeParameterCoreRegistersLength = static constexpr FloatRegister kRuntimeParameterFpuRegisters[] = { XMM0, XMM1 }; static constexpr size_t kRuntimeParameterFpuRegistersLength = arraysize(kRuntimeParameterFpuRegisters); -static constexpr Register kFakeReturnRegister = Register(16); -static constexpr Register kCoreCalleeSaves[] = - { RBX, RBP, R12, R13, R14, R15, kFakeReturnRegister }; +static constexpr Register kCoreCalleeSaves[] = { RBX, RBP, R12, R13, R14, R15 }; static constexpr FloatRegister kFpuCalleeSaves[] = { XMM12, XMM13, XMM14, XMM15 }; static constexpr int kC2ConditionMask = 0x400; @@ -412,13 +410,16 @@ static uint32_t ComputeCalleeSaveMask(const int* registers, size_t length) { } static constexpr int kNumberOfCpuRegisterPairs = 0; +// Use a fake return address register to mimic Quick. +static constexpr Register kFakeReturnRegister = Register(kLastCpuRegister + 1); CodeGeneratorX86_64::CodeGeneratorX86_64(HGraph* graph, const CompilerOptions& compiler_options) : CodeGenerator(graph, kNumberOfCpuRegisters, kNumberOfFloatRegisters, kNumberOfCpuRegisterPairs, ComputeCalleeSaveMask(reinterpret_cast<const int*>(kCoreCalleeSaves), - arraysize(kCoreCalleeSaves)), + arraysize(kCoreCalleeSaves)) + | (1 << kFakeReturnRegister), ComputeCalleeSaveMask(reinterpret_cast<const int*>(kFpuCalleeSaves), arraysize(kFpuCalleeSaves)), compiler_options), @@ -426,7 +427,6 @@ CodeGeneratorX86_64::CodeGeneratorX86_64(HGraph* graph, const CompilerOptions& c location_builder_(graph, this), instruction_visitor_(graph, this), move_resolver_(graph->GetArena(), this) { - // Use a fake return address register to mimic Quick. AddAllocatedRegister(Location::RegisterLocation(kFakeReturnRegister)); } @@ -492,7 +492,7 @@ void CodeGeneratorX86_64::GenerateFrameEntry() { for (int i = arraysize(kCoreCalleeSaves) - 1; i >= 0; --i) { Register reg = kCoreCalleeSaves[i]; - if (allocated_registers_.ContainsCoreRegister(reg) && reg != kFakeReturnRegister) { + if (allocated_registers_.ContainsCoreRegister(reg)) { __ pushq(CpuRegister(reg)); } } @@ -525,7 +525,7 @@ void CodeGeneratorX86_64::GenerateFrameExit() { for (size_t i = 0; i < arraysize(kCoreCalleeSaves); ++i) { Register reg = kCoreCalleeSaves[i]; - if (allocated_registers_.ContainsCoreRegister(reg) && reg != kFakeReturnRegister) { + if (allocated_registers_.ContainsCoreRegister(reg)) { __ popq(CpuRegister(reg)); } } |