Index: src/compiler/code-generator.h |
diff --git a/src/compiler/code-generator.h b/src/compiler/code-generator.h |
index f1e99ec8d2817880df0b1892c407b341ac80ecd1..421bee58445dfb08fc339d30b593163133f1f5e2 100644 |
--- a/src/compiler/code-generator.h |
+++ b/src/compiler/code-generator.h |
@@ -57,7 +57,6 @@ class CodeGenerator final : public GapResolver::Assembler { |
Frame* frame() const { return frame_access_state_->frame(); } |
Isolate* isolate() const { return info_->isolate(); } |
Linkage* linkage() const { return linkage_; } |
- |
Label* GetLabel(RpoNumber rpo) { return &labels_[rpo.ToSize()]; } |
private: |
@@ -106,6 +105,9 @@ class CodeGenerator final : public GapResolver::Assembler { |
// Generates an architecture-specific, descriptor-specific prologue |
// to set up a stack frame. |
void AssemblePrologue(); |
+ |
+ void SetupStackPointer(); |
+ |
// Generates an architecture-specific, descriptor-specific return sequence |
// to tear down a stack frame. |
void AssembleReturn(); |
@@ -113,6 +115,16 @@ class CodeGenerator final : public GapResolver::Assembler { |
// Generates code to deconstruct a the caller's frame, including arguments. |
void AssembleDeconstructActivationRecord(int stack_param_delta); |
+ // Deconstruct the frame, if the frame_access_state requires it. |
+ void AssembleDeconstructFrameIfNeeded(); |
+ // Deconstruct the frame, if the frame_access_state requires it, and update or |
+ // reuse the return label. If the return block deconstructs, do not |
+ // deconstruct twice. Return true if this resulted in completing the exit from |
+ // the frame, and therefore there is nothing left to do. |
+ bool AssembleDeconstructFrameUsingReturnLabel(); |
+ |
+ void AssembleDeconstructFrame(); |
+ |
// Generates code to manipulate the stack in preparation for a tail call. |
void AssemblePrepareTailCall(int stack_param_delta); |