Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(457)

Unified Diff: src/ic/ic.cc

Issue 2437593003: [IC] IC::GetSharedFunctionInfo does not need to skip bytecode handler frames. (Closed)
Patch Set: Rebased the patch and removed FLAG_ignition from constructor. Created 4 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « no previous file | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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.
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698