From b0938269dc7f73118310cdfc8c67cb3108e33433 Mon Sep 17 00:00:00 2001 From: "alexandre.rames@arm.com" Date: Mon, 14 Apr 2014 11:04:46 +0000 Subject: [PATCH] ARM64: Fix EnsureSpace to not emit pools. The EnsureSpace scope must not trigger any code emission, so it should only grow the buffer, and not check for pools. R=ulan@chromium.org Review URL: https://codereview.chromium.org/230223005 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@20714 ce2b1a6d-e550-0410-aec6-3dcde31c8c00 --- src/arm64/assembler-arm64-inl.h | 7 ++++++- src/arm64/assembler-arm64.h | 3 ++- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/src/arm64/assembler-arm64-inl.h b/src/arm64/assembler-arm64-inl.h index b56e3ed..3d12ac0 100644 --- a/src/arm64/assembler-arm64-inl.h +++ b/src/arm64/assembler-arm64-inl.h @@ -1199,11 +1199,16 @@ void Assembler::LoadRelocated(const CPURegister& rt, const Operand& operand) { } -inline void Assembler::CheckBuffer() { +inline void Assembler::CheckBufferSpace() { ASSERT(pc_ < (buffer_ + buffer_size_)); if (buffer_space() < kGap) { GrowBuffer(); } +} + + +inline void Assembler::CheckBuffer() { + CheckBufferSpace(); if (pc_offset() >= next_veneer_pool_check_) { CheckVeneerPool(false, true); } diff --git a/src/arm64/assembler-arm64.h b/src/arm64/assembler-arm64.h index a5784a6..391a900 100644 --- a/src/arm64/assembler-arm64.h +++ b/src/arm64/assembler-arm64.h @@ -2040,6 +2040,7 @@ class Assembler : public AssemblerBase { } void GrowBuffer(); + void CheckBufferSpace(); void CheckBuffer(); // Pc offset of the next constant pool check. @@ -2238,7 +2239,7 @@ class PatchingAssembler : public Assembler { class EnsureSpace BASE_EMBEDDED { public: explicit EnsureSpace(Assembler* assembler) { - assembler->CheckBuffer(); + assembler->CheckBufferSpace(); } }; -- 2.7.4