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

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: rebased and addressed comments 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
« no previous file with comments | « src/full-codegen.h ('k') | src/ia32/assembler-ia32.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 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 415 matching lines...) Expand 10 before | Expand all | Expand 10 after
426 RecordStatementPosition(masm_, fun->end_position() - 1); 426 RecordStatementPosition(masm_, fun->end_position() - 1);
427 } 427 }
428 428
429 429
430 void FullCodeGenerator::SetStatementPosition( 430 void FullCodeGenerator::SetStatementPosition(
431 Statement* stmt, FullCodeGenerator::InsertBreak insert_break) { 431 Statement* stmt, FullCodeGenerator::InsertBreak insert_break) {
432 if (stmt->position() == RelocInfo::kNoPosition) return; 432 if (stmt->position() == RelocInfo::kNoPosition) return;
433 bool recorded = RecordStatementPosition(masm_, stmt->position()); 433 bool recorded = RecordStatementPosition(masm_, stmt->position());
434 if (recorded && insert_break == INSERT_BREAK && info_->is_debug() && 434 if (recorded && insert_break == INSERT_BREAK && info_->is_debug() &&
435 !stmt->IsDebuggerStatement()) { 435 !stmt->IsDebuggerStatement()) {
436 masm_->RecordDebugBreakSlot();
436 DebugCodegen::GenerateSlot(masm_); 437 DebugCodegen::GenerateSlot(masm_);
437 } 438 }
438 } 439 }
439 440
440 441
441 void FullCodeGenerator::SetExpressionPosition( 442 void FullCodeGenerator::SetExpressionPosition(
442 Expression* expr, FullCodeGenerator::InsertBreak insert_break) { 443 Expression* expr, FullCodeGenerator::InsertBreak insert_break) {
443 if (expr->position() == RelocInfo::kNoPosition) return; 444 if (expr->position() == RelocInfo::kNoPosition) return;
444 bool recorded = RecordPosition(masm_, expr->position()); 445 bool recorded = RecordPosition(masm_, expr->position());
445 if (recorded && insert_break == INSERT_BREAK && info_->is_debug()) { 446 if (recorded && insert_break == INSERT_BREAK && info_->is_debug()) {
447 masm_->RecordDebugBreakSlot();
446 DebugCodegen::GenerateSlot(masm_); 448 DebugCodegen::GenerateSlot(masm_);
447 } 449 }
448 } 450 }
449 451
450 452
451 void FullCodeGenerator::SetExpressionAsStatementPosition(Expression* expr) { 453 void FullCodeGenerator::SetExpressionAsStatementPosition(Expression* expr) {
452 if (expr->position() == RelocInfo::kNoPosition) return; 454 if (expr->position() == RelocInfo::kNoPosition) return;
453 bool recorded = RecordStatementPosition(masm_, expr->position()); 455 bool recorded = RecordStatementPosition(masm_, expr->position());
454 if (recorded && info_->is_debug()) DebugCodegen::GenerateSlot(masm_); 456 if (recorded && info_->is_debug()) {
457 masm_->RecordDebugBreakSlot();
458 DebugCodegen::GenerateSlot(masm_);
459 }
455 } 460 }
456 461
457 462
463 void FullCodeGenerator::SetCallPosition(Expression* expr, int argc) {
464 if (expr->position() == RelocInfo::kNoPosition) return;
465 RecordPosition(masm_, expr->position());
466 if (info_->is_debug()) {
467 // Always emit a debug break slot before a call.
468 masm_->RecordDebugBreakSlotForCall(argc);
469 DebugCodegen::GenerateSlot(masm_);
470 }
471 }
472
473
474 void FullCodeGenerator::SetConstructCallPosition(Expression* expr) {
475 if (expr->position() == RelocInfo::kNoPosition) return;
476 RecordPosition(masm_, expr->position());
477 if (info_->is_debug()) {
478 // Always emit a debug break slot before a construct call.
479 masm_->RecordDebugBreakSlotForConstructCall();
480 DebugCodegen::GenerateSlot(masm_);
481 }
482 }
483
484
458 void FullCodeGenerator::VisitSuperPropertyReference( 485 void FullCodeGenerator::VisitSuperPropertyReference(
459 SuperPropertyReference* super) { 486 SuperPropertyReference* super) {
460 __ CallRuntime(Runtime::kThrowUnsupportedSuperError, 0); 487 __ CallRuntime(Runtime::kThrowUnsupportedSuperError, 0);
461 } 488 }
462 489
463 490
464 void FullCodeGenerator::VisitSuperCallReference(SuperCallReference* super) { 491 void FullCodeGenerator::VisitSuperCallReference(SuperCallReference* super) {
465 __ CallRuntime(Runtime::kThrowUnsupportedSuperError, 0); 492 __ CallRuntime(Runtime::kThrowUnsupportedSuperError, 0);
466 } 493 }
467 494
(...skipping 977 matching lines...) Expand 10 before | Expand all | Expand 10 after
1445 codegen_->PrepareForBailoutForId(exit_id_, NO_REGISTERS); 1472 codegen_->PrepareForBailoutForId(exit_id_, NO_REGISTERS);
1446 codegen_->scope_ = saved_scope_; 1473 codegen_->scope_ = saved_scope_;
1447 } 1474 }
1448 1475
1449 1476
1450 #undef __ 1477 #undef __
1451 1478
1452 1479
1453 } // namespace internal 1480 } // namespace internal
1454 } // namespace v8 1481 } // namespace v8
OLDNEW
« no previous file with comments | « 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