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

Side by Side Diff: src/compiler/js-inlining.cc

Issue 551413002: Switch inlining to use simplified instead of machine loads. (Closed) Base URL: https://v8.googlecode.com/svn/branches/bleeding_edge
Patch Set: Addressed comments by Sigurd. Created 6 years, 3 months 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 unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « src/compiler/access-builder.cc ('k') | test/cctest/cctest.status » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2014 the V8 project authors. All rights reserved. 1 // Copyright 2014 the V8 project authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "src/compiler/access-builder.h"
5 #include "src/compiler/ast-graph-builder.h" 6 #include "src/compiler/ast-graph-builder.h"
6 #include "src/compiler/common-operator.h" 7 #include "src/compiler/common-operator.h"
7 #include "src/compiler/generic-node-inl.h" 8 #include "src/compiler/generic-node-inl.h"
8 #include "src/compiler/graph-inl.h" 9 #include "src/compiler/graph-inl.h"
9 #include "src/compiler/graph-visualizer.h" 10 #include "src/compiler/graph-visualizer.h"
10 #include "src/compiler/js-inlining.h" 11 #include "src/compiler/js-inlining.h"
11 #include "src/compiler/js-operator.h" 12 #include "src/compiler/js-operator.h"
12 #include "src/compiler/node-aux-data-inl.h" 13 #include "src/compiler/node-aux-data-inl.h"
13 #include "src/compiler/node-matchers.h" 14 #include "src/compiler/node-matchers.h"
14 #include "src/compiler/node-properties-inl.h" 15 #include "src/compiler/node-properties-inl.h"
(...skipping 205 matching lines...) Expand 10 before | Expand all | Expand 10 after
220 }; 221 };
221 222
222 223
223 void Inlinee::InlineAtCall(JSGraph* jsgraph, Node* call) { 224 void Inlinee::InlineAtCall(JSGraph* jsgraph, Node* call) {
224 // The scheduler is smart enough to place our code; we just ensure {control} 225 // The scheduler is smart enough to place our code; we just ensure {control}
225 // becomes the control input of the start of the inlinee. 226 // becomes the control input of the start of the inlinee.
226 Node* control = NodeProperties::GetControlInput(call); 227 Node* control = NodeProperties::GetControlInput(call);
227 228
228 // The inlinee uses the context from the JSFunction object. This will 229 // The inlinee uses the context from the JSFunction object. This will
229 // also be the effect dependency for the inlinee as it produces an effect. 230 // also be the effect dependency for the inlinee as it produces an effect.
230 // TODO(sigurds) Use simplified load once it is ready. 231 SimplifiedOperatorBuilder simplified(jsgraph->zone());
231 Node* context = jsgraph->graph()->NewNode( 232 Node* context = jsgraph->graph()->NewNode(
232 jsgraph->machine()->Load(kMachAnyTagged), 233 simplified.LoadField(AccessBuilder::ForJSFunctionContext()),
233 NodeProperties::GetValueInput(call, 0), 234 NodeProperties::GetValueInput(call, 0),
234 jsgraph->Int32Constant(JSFunction::kContextOffset - kHeapObjectTag),
235 NodeProperties::GetEffectInput(call)); 235 NodeProperties::GetEffectInput(call));
236 236
237 // {inlinee_inputs} counts JSFunction, Receiver, arguments, context, 237 // {inlinee_inputs} counts JSFunction, Receiver, arguments, context,
238 // but not effect, control. 238 // but not effect, control.
239 int inlinee_inputs = start_->op()->OutputCount(); 239 int inlinee_inputs = start_->op()->OutputCount();
240 // Context is last argument. 240 // Context is last argument.
241 int inlinee_context_index = inlinee_inputs - 1; 241 int inlinee_context_index = inlinee_inputs - 1;
242 // {inliner_inputs} counts JSFunction, Receiver, arguments, but not 242 // {inliner_inputs} counts JSFunction, Receiver, arguments, but not
243 // context, effect, control. 243 // context, effect, control.
244 int inliner_inputs = OperatorProperties::GetValueInputCount(call->op()); 244 int inliner_inputs = OperatorProperties::GetValueInputCount(call->op());
(...skipping 105 matching lines...) Expand 10 before | Expand all | Expand 10 after
350 350
351 CopyVisitor visitor(&graph, jsgraph_->graph(), info.zone()); 351 CopyVisitor visitor(&graph, jsgraph_->graph(), info.zone());
352 visitor.CopyGraph(); 352 visitor.CopyGraph();
353 353
354 Inlinee inlinee(visitor.GetCopy(graph.start()), visitor.GetCopy(graph.end())); 354 Inlinee inlinee(visitor.GetCopy(graph.start()), visitor.GetCopy(graph.end()));
355 inlinee.InlineAtCall(jsgraph_, call); 355 inlinee.InlineAtCall(jsgraph_, call);
356 } 356 }
357 } 357 }
358 } 358 }
359 } // namespace v8::internal::compiler 359 } // namespace v8::internal::compiler
OLDNEW
« no previous file with comments | « src/compiler/access-builder.cc ('k') | test/cctest/cctest.status » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698