summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--deps/v8/AUTHORS2
-rw-r--r--deps/v8/src/ast/source-range-ast-visitor.cc13
-rw-r--r--deps/v8/test/mjsunit/code-coverage-block.js51
3 files changed, 57 insertions, 9 deletions
diff --git a/deps/v8/AUTHORS b/deps/v8/AUTHORS
index 241c69f046..50d5d1acef 100644
--- a/deps/v8/AUTHORS
+++ b/deps/v8/AUTHORS
@@ -50,7 +50,7 @@ Andrew Paprocki <andrew@ishiboo.com>
Andrei Kashcha <anvaka@gmail.com>
Anna Henningsen <anna@addaleax.net>
Bangfu Tao <bangfu.tao@samsung.com>
-Ben Coe <ben@npmjs.com>
+Ben Coe <bencoe@gmail.com>
Ben Newman <ben@meteor.com>
Ben Noordhuis <info@bnoordhuis.nl>
Benjamin Tan <demoneaux@gmail.com>
diff --git a/deps/v8/src/ast/source-range-ast-visitor.cc b/deps/v8/src/ast/source-range-ast-visitor.cc
index b6acbddf0a..f3a3dbcd9b 100644
--- a/deps/v8/src/ast/source-range-ast-visitor.cc
+++ b/deps/v8/src/ast/source-range-ast-visitor.cc
@@ -56,7 +56,18 @@ void SourceRangeAstVisitor::MaybeRemoveLastContinuationRange(
if (statements == nullptr || statements->is_empty()) return;
Statement* last_statement = statements->last();
- AstNodeSourceRanges* last_range = source_range_map_->Find(last_statement);
+ AstNodeSourceRanges* last_range = nullptr;
+
+ if (last_statement->IsExpressionStatement() &&
+ last_statement->AsExpressionStatement()->expression()->IsThrow()) {
+ // For ThrowStatement, source range is tied to Throw expression not
+ // ExpressionStatement.
+ last_range = source_range_map_->Find(
+ last_statement->AsExpressionStatement()->expression());
+ } else {
+ last_range = source_range_map_->Find(last_statement);
+ }
+
if (last_range == nullptr) return;
if (last_range->HasRange(SourceRangeKind::kContinuation)) {
diff --git a/deps/v8/test/mjsunit/code-coverage-block.js b/deps/v8/test/mjsunit/code-coverage-block.js
index 1291a50d97..6df2ca5a56 100644
--- a/deps/v8/test/mjsunit/code-coverage-block.js
+++ b/deps/v8/test/mjsunit/code-coverage-block.js
@@ -353,11 +353,11 @@ TestCoverage(
[{"start":0,"end":849,"count":1},
{"start":1,"end":801,"count":1},
{"start":67,"end":87,"count":0},
- {"start":219,"end":222,"count":0},
+ {"start":221,"end":222,"count":0},
{"start":254,"end":274,"count":0},
- {"start":369,"end":372,"count":0},
+ {"start":371,"end":372,"count":0},
{"start":403,"end":404,"count":0},
- {"start":513,"end":554,"count":0}]
+ {"start":553,"end":554,"count":0}]
);
TestCoverage("try/catch/finally statements with early return",
@@ -374,10 +374,10 @@ TestCoverage("try/catch/finally statements with early return",
`,
[{"start":0,"end":449,"count":1},
{"start":1,"end":151,"count":1},
- {"start":67,"end":70,"count":0},
+ {"start":69,"end":70,"count":0},
{"start":91,"end":150,"count":0},
{"start":201,"end":401,"count":1},
- {"start":267,"end":270,"count":0},
+ {"start":269,"end":270,"count":0},
{"start":321,"end":400,"count":0}]
);
@@ -409,7 +409,7 @@ TestCoverage(
`,
[{"start":0,"end":1099,"count":1},
{"start":1,"end":151,"count":1},
- {"start":67,"end":70,"count":0},
+ {"start":69,"end":70,"count":0},
{"start":91,"end":150,"count":0},
{"start":201,"end":351,"count":1},
{"start":286,"end":350,"count":0},
@@ -417,7 +417,7 @@ TestCoverage(
{"start":603,"end":700,"count":0},
{"start":561,"end":568,"count":0}, // TODO(jgruber): Sorting.
{"start":751,"end":1051,"count":1},
- {"start":817,"end":820,"count":0},
+ {"start":819,"end":820,"count":0},
{"start":861,"end":1050,"count":0}]
);
@@ -1004,4 +1004,41 @@ c(true); d(true); // 1650
{"start":1403,"end":1503,"count":0}]
);
+TestCoverage(
+"https://crbug.com/927464",
+`
+!function f() { // 0000
+ function unused() { nop(); } // 0050
+ nop(); // 0100
+}(); // 0150
+`,
+[{"start":0,"end":199,"count":1},
+ {"start":1,"end":151,"count":1},
+ {"start":52,"end":80,"count":0}]
+);
+
+TestCoverage(
+"https://crbug.com/v8/8691",
+`
+function f(shouldThrow) { // 0000
+ if (shouldThrow) { // 0050
+ throw Error('threw') // 0100
+ } // 0150
+} // 0200
+try { // 0250
+ f(true) // 0300
+} catch (err) { // 0350
+ // 0400
+} // 0450
+try { // 0500
+ f(false) // 0550
+} catch (err) {} // 0600
+`,
+[{"start":0,"end":649,"count":1},
+ {"start":351,"end":352,"count":0},
+ {"start":602,"end":616,"count":0},
+ {"start":0,"end":201,"count":2},
+ {"start":69,"end":153,"count":1}]
+);
+
%DebugToggleBlockCoverage(false);