Merge V8 5.2.361.47 DO NOT MERGE
https://chromium.googlesource.com/v8/v8/+/5.2.361.47
FPIIM-449
Change-Id: Ibec421b85a9b88cb3a432ada642e469fe7e78346
(cherry picked from commit bcf72ee8e3b26f1d0726869c7ddb3921c68b09a8)
diff --git a/src/compiler/code-generator.h b/src/compiler/code-generator.h
index b82181c..5f35e8a 100644
--- a/src/compiler/code-generator.h
+++ b/src/compiler/code-generator.h
@@ -54,7 +54,7 @@
InstructionSequence* code() const { return code_; }
FrameAccessState* frame_access_state() const { return frame_access_state_; }
- Frame* frame() const { return frame_access_state_->frame(); }
+ const Frame* frame() const { return frame_access_state_->frame(); }
Isolate* isolate() const { return info_->isolate(); }
Linkage* linkage() const { return linkage_; }
@@ -67,6 +67,12 @@
Zone* zone() const { return code()->zone(); }
CompilationInfo* info() const { return info_; }
+ // Create the FrameAccessState object. The Frame is immutable from here on.
+ void CreateFrameAccessState(Frame* frame);
+
+ // Architecture - specific frame finalization.
+ void FinishFrame(Frame* frame);
+
// Checks if {block} will appear directly after {current_block_} when
// assembling code, in which case, a fall-through can be used.
bool IsNextInAssemblyOrder(RpoNumber block) const;
@@ -84,11 +90,14 @@
bool IsMaterializableFromRoot(Handle<HeapObject> object,
Heap::RootListIndex* index_return);
+ enum CodeGenResult { kSuccess, kTooManyDeoptimizationBailouts };
+
// Assemble instructions for the specified block.
- void AssembleBlock(const InstructionBlock* block);
+ CodeGenResult AssembleBlock(const InstructionBlock* block);
// Assemble code for the specified instruction.
- void AssembleInstruction(Instruction* instr, const InstructionBlock* block);
+ CodeGenResult AssembleInstruction(Instruction* instr,
+ const InstructionBlock* block);
void AssembleSourcePosition(Instruction* instr);
void AssembleGaps(Instruction* instr);
@@ -96,21 +105,19 @@
// ============= Architecture-specific code generation methods. ==============
// ===========================================================================
- void AssembleArchInstruction(Instruction* instr);
+ CodeGenResult AssembleArchInstruction(Instruction* instr);
void AssembleArchJump(RpoNumber target);
void AssembleArchBranch(Instruction* instr, BranchInfo* branch);
void AssembleArchBoolean(Instruction* instr, FlagsCondition condition);
void AssembleArchLookupSwitch(Instruction* instr);
void AssembleArchTableSwitch(Instruction* instr);
- void AssembleDeoptimizerCall(int deoptimization_id,
- Deoptimizer::BailoutType bailout_type);
+ CodeGenResult AssembleDeoptimizerCall(int deoptimization_id,
+ Deoptimizer::BailoutType bailout_type);
// Generates an architecture-specific, descriptor-specific prologue
// to set up a stack frame.
- void AssemblePrologue();
-
- void AssembleSetupStackPointer();
+ void AssembleConstructFrame();
// Generates an architecture-specific, descriptor-specific return sequence
// to tear down a stack frame.
@@ -174,7 +181,6 @@
Translation* translation);
void AddTranslationForOperand(Translation* translation, Instruction* instr,
InstructionOperand* op, MachineType type);
- void AddNopForSmiCodeInlining();
void EnsureSpaceForLazyDeopt();
void MarkLazyDeoptSite();