Index: src/ppc/full-codegen-ppc.cc |
diff --git a/src/ppc/full-codegen-ppc.cc b/src/ppc/full-codegen-ppc.cc |
index fc65863deb62cfc5405082c785a1ca57381fc95e..d9c0478ec2fe25225b46f5ceb5dd8e4f2ebaa7ed 100644 |
--- a/src/ppc/full-codegen-ppc.cc |
+++ b/src/ppc/full-codegen-ppc.cc |
@@ -400,6 +400,10 @@ void FullCodeGenerator::Generate() { |
__ LoadRoot(r3, Heap::kUndefinedValueRootIndex); |
} |
EmitReturnSequence(); |
+ |
+ if (HasStackOverflow()) { |
+ masm_->AbortConstantPoolBuilding(); |
+ } |
} |
@@ -440,6 +444,7 @@ void FullCodeGenerator::EmitBackEdgeBookkeeping(IterationStatement* stmt, |
EmitProfilingCounterDecrement(weight); |
{ |
Assembler::BlockTrampolinePoolScope block_trampoline_pool(masm_); |
+ Assembler::BlockConstantPoolEntrySharingScope prevent_entry_sharing(masm_); |
// BackEdgeTable::PatchAt manipulates this sequence. |
__ cmpi(r6, Operand::Zero()); |
__ bc_short(ge, &ok); |
@@ -512,7 +517,7 @@ void FullCodeGenerator::EmitReturnSequence() { |
// With 64bit we may need nop() instructions to ensure we have |
// enough space to SetDebugBreakAtReturn() |
if (is_int16(sp_delta)) { |
- masm_->nop(); |
+ if (!FLAG_enable_embedded_constant_pool) masm_->nop(); |
masm_->nop(); |
} |
#endif |
@@ -2317,6 +2322,10 @@ void FullCodeGenerator::EmitGeneratorResume( |
__ bne(&slow_resume, cr0); |
__ LoadP(ip, FieldMemOperand(r7, JSFunction::kCodeEntryOffset)); |
{ |
+ ConstantPoolUnavailableScope constant_pool_unavailable(masm_); |
+ if (FLAG_enable_embedded_constant_pool) { |
+ __ LoadConstantPoolPointerRegisterFromCodeTargetAddress(ip); |
+ } |
__ LoadP(r5, FieldMemOperand(r4, JSGeneratorObject::kContinuationOffset)); |
__ SmiUntag(r5); |
__ add(ip, ip, r5); |