@@ -621,6 +621,8 @@ void CodeGenerator::AssembleArchInstruction(Instruction* instr) {
621621
622622 switch (opcode) {
623623 case kArchCallCodeObject : {
624+ v8::internal::Assembler::BlockTrampolinePoolScope block_trampoline_pool (
625+ masm ());
624626 EnsureSpaceForLazyDeopt ();
625627 if (HasRegisterInput (instr, 0 )) {
626628 __ addi (ip, i.InputRegister (0 ),
@@ -651,6 +653,8 @@ void CodeGenerator::AssembleArchInstruction(Instruction* instr) {
651653 break ;
652654 }
653655 case kArchCallJSFunction : {
656+ v8::internal::Assembler::BlockTrampolinePoolScope block_trampoline_pool (
657+ masm ());
654658 EnsureSpaceForLazyDeopt ();
655659 Register func = i.InputRegister (0 );
656660 if (FLAG_debug_code) {
@@ -682,6 +686,8 @@ void CodeGenerator::AssembleArchInstruction(Instruction* instr) {
682686 break ;
683687 }
684688 case kArchLazyBailout : {
689+ v8::internal::Assembler::BlockTrampolinePoolScope block_trampoline_pool (
690+ masm ());
685691 EnsureSpaceForLazyDeopt ();
686692 RecordCallPosition (instr);
687693 break ;
@@ -1707,6 +1713,9 @@ void CodeGenerator::EnsureSpaceForLazyDeopt() {
17071713 // instruction for patching the code here.
17081714 int current_pc = masm ()->pc_offset ();
17091715 if (current_pc < last_lazy_deopt_pc_ + space_needed) {
1716+ // Block tramoline pool emission for duration of padding.
1717+ v8::internal::Assembler::BlockTrampolinePoolScope block_trampoline_pool (
1718+ masm ());
17101719 int padding_size = last_lazy_deopt_pc_ + space_needed - current_pc;
17111720 DCHECK_EQ (0 , padding_size % v8::internal::Assembler::kInstrSize );
17121721 while (padding_size > 0 ) {
0 commit comments