Index: src/compiler/frame.cc |
diff --git a/src/compiler/frame.cc b/src/compiler/frame.cc |
index ace0f7c8b3f59190fe35c47c3cd67545c3376f05..3d93e1528f503037b5dd54941e9caf97a91a00c4 100644 |
--- a/src/compiler/frame.cc |
+++ b/src/compiler/frame.cc |
@@ -13,9 +13,7 @@ namespace internal { |
namespace compiler { |
Frame::Frame(int fixed_frame_size_in_slots, const CallDescriptor* descriptor) |
- : needs_frame_((descriptor != nullptr) && |
- descriptor->RequiresFrameAsIncoming()), |
- frame_slot_count_(fixed_frame_size_in_slots), |
+ : frame_slot_count_(fixed_frame_size_in_slots), |
callee_saved_slot_count_(0), |
spill_slot_count_(0), |
allocated_registers_(nullptr), |
@@ -34,8 +32,13 @@ int Frame::AlignFrame(int alignment) { |
return delta; |
} |
+void FrameAccessState::MarkHasFrame(bool state) { |
+ has_frame_ = state; |
+ SetFrameAccessToDefault(); |
+} |
+ |
void FrameAccessState::SetFrameAccessToDefault() { |
- if (frame()->needs_frame() && !FLAG_turbo_sp_frame_access) { |
+ if (has_frame() && !FLAG_turbo_sp_frame_access) { |
SetFrameAccessToFP(); |
} else { |
SetFrameAccessToSP(); |
@@ -46,7 +49,6 @@ void FrameAccessState::SetFrameAccessToDefault() { |
FrameOffset FrameAccessState::GetFrameOffset(int spill_slot) const { |
const int frame_offset = FrameSlotToFPOffset(spill_slot); |
if (access_frame_with_fp()) { |
- DCHECK(frame()->needs_frame()); |
return FrameOffset::FromFramePointer(frame_offset); |
} else { |
// No frame. Retrieve all parameters relative to stack pointer. |