diff --git a/src/arm/assembler-arm-inl.h b/src/arm/assembler-arm-inl.h index 28a323ab519..4b4e1d32080 100644 --- a/src/arm/assembler-arm-inl.h +++ b/src/arm/assembler-arm-inl.h @@ -433,9 +433,7 @@ void Assembler::CheckBuffer() { if (buffer_space() <= kGap) { GrowBuffer(); } - if (pc_offset() >= next_buffer_check_) { - CheckConstPool(false, true); - } + MaybeCheckConstPool(); } diff --git a/src/arm/assembler-arm.h b/src/arm/assembler-arm.h index 73c109972ed..1d09830c512 100644 --- a/src/arm/assembler-arm.h +++ b/src/arm/assembler-arm.h @@ -1492,6 +1492,12 @@ class Assembler : public AssemblerBase { // Check if is time to emit a constant pool. void CheckConstPool(bool force_emit, bool require_jump); + void MaybeCheckConstPool() { + if (pc_offset() >= next_buffer_check_) { + CheckConstPool(false, true); + } + } + int EmitEmbeddedConstantPool() { DCHECK(FLAG_enable_embedded_constant_pool); return constant_pool_builder_.Emit(this); diff --git a/src/compiler/arm/code-generator-arm.cc b/src/compiler/arm/code-generator-arm.cc index 2b605460787..0c97f846f0c 100644 --- a/src/compiler/arm/code-generator-arm.cc +++ b/src/compiler/arm/code-generator-arm.cc @@ -312,6 +312,8 @@ void CodeGenerator::AssembleDeconstructActivationRecord() { void CodeGenerator::AssembleArchInstruction(Instruction* instr) { ArmOperandConverter i(this, instr); + masm()->MaybeCheckConstPool(); + switch (ArchOpcodeField::decode(instr->opcode())) { case kArchCallCodeObject: { EnsureSpaceForLazyDeopt();