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

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

Issue 1744123003: [debugger] fix break locations for assignments and return. (Closed) Base URL: https://chromium.googlesource.com/v8/v8.git@master
Patch Set: fix .status Created 4 years, 9 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
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 555 matching lines...) Expand 10 before | Expand all | Expand 10 after
566 566
567 Handle<BytecodeArray> BytecodeGenerator::MakeBytecode(CompilationInfo* info) { 567 Handle<BytecodeArray> BytecodeGenerator::MakeBytecode(CompilationInfo* info) {
568 set_info(info); 568 set_info(info);
569 set_scope(info->scope()); 569 set_scope(info->scope());
570 570
571 // Initialize bytecode array builder. 571 // Initialize bytecode array builder.
572 set_builder(new (zone()) BytecodeArrayBuilder( 572 set_builder(new (zone()) BytecodeArrayBuilder(
573 isolate(), zone(), info->num_parameters_including_this(), 573 isolate(), zone(), info->num_parameters_including_this(),
574 scope()->MaxNestedContextChainLength(), scope()->num_stack_slots())); 574 scope()->MaxNestedContextChainLength(), scope()->num_stack_slots()));
575 575
576 builder()->InitializeReturnPosition(info->literal());
577
576 // Initialize the incoming context. 578 // Initialize the incoming context.
577 ContextScope incoming_context(this, scope(), false); 579 ContextScope incoming_context(this, scope(), false);
578 580
579 // Initialize control scope. 581 // Initialize control scope.
580 ControlScopeForTopLevel control(this); 582 ControlScopeForTopLevel control(this);
581 583
582 // Build function context only if there are context allocated variables. 584 // Build function context only if there are context allocated variables.
583 if (scope()->NeedsContext()) { 585 if (scope()->NeedsContext()) {
584 // Push a new inner context scope for the function. 586 // Push a new inner context scope for the function.
585 VisitNewLocalFunctionContext(); 587 VisitNewLocalFunctionContext();
(...skipping 284 matching lines...) Expand 10 before | Expand all | Expand 10 after
870 execution_control()->Continue(stmt->target()); 872 execution_control()->Continue(stmt->target());
871 } 873 }
872 874
873 875
874 void BytecodeGenerator::VisitBreakStatement(BreakStatement* stmt) { 876 void BytecodeGenerator::VisitBreakStatement(BreakStatement* stmt) {
875 execution_control()->Break(stmt->target()); 877 execution_control()->Break(stmt->target());
876 } 878 }
877 879
878 880
879 void BytecodeGenerator::VisitReturnStatement(ReturnStatement* stmt) { 881 void BytecodeGenerator::VisitReturnStatement(ReturnStatement* stmt) {
882 builder()->SetStatementPosition(stmt);
vogelheim 2016/02/29 17:43:30 Just for my understanding: These switched lines is
Yang 2016/02/29 17:53:12 Yes, correct.
880 VisitForAccumulatorValue(stmt->expression()); 883 VisitForAccumulatorValue(stmt->expression());
881 builder()->SetStatementPosition(stmt);
882 execution_control()->ReturnAccumulator(); 884 execution_control()->ReturnAccumulator();
883 } 885 }
884 886
885 887
886 void BytecodeGenerator::VisitWithStatement(WithStatement* stmt) { 888 void BytecodeGenerator::VisitWithStatement(WithStatement* stmt) {
887 VisitForAccumulatorValue(stmt->expression()); 889 VisitForAccumulatorValue(stmt->expression());
888 builder()->CastAccumulatorToJSObject(); 890 builder()->CastAccumulatorToJSObject();
889 VisitNewLocalWithContext(); 891 VisitNewLocalWithContext();
890 VisitInScope(stmt->statement(), stmt->scope()); 892 VisitInScope(stmt->statement(), stmt->scope());
891 } 893 }
(...skipping 2245 matching lines...) Expand 10 before | Expand all | Expand 10 after
3137 } 3139 }
3138 3140
3139 3141
3140 int BytecodeGenerator::feedback_index(FeedbackVectorSlot slot) const { 3142 int BytecodeGenerator::feedback_index(FeedbackVectorSlot slot) const {
3141 return info()->feedback_vector()->GetIndex(slot); 3143 return info()->feedback_vector()->GetIndex(slot);
3142 } 3144 }
3143 3145
3144 } // namespace interpreter 3146 } // namespace interpreter
3145 } // namespace internal 3147 } // namespace internal
3146 } // namespace v8 3148 } // namespace v8
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698