| 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.
|
|
|