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

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

Issue 1925063002: [debugger,interpreter] add source position to stack checks. (Closed) Base URL: https://chromium.googlesource.com/v8/v8.git@master
Patch Set: fix test Created 4 years, 7 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 | « src/interpreter/bytecode-array-builder.cc ('k') | test/mjsunit/debug-stack-check-position.js » ('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/compiler.h" 8 #include "src/compiler.h"
9 #include "src/interpreter/bytecode-register-allocator.h" 9 #include "src/interpreter/bytecode-register-allocator.h"
10 #include "src/interpreter/control-flow-builders.h" 10 #include "src/interpreter/control-flow-builders.h"
(...skipping 612 matching lines...) Expand 10 before | Expand all | Expand 10 after
623 623
624 // TODO(rmcilroy): Emit tracing call if requested to do so. 624 // TODO(rmcilroy): Emit tracing call if requested to do so.
625 if (FLAG_trace) { 625 if (FLAG_trace) {
626 UNIMPLEMENTED(); 626 UNIMPLEMENTED();
627 } 627 }
628 628
629 // Visit declarations within the function scope. 629 // Visit declarations within the function scope.
630 VisitDeclarations(scope()->declarations()); 630 VisitDeclarations(scope()->declarations());
631 631
632 // Perform a stack-check before the body. 632 // Perform a stack-check before the body.
633 builder()->StackCheck(); 633 builder()->StackCheck(info()->literal()->start_position());
634 634
635 // Visit statements in the function body. 635 // Visit statements in the function body.
636 VisitStatements(info()->literal()->body()); 636 VisitStatements(info()->literal()->body());
637 } 637 }
638 638
639 void BytecodeGenerator::BuildIndexedJump(Register index, size_t start_index, 639 void BytecodeGenerator::BuildIndexedJump(Register index, size_t start_index,
640 size_t size, 640 size_t size,
641 ZoneVector<BytecodeLabel>& targets) { 641 ZoneVector<BytecodeLabel>& targets) {
642 // TODO(neis): Optimize this by using a proper jump table. 642 // TODO(neis): Optimize this by using a proper jump table.
643 for (size_t i = start_index; i < start_index + size; i++) { 643 for (size_t i = start_index; i < start_index + size; i++) {
(...skipping 377 matching lines...) Expand 10 before | Expand all | Expand 10 after
1021 1021
1022 1022
1023 void BytecodeGenerator::VisitCaseClause(CaseClause* clause) { 1023 void BytecodeGenerator::VisitCaseClause(CaseClause* clause) {
1024 // Handled entirely in VisitSwitchStatement. 1024 // Handled entirely in VisitSwitchStatement.
1025 UNREACHABLE(); 1025 UNREACHABLE();
1026 } 1026 }
1027 1027
1028 void BytecodeGenerator::VisitIterationBody(IterationStatement* stmt, 1028 void BytecodeGenerator::VisitIterationBody(IterationStatement* stmt,
1029 LoopBuilder* loop_builder) { 1029 LoopBuilder* loop_builder) {
1030 ControlScopeForIteration execution_control(this, stmt, loop_builder); 1030 ControlScopeForIteration execution_control(this, stmt, loop_builder);
1031 builder()->StackCheck(); 1031 builder()->StackCheck(stmt->position());
1032 Visit(stmt->body()); 1032 Visit(stmt->body());
1033 } 1033 }
1034 1034
1035 void BytecodeGenerator::VisitDoWhileStatement(DoWhileStatement* stmt) { 1035 void BytecodeGenerator::VisitDoWhileStatement(DoWhileStatement* stmt) {
1036 LoopBuilder loop_builder(builder()); 1036 LoopBuilder loop_builder(builder());
1037 VisitIterationHeader(stmt, &loop_builder); 1037 VisitIterationHeader(stmt, &loop_builder);
1038 if (stmt->cond()->ToBooleanIsFalse()) { 1038 if (stmt->cond()->ToBooleanIsFalse()) {
1039 VisitIterationBody(stmt, &loop_builder); 1039 VisitIterationBody(stmt, &loop_builder);
1040 loop_builder.Condition(); 1040 loop_builder.Condition();
1041 } else if (stmt->cond()->ToBooleanIsTrue()) { 1041 } else if (stmt->cond()->ToBooleanIsTrue()) {
(...skipping 2221 matching lines...) Expand 10 before | Expand all | Expand 10 after
3263 } 3263 }
3264 3264
3265 3265
3266 int BytecodeGenerator::feedback_index(FeedbackVectorSlot slot) const { 3266 int BytecodeGenerator::feedback_index(FeedbackVectorSlot slot) const {
3267 return info()->shared_info()->feedback_vector()->GetIndex(slot); 3267 return info()->shared_info()->feedback_vector()->GetIndex(slot);
3268 } 3268 }
3269 3269
3270 } // namespace interpreter 3270 } // namespace interpreter
3271 } // namespace internal 3271 } // namespace internal
3272 } // namespace v8 3272 } // namespace v8
OLDNEW
« no previous file with comments | « src/interpreter/bytecode-array-builder.cc ('k') | test/mjsunit/debug-stack-check-position.js » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698