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

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

Issue 539933002: [turbofan] Make sure Operator is really immutable. (Closed) Base URL: https://v8.googlecode.com/svn/branches/bleeding_edge
Patch Set: 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/graph-replay.cc ('k') | src/compiler/node.h » ('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/ast-graph-builder.h" 5 #include "src/compiler/ast-graph-builder.h"
6 #include "src/compiler/common-operator.h" 6 #include "src/compiler/common-operator.h"
7 #include "src/compiler/generic-node-inl.h" 7 #include "src/compiler/generic-node-inl.h"
8 #include "src/compiler/graph-inl.h" 8 #include "src/compiler/graph-inl.h"
9 #include "src/compiler/graph-visualizer.h" 9 #include "src/compiler/graph-visualizer.h"
10 #include "src/compiler/js-inlining.h" 10 #include "src/compiler/js-inlining.h"
(...skipping 166 matching lines...) Expand 10 before | Expand all | Expand 10 after
177 int inlinee_context_index = inlinee_inputs - 1; 177 int inlinee_context_index = inlinee_inputs - 1;
178 // {inliner_inputs} counts JSFunction, Receiver, arguments, but not 178 // {inliner_inputs} counts JSFunction, Receiver, arguments, but not
179 // context, effect, control. 179 // context, effect, control.
180 int inliner_inputs = OperatorProperties::GetValueInputCount(call->op()); 180 int inliner_inputs = OperatorProperties::GetValueInputCount(call->op());
181 // Iterate over all uses of the start node. 181 // Iterate over all uses of the start node.
182 UseIter iter = graph()->start()->uses().begin(); 182 UseIter iter = graph()->start()->uses().begin();
183 while (iter != graph()->start()->uses().end()) { 183 while (iter != graph()->start()->uses().end()) {
184 Node* use = *iter; 184 Node* use = *iter;
185 switch (use->opcode()) { 185 switch (use->opcode()) {
186 case IrOpcode::kParameter: { 186 case IrOpcode::kParameter: {
187 int index = 1 + static_cast<Operator1<int>*>(use->op())->parameter(); 187 int index = 1 + OpParameter<int>(use->op());
188 if (index < inliner_inputs && index < inlinee_context_index) { 188 if (index < inliner_inputs && index < inlinee_context_index) {
189 // There is an input from the call, and the index is a value 189 // There is an input from the call, and the index is a value
190 // projection but not the context, so rewire the input. 190 // projection but not the context, so rewire the input.
191 NodeProperties::ReplaceWithValue(*iter, call->InputAt(index)); 191 NodeProperties::ReplaceWithValue(*iter, call->InputAt(index));
192 } else if (index == inlinee_context_index) { 192 } else if (index == inlinee_context_index) {
193 // This is the context projection, rewire it to the context from the 193 // This is the context projection, rewire it to the context from the
194 // JSFunction object. 194 // JSFunction object.
195 NodeProperties::ReplaceWithValue(*iter, context); 195 NodeProperties::ReplaceWithValue(*iter, context);
196 } else if (index < inlinee_context_index) { 196 } else if (index < inlinee_context_index) {
197 // Call has fewer arguments than required, fill with undefined. 197 // Call has fewer arguments than required, fill with undefined.
(...skipping 89 matching lines...) Expand 10 before | Expand all | Expand 10 after
287 287
288 Inlinee inlinee(&jsgraph); 288 Inlinee inlinee(&jsgraph);
289 inlinee.UnifyReturn(); 289 inlinee.UnifyReturn();
290 inlinee.InlineAtCall(jsgraph_, node); 290 inlinee.InlineAtCall(jsgraph_, node);
291 291
292 jsgraph_->graph()->SetNextNodeId(inlinee.graph()->NextNodeID()); 292 jsgraph_->graph()->SetNextNodeId(inlinee.graph()->NextNodeID());
293 } 293 }
294 } 294 }
295 } 295 }
296 } // namespace v8::internal::compiler 296 } // namespace v8::internal::compiler
OLDNEW
« no previous file with comments | « src/compiler/graph-replay.cc ('k') | src/compiler/node.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698