Chromium Code Reviews| Index: src/ic/ic.cc |
| diff --git a/src/ic/ic.cc b/src/ic/ic.cc |
| index d9fb716ab26b2756300b4deb274de9a062427b4d..fbc11fb5db4bc7808e7f0ae141140d673ac035a7 100644 |
| --- a/src/ic/ic.cc |
| +++ b/src/ic/ic.cc |
| @@ -192,12 +192,15 @@ IC::IC(FrameDepth depth, Isolate* isolate, FeedbackNexus* nexus) |
| // function's frame. Check if the there is an additional frame, and if there |
| // is skip this frame. However, the pc should not be updated. The call to |
| // ICs happen from bytecode handlers. |
| + // TODO(rmcilroy): Remove this once bytecode handlers don't need a frame. |
|
mythria
2016/10/31 15:47:37
Do we need this TODO? since we need to call into r
rmcilroy
2016/11/01 13:01:02
Yeah I had plans to avoid needing to build the fra
mythria
2016/11/01 15:55:53
Done.
|
| Object* frame_type = |
| Memory::Object_at(fp + TypedFrameConstants::kFrameTypeOffset); |
| if (frame_type == Smi::FromInt(StackFrame::STUB)) { |
| fp = Memory::Address_at(fp + TypedFrameConstants::kCallerFPOffset); |
| } |
| + |
| fp_ = fp; |
| + |
|
rmcilroy
2016/11/01 13:01:02
Intended changes?
mythria
2016/11/01 15:55:53
No. Removed them. Done.
|
| if (FLAG_enable_embedded_constant_pool) { |
| constant_pool_address_ = constant_pool; |
| } |
| @@ -250,10 +253,10 @@ SharedFunctionInfo* IC::GetSharedFunctionInfo() const { |
| // corresponding to the frame. |
| StackFrameIterator it(isolate()); |
| while (it.frame()->fp() != this->fp()) it.Advance(); |
| - if (it.frame()->type() == StackFrame::STUB) { |
| - // We might need to advance over bytecode handler frame for Ignition. |
| - it.Advance(); |
| - } |
| + // For ignition, bytecode handlers build a stub frame. This frame should be |
| + // skipped in the constructor. DCHECK to be sure we skipped the frame. |
| + DCHECK(it.frame()->type() != StackFrame::STUB); |
|
mythria
2016/10/31 15:47:37
I wanted to add a check to see if it is the correc
rmcilroy
2016/11/01 13:01:02
Hmm, we could probably just remove this - I'm not
mythria
2016/11/01 15:55:54
Removed it. I wasn't very happy with that check ei
|
| + |
| JavaScriptFrame* frame = JavaScriptFrame::cast(it.frame()); |
| // Find the function on the stack and both the active code for the |
| // function and the original code. |