diff --git a/common.gypi b/common.gypi index 4b108b44679974..dbce905d015d8d 100644 --- a/common.gypi +++ b/common.gypi @@ -37,7 +37,7 @@ # Reset this number to 0 on major V8 upgrades. # Increment by one for each non-official patch applied to deps/v8. - 'v8_embedder_string': '-node.3', + 'v8_embedder_string': '-node.4', ##### V8 defaults for Node.js ##### diff --git a/deps/v8/AUTHORS b/deps/v8/AUTHORS index baa3d09d36baf7..bea5f9ae85c601 100644 --- a/deps/v8/AUTHORS +++ b/deps/v8/AUTHORS @@ -53,7 +53,7 @@ Andrei Kashcha Anna Henningsen Bangfu Tao Daniel Shelton -Ben Coe +Ben Coe Ben Newman Ben Noordhuis Benjamin Tan diff --git a/deps/v8/src/ast/source-range-ast-visitor.cc b/deps/v8/src/ast/source-range-ast-visitor.cc index 442b23718c04bd..d171e30587584f 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->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 0547d54a426b48..866c7bac9477bb 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);