| Index: src/full-codegen.cc
|
| diff --git a/src/full-codegen.cc b/src/full-codegen.cc
|
| index 03c55d118ca29114e059adfc06005b58ffa8e82a..0df7e5290f95753642763f32c08616054e522846 100644
|
| --- a/src/full-codegen.cc
|
| +++ b/src/full-codegen.cc
|
| @@ -438,6 +438,7 @@ void FullCodeGenerator::SetStatementPosition(
|
| bool recorded = RecordStatementPosition(masm_, stmt->position());
|
| if (recorded && insert_break == INSERT_BREAK && info_->is_debug() &&
|
| !stmt->IsDebuggerStatement()) {
|
| + masm_->RecordDebugBreakSlot();
|
| DebugCodegen::GenerateSlot(masm_);
|
| }
|
| }
|
| @@ -448,6 +449,7 @@ void FullCodeGenerator::SetExpressionPosition(
|
| if (expr->position() == RelocInfo::kNoPosition) return;
|
| bool recorded = RecordPosition(masm_, expr->position());
|
| if (recorded && insert_break == INSERT_BREAK && info_->is_debug()) {
|
| + masm_->RecordDebugBreakSlot();
|
| DebugCodegen::GenerateSlot(masm_);
|
| }
|
| }
|
| @@ -456,7 +458,21 @@ void FullCodeGenerator::SetExpressionPosition(
|
| void FullCodeGenerator::SetExpressionAsStatementPosition(Expression* expr) {
|
| if (expr->position() == RelocInfo::kNoPosition) return;
|
| bool recorded = RecordStatementPosition(masm_, expr->position());
|
| - if (recorded && info_->is_debug()) DebugCodegen::GenerateSlot(masm_);
|
| + if (recorded && info_->is_debug()) {
|
| + masm_->RecordDebugBreakSlot();
|
| + DebugCodegen::GenerateSlot(masm_);
|
| + }
|
| +}
|
| +
|
| +
|
| +void FullCodeGenerator::SetCallPosition(Expression* expr, int argc) {
|
| + if (expr->position() == RelocInfo::kNoPosition) return;
|
| + RecordPosition(masm_, expr->position());
|
| + if (info_->is_debug()) {
|
| + // Always emit a debug break slot for a call.
|
| + masm_->RecordDebugBreakSlotForCall(argc);
|
| + DebugCodegen::GenerateSlot(masm_);
|
| + }
|
| }
|
|
|
|
|
|
|