diff options
author | 2018-01-23 20:45:36 +0000 | |
---|---|---|
committer | 2018-01-23 20:45:36 +0000 | |
commit | 6650b0db52eee45f024652bae526ad64166ae02f (patch) | |
tree | c4a15d188f5e03d08d79957eb9cf0c84d8d56565 /compiler/optimizing | |
parent | 49971eb50c0213b7506bdd29954a6a4423e6426a (diff) | |
parent | 4eb45631b38445c587c235f1b2fa1699ba820e76 (diff) |
Merge "ARM: Use r4 for stack overflow check to reduce code size."
Diffstat (limited to 'compiler/optimizing')
-rw-r--r-- | compiler/optimizing/code_generator_arm_vixl.cc | 8 |
1 files changed, 6 insertions, 2 deletions
diff --git a/compiler/optimizing/code_generator_arm_vixl.cc b/compiler/optimizing/code_generator_arm_vixl.cc index 84ba178f7b..504c6479cc 100644 --- a/compiler/optimizing/code_generator_arm_vixl.cc +++ b/compiler/optimizing/code_generator_arm_vixl.cc @@ -2490,8 +2490,12 @@ void CodeGeneratorARMVIXL::GenerateFrameEntry() { } if (!skip_overflow_check) { - UseScratchRegisterScope temps(GetVIXLAssembler()); - vixl32::Register temp = temps.Acquire(); + // Using r4 instead of IP saves 2 bytes. Start by asserting that r4 is available here. + for (vixl32::Register reg : kParameterCoreRegistersVIXL) { + DCHECK(!reg.Is(r4)); + } + DCHECK(!kCoreCalleeSaves.Includes(r4)); + vixl32::Register temp = r4; __ Sub(temp, sp, Operand::From(GetStackOverflowReservedBytes(InstructionSet::kArm))); // The load must immediately precede RecordPcInfo. ExactAssemblyScope aas(GetVIXLAssembler(), |