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

Side by Side Diff: src/full-codegen.cc

Issue 1222093007: Debugger: use debug break slot to break on call. (Closed) Base URL: https://chromium.googlesource.com/v8/v8.git@master
Patch Set: Created 5 years, 5 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 2012 the V8 project authors. All rights reserved. 1 // Copyright 2012 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/v8.h" 5 #include "src/v8.h"
6 6
7 #include "src/ast.h" 7 #include "src/ast.h"
8 #include "src/ast-numbering.h" 8 #include "src/ast-numbering.h"
9 #include "src/code-factory.h" 9 #include "src/code-factory.h"
10 #include "src/codegen.h" 10 #include "src/codegen.h"
(...skipping 420 matching lines...) Expand 10 before | Expand all | Expand 10 after
431 RecordStatementPosition(masm_, fun->end_position() - 1); 431 RecordStatementPosition(masm_, fun->end_position() - 1);
432 } 432 }
433 433
434 434
435 void FullCodeGenerator::SetStatementPosition( 435 void FullCodeGenerator::SetStatementPosition(
436 Statement* stmt, FullCodeGenerator::InsertBreak insert_break) { 436 Statement* stmt, FullCodeGenerator::InsertBreak insert_break) {
437 if (stmt->position() == RelocInfo::kNoPosition) return; 437 if (stmt->position() == RelocInfo::kNoPosition) return;
438 bool recorded = RecordStatementPosition(masm_, stmt->position()); 438 bool recorded = RecordStatementPosition(masm_, stmt->position());
439 if (recorded && insert_break == INSERT_BREAK && info_->is_debug() && 439 if (recorded && insert_break == INSERT_BREAK && info_->is_debug() &&
440 !stmt->IsDebuggerStatement()) { 440 !stmt->IsDebuggerStatement()) {
441 masm_->RecordDebugBreakSlot();
441 DebugCodegen::GenerateSlot(masm_); 442 DebugCodegen::GenerateSlot(masm_);
442 } 443 }
443 } 444 }
444 445
445 446
446 void FullCodeGenerator::SetExpressionPosition( 447 void FullCodeGenerator::SetExpressionPosition(
447 Expression* expr, FullCodeGenerator::InsertBreak insert_break) { 448 Expression* expr, FullCodeGenerator::InsertBreak insert_break) {
448 if (expr->position() == RelocInfo::kNoPosition) return; 449 if (expr->position() == RelocInfo::kNoPosition) return;
449 bool recorded = RecordPosition(masm_, expr->position()); 450 bool recorded = RecordPosition(masm_, expr->position());
450 if (recorded && insert_break == INSERT_BREAK && info_->is_debug()) { 451 if (recorded && insert_break == INSERT_BREAK && info_->is_debug()) {
452 masm_->RecordDebugBreakSlot();
451 DebugCodegen::GenerateSlot(masm_); 453 DebugCodegen::GenerateSlot(masm_);
452 } 454 }
453 } 455 }
454 456
455 457
456 void FullCodeGenerator::SetExpressionAsStatementPosition(Expression* expr) { 458 void FullCodeGenerator::SetExpressionAsStatementPosition(Expression* expr) {
457 if (expr->position() == RelocInfo::kNoPosition) return; 459 if (expr->position() == RelocInfo::kNoPosition) return;
458 bool recorded = RecordStatementPosition(masm_, expr->position()); 460 bool recorded = RecordStatementPosition(masm_, expr->position());
459 if (recorded && info_->is_debug()) DebugCodegen::GenerateSlot(masm_); 461 if (recorded && info_->is_debug()) {
462 masm_->RecordDebugBreakSlot();
463 DebugCodegen::GenerateSlot(masm_);
464 }
460 } 465 }
461 466
462 467
468 void FullCodeGenerator::SetCallPosition(Expression* expr, int argc) {
469 if (expr->position() == RelocInfo::kNoPosition) return;
470 RecordPosition(masm_, expr->position());
471 if (info_->is_debug()) {
472 // Always emit a debug break slot for a call.
473 masm_->RecordDebugBreakSlotForCall(argc);
474 DebugCodegen::GenerateSlot(masm_);
475 }
476 }
477
478
463 void FullCodeGenerator::VisitSuperPropertyReference( 479 void FullCodeGenerator::VisitSuperPropertyReference(
464 SuperPropertyReference* super) { 480 SuperPropertyReference* super) {
465 __ CallRuntime(Runtime::kThrowUnsupportedSuperError, 0); 481 __ CallRuntime(Runtime::kThrowUnsupportedSuperError, 0);
466 } 482 }
467 483
468 484
469 void FullCodeGenerator::VisitSuperCallReference(SuperCallReference* super) { 485 void FullCodeGenerator::VisitSuperCallReference(SuperCallReference* super) {
470 __ CallRuntime(Runtime::kThrowUnsupportedSuperError, 0); 486 __ CallRuntime(Runtime::kThrowUnsupportedSuperError, 0);
471 } 487 }
472 488
(...skipping 961 matching lines...) Expand 10 before | Expand all | Expand 10 after
1434 codegen_->PrepareForBailoutForId(exit_id_, NO_REGISTERS); 1450 codegen_->PrepareForBailoutForId(exit_id_, NO_REGISTERS);
1435 codegen_->scope_ = saved_scope_; 1451 codegen_->scope_ = saved_scope_;
1436 } 1452 }
1437 1453
1438 1454
1439 #undef __ 1455 #undef __
1440 1456
1441 1457
1442 } // namespace internal 1458 } // namespace internal
1443 } // namespace v8 1459 } // namespace v8
OLDNEW
« src/assembler.cc ('K') | « src/full-codegen.h ('k') | src/ia32/assembler-ia32.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698