Commit 6cfe2508 authored by mbrandy's avatar mbrandy Committed by Commit bot

PPC: Make base register containing prologue address explicit.

No functional change.  This is prep for fixing test failures in wasm tests.

R=joransiu@ca.ibm.com, jyan@ca.ibm.com, michael_dawson@ca.ibm.com
BUG=

Review URL: https://codereview.chromium.org/1583523002

Cr-Commit-Position: refs/heads/master@{#33248}
parent e0f23ea7
...@@ -1543,9 +1543,9 @@ void CodeGenerator::AssemblePrologue() { ...@@ -1543,9 +1543,9 @@ void CodeGenerator::AssemblePrologue() {
__ mr(fp, sp); __ mr(fp, sp);
} }
} else if (descriptor->IsJSFunctionCall()) { } else if (descriptor->IsJSFunctionCall()) {
__ Prologue(this->info()->GeneratePreagedPrologue()); __ Prologue(this->info()->GeneratePreagedPrologue(), ip);
} else if (frame()->needs_frame()) { } else if (frame()->needs_frame()) {
__ StubPrologue(); __ StubPrologue(ip);
} else { } else {
frame()->SetElidedFrameSizeInSlots(0); frame()->SetElidedFrameSizeInSlots(0);
} }
......
...@@ -130,9 +130,9 @@ bool LCodeGen::GeneratePrologue() { ...@@ -130,9 +130,9 @@ bool LCodeGen::GeneratePrologue() {
info()->set_prologue_offset(prologue_offset); info()->set_prologue_offset(prologue_offset);
if (NeedsEagerFrame()) { if (NeedsEagerFrame()) {
if (info()->IsStub()) { if (info()->IsStub()) {
__ StubPrologue(prologue_offset); __ StubPrologue(ip, prologue_offset);
} else { } else {
__ Prologue(info()->GeneratePreagedPrologue(), prologue_offset); __ Prologue(info()->GeneratePreagedPrologue(), ip, prologue_offset);
} }
frame_is_built_ = true; frame_is_built_ = true;
} }
......
...@@ -135,7 +135,7 @@ void FullCodeGenerator::Generate() { ...@@ -135,7 +135,7 @@ void FullCodeGenerator::Generate() {
__ addi(ip, ip, Operand(prologue_offset)); __ addi(ip, ip, Operand(prologue_offset));
} }
info->set_prologue_offset(prologue_offset); info->set_prologue_offset(prologue_offset);
__ Prologue(info->GeneratePreagedPrologue(), prologue_offset); __ Prologue(info->GeneratePreagedPrologue(), ip, prologue_offset);
{ {
Comment cmnt(masm_, "[ Allocate locals"); Comment cmnt(masm_, "[ Allocate locals");
......
...@@ -753,20 +753,26 @@ void MacroAssembler::LoadConstantPoolPointerRegister() { ...@@ -753,20 +753,26 @@ void MacroAssembler::LoadConstantPoolPointerRegister() {
} }
void MacroAssembler::StubPrologue(int prologue_offset) { void MacroAssembler::StubPrologue(Register base, int prologue_offset) {
LoadSmiLiteral(r11, Smi::FromInt(StackFrame::STUB)); LoadSmiLiteral(r11, Smi::FromInt(StackFrame::STUB));
PushFixedFrame(r11); PushFixedFrame(r11);
// Adjust FP to point to saved FP. // Adjust FP to point to saved FP.
addi(fp, sp, Operand(StandardFrameConstants::kFixedFrameSizeFromFp)); addi(fp, sp, Operand(StandardFrameConstants::kFixedFrameSizeFromFp));
if (FLAG_enable_embedded_constant_pool) { if (FLAG_enable_embedded_constant_pool) {
// ip contains prologue address if (!base.is(no_reg)) {
LoadConstantPoolPointerRegister(ip, -prologue_offset); // base contains prologue address
LoadConstantPoolPointerRegister(base, -prologue_offset);
} else {
LoadConstantPoolPointerRegister();
}
set_constant_pool_available(true); set_constant_pool_available(true);
} }
} }
void MacroAssembler::Prologue(bool code_pre_aging, int prologue_offset) { void MacroAssembler::Prologue(bool code_pre_aging, Register base,
int prologue_offset) {
DCHECK(!base.is(no_reg));
{ {
PredictableCodeSizeScope predictible_code_size_scope( PredictableCodeSizeScope predictible_code_size_scope(
this, kNoCodeAgeSequenceLength); this, kNoCodeAgeSequenceLength);
...@@ -796,8 +802,8 @@ void MacroAssembler::Prologue(bool code_pre_aging, int prologue_offset) { ...@@ -796,8 +802,8 @@ void MacroAssembler::Prologue(bool code_pre_aging, int prologue_offset) {
} }
} }
if (FLAG_enable_embedded_constant_pool) { if (FLAG_enable_embedded_constant_pool) {
// ip contains prologue address // base contains prologue address
LoadConstantPoolPointerRegister(ip, -prologue_offset); LoadConstantPoolPointerRegister(base, -prologue_offset);
set_constant_pool_available(true); set_constant_pool_available(true);
} }
} }
......
...@@ -403,8 +403,8 @@ class MacroAssembler : public Assembler { ...@@ -403,8 +403,8 @@ class MacroAssembler : public Assembler {
#endif #endif
// Generates function and stub prologue code. // Generates function and stub prologue code.
void StubPrologue(int prologue_offset = 0); void StubPrologue(Register base = no_reg, int prologue_offset = 0);
void Prologue(bool code_pre_aging, int prologue_offset = 0); void Prologue(bool code_pre_aging, Register base, int prologue_offset = 0);
// Enter exit frame. // Enter exit frame.
// stack_space - extra stack space, used for parameters before call to C. // stack_space - extra stack space, used for parameters before call to C.
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment