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

Side by Side Diff: src/interpreter/bytecode-generator.cc

Issue 2200733002: [interpreter] Elide OSR polling from fake loops. (Closed) Base URL: https://chromium.googlesource.com/v8/v8.git@master
Patch Set: Recement. Created 4 years, 4 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/interpreter/control-flow-builders.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 2015 the V8 project authors. All rights reserved. 1 // Copyright 2015 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/interpreter/bytecode-generator.h" 5 #include "src/interpreter/bytecode-generator.h"
6 6
7 #include "src/ast/scopes.h" 7 #include "src/ast/scopes.h"
8 #include "src/code-stubs.h" 8 #include "src/code-stubs.h"
9 #include "src/compiler.h" 9 #include "src/compiler.h"
10 #include "src/interpreter/bytecode-flags.h" 10 #include "src/interpreter/bytecode-flags.h"
(...skipping 1034 matching lines...) Expand 10 before | Expand all | Expand 10 after
1045 void BytecodeGenerator::VisitIterationBody(IterationStatement* stmt, 1045 void BytecodeGenerator::VisitIterationBody(IterationStatement* stmt,
1046 LoopBuilder* loop_builder) { 1046 LoopBuilder* loop_builder) {
1047 ControlScopeForIteration execution_control(this, stmt, loop_builder); 1047 ControlScopeForIteration execution_control(this, stmt, loop_builder);
1048 builder()->StackCheck(stmt->position()); 1048 builder()->StackCheck(stmt->position());
1049 Visit(stmt->body()); 1049 Visit(stmt->body());
1050 loop_builder->SetContinueTarget(); 1050 loop_builder->SetContinueTarget();
1051 } 1051 }
1052 1052
1053 void BytecodeGenerator::VisitDoWhileStatement(DoWhileStatement* stmt) { 1053 void BytecodeGenerator::VisitDoWhileStatement(DoWhileStatement* stmt) {
1054 LoopBuilder loop_builder(builder()); 1054 LoopBuilder loop_builder(builder());
1055 VisitIterationHeader(stmt, &loop_builder);
1056 if (stmt->cond()->ToBooleanIsFalse()) { 1055 if (stmt->cond()->ToBooleanIsFalse()) {
1057 VisitIterationBody(stmt, &loop_builder); 1056 VisitIterationBody(stmt, &loop_builder);
1058 } else if (stmt->cond()->ToBooleanIsTrue()) { 1057 } else if (stmt->cond()->ToBooleanIsTrue()) {
1058 VisitIterationHeader(stmt, &loop_builder);
1059 VisitIterationBody(stmt, &loop_builder); 1059 VisitIterationBody(stmt, &loop_builder);
1060 loop_builder.JumpToHeader(); 1060 loop_builder.JumpToHeader();
1061 } else { 1061 } else {
1062 VisitIterationHeader(stmt, &loop_builder);
1062 VisitIterationBody(stmt, &loop_builder); 1063 VisitIterationBody(stmt, &loop_builder);
1063 builder()->SetExpressionAsStatementPosition(stmt->cond()); 1064 builder()->SetExpressionAsStatementPosition(stmt->cond());
1064 VisitForAccumulatorValue(stmt->cond()); 1065 VisitForAccumulatorValue(stmt->cond());
1065 loop_builder.JumpToHeaderIfTrue(); 1066 loop_builder.JumpToHeaderIfTrue();
1066 } 1067 }
1067 loop_builder.EndLoop(); 1068 loop_builder.EndLoop();
1068 } 1069 }
1069 1070
1070 void BytecodeGenerator::VisitWhileStatement(WhileStatement* stmt) { 1071 void BytecodeGenerator::VisitWhileStatement(WhileStatement* stmt) {
1071 if (stmt->cond()->ToBooleanIsFalse()) { 1072 if (stmt->cond()->ToBooleanIsFalse()) {
(...skipping 2164 matching lines...) Expand 10 before | Expand all | Expand 10 after
3236 return execution_context()->scope()->language_mode(); 3237 return execution_context()->scope()->language_mode();
3237 } 3238 }
3238 3239
3239 int BytecodeGenerator::feedback_index(FeedbackVectorSlot slot) const { 3240 int BytecodeGenerator::feedback_index(FeedbackVectorSlot slot) const {
3240 return TypeFeedbackVector::GetIndex(slot); 3241 return TypeFeedbackVector::GetIndex(slot);
3241 } 3242 }
3242 3243
3243 } // namespace interpreter 3244 } // namespace interpreter
3244 } // namespace internal 3245 } // namespace internal
3245 } // namespace v8 3246 } // namespace v8
OLDNEW
« no previous file with comments | « no previous file | src/interpreter/control-flow-builders.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698