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

Side by Side Diff: src/compiler/ast-graph-builder.h

Issue 936343002: Simplify computation of environment stack delta. (Closed) Base URL: https://chromium.googlesource.com/v8/v8.git@local_trycatch-3
Patch Set: Rebased and slightly better test. Created 5 years, 10 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
« no previous file with comments | « no previous file | src/compiler/ast-graph-builder.cc » ('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 #ifndef V8_COMPILER_AST_GRAPH_BUILDER_H_ 5 #ifndef V8_COMPILER_AST_GRAPH_BUILDER_H_
6 #define V8_COMPILER_AST_GRAPH_BUILDER_H_ 6 #define V8_COMPILER_AST_GRAPH_BUILDER_H_
7 7
8 #include "src/ast.h" 8 #include "src/ast.h"
9 #include "src/compiler/js-graph.h" 9 #include "src/compiler/js-graph.h"
10 10
(...skipping 272 matching lines...) Expand 10 before | Expand all | Expand 10 after
283 // Visit expressions. 283 // Visit expressions.
284 void Visit(Expression* expr); 284 void Visit(Expression* expr);
285 void VisitForTest(Expression* expr); 285 void VisitForTest(Expression* expr);
286 void VisitForEffect(Expression* expr); 286 void VisitForEffect(Expression* expr);
287 void VisitForValue(Expression* expr); 287 void VisitForValue(Expression* expr);
288 void VisitForValueOrNull(Expression* expr); 288 void VisitForValueOrNull(Expression* expr);
289 void VisitForValueOrTheHole(Expression* expr); 289 void VisitForValueOrTheHole(Expression* expr);
290 void VisitForValues(ZoneList<Expression*>* exprs); 290 void VisitForValues(ZoneList<Expression*>* exprs);
291 291
292 // Common for all IterationStatement bodies. 292 // Common for all IterationStatement bodies.
293 void VisitIterationBody(IterationStatement* stmt, LoopBuilder* loop, int); 293 void VisitIterationBody(IterationStatement* stmt, LoopBuilder* loop);
294 294
295 // Dispatched from VisitCallRuntime. 295 // Dispatched from VisitCallRuntime.
296 void VisitCallJSRuntime(CallRuntime* expr); 296 void VisitCallJSRuntime(CallRuntime* expr);
297 297
298 // Dispatched from VisitUnaryOperation. 298 // Dispatched from VisitUnaryOperation.
299 void VisitDelete(UnaryOperation* expr); 299 void VisitDelete(UnaryOperation* expr);
300 void VisitVoid(UnaryOperation* expr); 300 void VisitVoid(UnaryOperation* expr);
301 void VisitTypeof(UnaryOperation* expr); 301 void VisitTypeof(UnaryOperation* expr);
302 void VisitNot(UnaryOperation* expr); 302 void VisitNot(UnaryOperation* expr);
303 303
(...skipping 89 matching lines...) Expand 10 before | Expand all | Expand 10 after
393 } 393 }
394 Node* Peek(int depth) { 394 Node* Peek(int depth) {
395 DCHECK(depth >= 0 && depth < stack_height()); 395 DCHECK(depth >= 0 && depth < stack_height());
396 int index = static_cast<int>(values()->size()) - depth - 1; 396 int index = static_cast<int>(values()->size()) - depth - 1;
397 return values()->at(index); 397 return values()->at(index);
398 } 398 }
399 void Drop(int depth) { 399 void Drop(int depth) {
400 DCHECK(depth >= 0 && depth <= stack_height()); 400 DCHECK(depth >= 0 && depth <= stack_height());
401 values()->erase(values()->end() - depth, values()->end()); 401 values()->erase(values()->end() - depth, values()->end());
402 } 402 }
403 void Trim(int trim_to_height) {
404 int depth = stack_height() - trim_to_height;
405 DCHECK(depth >= 0 && depth <= stack_height());
406 values()->erase(values()->end() - depth, values()->end());
407 }
403 408
404 // Preserve a checkpoint of the environment for the IR graph. Any 409 // Preserve a checkpoint of the environment for the IR graph. Any
405 // further mutation of the environment will not affect checkpoints. 410 // further mutation of the environment will not affect checkpoints.
406 Node* Checkpoint(BailoutId ast_id, OutputFrameStateCombine combine); 411 Node* Checkpoint(BailoutId ast_id, OutputFrameStateCombine combine);
407 412
408 // Control dependency tracked by this environment. 413 // Control dependency tracked by this environment.
409 Node* GetControlDependency() { return control_dependency_; } 414 Node* GetControlDependency() { return control_dependency_; }
410 void UpdateControlDependency(Node* dependency) { 415 void UpdateControlDependency(Node* dependency) {
411 control_dependency_ = dependency; 416 control_dependency_ = dependency;
412 } 417 }
(...skipping 57 matching lines...) Expand 10 before | Expand all | Expand 10 after
470 475
471 // Prepare environment to be used as loop header. 476 // Prepare environment to be used as loop header.
472 void PrepareForLoop(BitVector* assigned, bool is_osr = false); 477 void PrepareForLoop(BitVector* assigned, bool is_osr = false);
473 }; 478 };
474 479
475 } // namespace compiler 480 } // namespace compiler
476 } // namespace internal 481 } // namespace internal
477 } // namespace v8 482 } // namespace v8
478 483
479 #endif // V8_COMPILER_AST_GRAPH_BUILDER_H_ 484 #endif // V8_COMPILER_AST_GRAPH_BUILDER_H_
OLDNEW
« no previous file with comments | « no previous file | src/compiler/ast-graph-builder.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698