| Index: src/compiler/ppc/code-generator-ppc.cc
|
| diff --git a/src/compiler/ppc/code-generator-ppc.cc b/src/compiler/ppc/code-generator-ppc.cc
|
| index 1d8d0dd1c5c3e9739ca0e46f1f4d4a4b66d65030..c6b003d8bb581be32d403029b427cb56f066f739 100644
|
| --- a/src/compiler/ppc/code-generator-ppc.cc
|
| +++ b/src/compiler/ppc/code-generator-ppc.cc
|
| @@ -621,6 +621,8 @@ void CodeGenerator::AssembleArchInstruction(Instruction* instr) {
|
|
|
| switch (opcode) {
|
| case kArchCallCodeObject: {
|
| + v8::internal::Assembler::BlockTrampolinePoolScope block_trampoline_pool(
|
| + masm());
|
| EnsureSpaceForLazyDeopt();
|
| if (HasRegisterInput(instr, 0)) {
|
| __ addi(ip, i.InputRegister(0),
|
| @@ -651,6 +653,8 @@ void CodeGenerator::AssembleArchInstruction(Instruction* instr) {
|
| break;
|
| }
|
| case kArchCallJSFunction: {
|
| + v8::internal::Assembler::BlockTrampolinePoolScope block_trampoline_pool(
|
| + masm());
|
| EnsureSpaceForLazyDeopt();
|
| Register func = i.InputRegister(0);
|
| if (FLAG_debug_code) {
|
| @@ -682,6 +686,8 @@ void CodeGenerator::AssembleArchInstruction(Instruction* instr) {
|
| break;
|
| }
|
| case kArchLazyBailout: {
|
| + v8::internal::Assembler::BlockTrampolinePoolScope block_trampoline_pool(
|
| + masm());
|
| EnsureSpaceForLazyDeopt();
|
| RecordCallPosition(instr);
|
| break;
|
| @@ -1702,6 +1708,9 @@ void CodeGenerator::EnsureSpaceForLazyDeopt() {
|
| // instruction for patching the code here.
|
| int current_pc = masm()->pc_offset();
|
| if (current_pc < last_lazy_deopt_pc_ + space_needed) {
|
| + // Block tramoline pool emission for duration of padding.
|
| + v8::internal::Assembler::BlockTrampolinePoolScope block_trampoline_pool(
|
| + masm());
|
| int padding_size = last_lazy_deopt_pc_ + space_needed - current_pc;
|
| DCHECK_EQ(0, padding_size % v8::internal::Assembler::kInstrSize);
|
| while (padding_size > 0) {
|
|
|