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 bdebd304c04495d1abc176aa75aa6bf921315bd4..bdcdbbcbb3458e9ba4f22fdba266c282546dc20c 100644 |
--- a/src/compiler/ppc/code-generator-ppc.cc |
+++ b/src/compiler/ppc/code-generator-ppc.cc |
@@ -1269,8 +1269,16 @@ void CodeGenerator::AssemblePrologue() { |
int register_save_area_size = 0; |
RegList frame_saves = fp.bit(); |
__ mflr(r0); |
- __ Push(r0, fp); |
- __ mr(fp, sp); |
+ if (FLAG_enable_embedded_constant_pool) { |
+ __ Push(r0, fp, kConstantPoolRegister); |
+ // Adjust FP to point to saved FP. |
+ __ subi(fp, sp, Operand(StandardFrameConstants::kConstantPoolOffset)); |
+ register_save_area_size += kPointerSize; |
+ frame_saves |= kConstantPoolRegister.bit(); |
+ } else { |
+ __ Push(r0, fp); |
+ __ mr(fp, sp); |
+ } |
// Save callee-saved registers. |
const RegList saves = descriptor->CalleeSavedRegisters() & ~frame_saves; |
for (int i = Register::kNumRegisters - 1; i >= 0; i--) { |
@@ -1323,6 +1331,9 @@ void CodeGenerator::AssembleReturn() { |
} |
// Restore registers. |
RegList frame_saves = fp.bit(); |
+ if (FLAG_enable_embedded_constant_pool) { |
+ frame_saves |= kConstantPoolRegister.bit(); |
+ } |
const RegList saves = descriptor->CalleeSavedRegisters() & ~frame_saves; |
if (saves != 0) { |
__ MultiPop(saves); |
@@ -1512,6 +1523,14 @@ void CodeGenerator::AssembleSwap(InstructionOperand* source, |
} |
} |
+#if V8_EMBEDDED_CONSTANT_POOL |
+ |
+void CodeGenerator::AssembleConstantPool() { |
+ DCHECK(FLAG_enable_embedded_constant_pool); |
+ __ EmitConstantPool(); |
+} |
+ |
+#endif // V8_EMBEDDED_CONSTANT_POOL |
void CodeGenerator::AssembleJumpTable(Label** targets, size_t target_count) { |
for (size_t index = 0; index < target_count; ++index) { |