| Index: test/inspector/cpu-profiler/coverage.js
|
| diff --git a/test/inspector/cpu-profiler/coverage.js b/test/inspector/cpu-profiler/coverage.js
|
| index 495b53699531f56ee4c489a14e6178094fbc51b9..00d9b3b09f3c0a7d6bd16b3d09ea6c2eaf9121ab 100644
|
| --- a/test/inspector/cpu-profiler/coverage.js
|
| +++ b/test/inspector/cpu-profiler/coverage.js
|
| @@ -2,12 +2,17 @@
|
| // Use of this source code is governed by a BSD-style license that can be
|
| // found in the LICENSE file.
|
|
|
| +// Flags: --allow-natives-syntax
|
| +
|
| var source =
|
| `
|
| function fib(x) {
|
| if (x < 2) return 1;
|
| return fib(x-1) + fib(x-2);
|
| }
|
| +function is_optimized(f) {
|
| + return (%GetOptimizationStatus(f) & 16) ? "optimized" : "unoptimized";
|
| +}
|
| (function iife() {
|
| return 1;
|
| })();
|
| @@ -32,7 +37,8 @@ f(3);
|
| InspectorTest.log("Test collecting code coverage data with Profiler.collectCoverage.");
|
|
|
| function ClearAndGC() {
|
| - return Protocol.Runtime.evaluate({ expression: "fib = null;" }).then(GC);
|
| + return Protocol.Runtime.evaluate({ expression: "fib = g = f = h = is_optimized = null;" })
|
| + .then(GC);
|
| }
|
|
|
| function GC() {
|
| @@ -47,30 +53,30 @@ function LogSorted(message) {
|
| }
|
|
|
| InspectorTest.runTestSuite([
|
| - function testPreciseBaseline(next)
|
| + function testPreciseCountBaseline(next)
|
| {
|
| Protocol.Runtime.enable()
|
| - .then(() => Protocol.Runtime.compileScript({ expression: source, sourceURL: "0", persistScript: true }))
|
| + .then(() => Protocol.Runtime.compileScript({ expression: source, sourceURL: arguments.callee.name, persistScript: true }))
|
| .then((result) => Protocol.Runtime.runScript({ scriptId: result.result.scriptId }))
|
| .then(GC)
|
| .then(Protocol.Profiler.enable)
|
| - .then(Protocol.Profiler.startPreciseCoverage)
|
| + .then(() => Protocol.Profiler.startPreciseCoverage({callCount: true}))
|
| .then(Protocol.Profiler.takePreciseCoverage)
|
| .then(LogSorted)
|
| .then(Protocol.Profiler.takePreciseCoverage)
|
| .then(LogSorted)
|
| .then(Protocol.Profiler.stopPreciseCoverage)
|
| - .then(ClearAndGC)
|
| .then(Protocol.Profiler.disable)
|
| .then(Protocol.Runtime.disable)
|
| + .then(ClearAndGC)
|
| .then(next);
|
| },
|
| - function testPreciseCoverage(next)
|
| + function testPreciseCountCoverage(next)
|
| {
|
| Protocol.Runtime.enable()
|
| .then(Protocol.Profiler.enable)
|
| - .then(Protocol.Profiler.startPreciseCoverage)
|
| - .then(() => Protocol.Runtime.compileScript({ expression: source, sourceURL: "1", persistScript: true }))
|
| + .then(() => Protocol.Profiler.startPreciseCoverage({callCount: true}))
|
| + .then(() => Protocol.Runtime.compileScript({ expression: source, sourceURL: arguments.callee.name, persistScript: true }))
|
| .then((result) => Protocol.Runtime.runScript({ scriptId: result.result.scriptId }))
|
| .then(ClearAndGC)
|
| .then(InspectorTest.logMessage)
|
| @@ -78,31 +84,31 @@ InspectorTest.runTestSuite([
|
| .then(LogSorted)
|
| .then(Protocol.Profiler.takePreciseCoverage)
|
| .then(LogSorted)
|
| - .then(ClearAndGC)
|
| .then(Protocol.Profiler.stopPreciseCoverage)
|
| .then(Protocol.Profiler.disable)
|
| .then(Protocol.Runtime.disable)
|
| + .then(ClearAndGC)
|
| .then(next);
|
| },
|
| function testPreciseCoverageFail(next)
|
| {
|
| Protocol.Runtime.enable()
|
| .then(Protocol.Profiler.enable)
|
| - .then(() => Protocol.Runtime.compileScript({ expression: source, sourceURL: "2", persistScript: true }))
|
| + .then(() => Protocol.Runtime.compileScript({ expression: source, sourceURL: arguments.callee.name, persistScript: true }))
|
| .then((result) => Protocol.Runtime.runScript({ scriptId: result.result.scriptId }))
|
| .then(InspectorTest.logMessage)
|
| .then(ClearAndGC)
|
| .then(Protocol.Profiler.takePreciseCoverage)
|
| .then(InspectorTest.logMessage)
|
| - .then(ClearAndGC)
|
| .then(Protocol.Profiler.disable)
|
| .then(Protocol.Runtime.disable)
|
| + .then(ClearAndGC)
|
| .then(next);
|
| },
|
| function testBestEffortCoverage(next)
|
| {
|
| Protocol.Runtime.enable()
|
| - .then(() => Protocol.Runtime.compileScript({ expression: source, sourceURL: "3", persistScript: true }))
|
| + .then(() => Protocol.Runtime.compileScript({ expression: source, sourceURL: arguments.callee.name, persistScript: true }))
|
| .then((result) => Protocol.Runtime.runScript({ scriptId: result.result.scriptId }))
|
| .then(InspectorTest.logMessage)
|
| .then(ClearAndGC)
|
| @@ -110,16 +116,36 @@ InspectorTest.runTestSuite([
|
| .then(LogSorted)
|
| .then(Protocol.Profiler.getBestEffortCoverage)
|
| .then(LogSorted)
|
| - .then(ClearAndGC)
|
| .then(Protocol.Runtime.disable)
|
| + .then(ClearAndGC)
|
| .then(next);
|
| },
|
| - function testBestEffortCoveragePrecise(next)
|
| + function testBestEffortCoverageWithPreciseBinaryEnabled(next)
|
| + {
|
| + Protocol.Runtime.enable()
|
| + .then(Protocol.Profiler.enable)
|
| + .then(Protocol.Profiler.startPreciseCoverage)
|
| + .then(() => Protocol.Runtime.compileScript({ expression: source, sourceURL: arguments.callee.name, persistScript: true }))
|
| + .then((result) => Protocol.Runtime.runScript({ scriptId: result.result.scriptId }))
|
| + .then(InspectorTest.logMessage)
|
| + .then(ClearAndGC)
|
| + .then(Protocol.Profiler.getBestEffortCoverage)
|
| + .then(LogSorted)
|
| + .then(Protocol.Profiler.getBestEffortCoverage)
|
| + .then(LogSorted)
|
| + .then(ClearAndGC)
|
| + .then(Protocol.Profiler.stopPreciseCoverage)
|
| + .then(Protocol.Profiler.disable)
|
| + .then(Protocol.Runtime.disable)
|
| + .then(ClearAndGC)
|
| + .then(next);
|
| + },
|
| + function testBestEffortCoverageWithPreciseCountEnabled(next)
|
| {
|
| Protocol.Runtime.enable()
|
| .then(Protocol.Profiler.enable)
|
| - .then(Protocol.Profiler.startPreciseCoverage)
|
| - .then(() => Protocol.Runtime.compileScript({ expression: source, sourceURL: "4", persistScript: true }))
|
| + .then(() => Protocol.Profiler.startPreciseCoverage({callCount: true}))
|
| + .then(() => Protocol.Runtime.compileScript({ expression: source, sourceURL: arguments.callee.name, persistScript: true }))
|
| .then((result) => Protocol.Runtime.runScript({ scriptId: result.result.scriptId }))
|
| .then(InspectorTest.logMessage)
|
| .then(ClearAndGC)
|
| @@ -131,27 +157,55 @@ InspectorTest.runTestSuite([
|
| .then(Protocol.Profiler.stopPreciseCoverage)
|
| .then(Protocol.Profiler.disable)
|
| .then(Protocol.Runtime.disable)
|
| + .then(ClearAndGC)
|
| .then(next);
|
| },
|
| - function testEnablePreciseCoverageAtPause(next)
|
| + function testEnablePreciseCountCoverageAtPause(next)
|
| {
|
| function handleDebuggerPause() {
|
| Protocol.Profiler.enable()
|
| - .then(Protocol.Profiler.startPreciseCoverage)
|
| + .then(() => Protocol.Profiler.startPreciseCoverage({callCount: true}))
|
| .then(Protocol.Debugger.resume)
|
| }
|
| Protocol.Debugger.enable();
|
| Protocol.Debugger.oncePaused().then(handleDebuggerPause);
|
| Protocol.Runtime.enable()
|
| - .then(() => Protocol.Runtime.compileScript({ expression: break_source, sourceURL: "5", persistScript: true }))
|
| + .then(() => Protocol.Runtime.compileScript({ expression: break_source, sourceURL: arguments.callee.name, persistScript: true }))
|
| .then((result) => Protocol.Runtime.runScript({ scriptId: result.result.scriptId }))
|
| .then(InspectorTest.logMessage)
|
| .then(ClearAndGC)
|
| .then(Protocol.Profiler.takePreciseCoverage)
|
| .then(LogSorted)
|
| + .then(ClearAndGC)
|
| .then(Protocol.Profiler.stopPreciseCoverage)
|
| .then(Protocol.Profiler.disable)
|
| .then(Protocol.Runtime.disable)
|
| + .then(Protocol.Debugger.disable)
|
| + .then(ClearAndGC)
|
| + .then(next);
|
| + },
|
| + function testPreciseBinaryCoverage(next)
|
| + {
|
| + Protocol.Runtime.enable()
|
| + .then(Protocol.Profiler.enable)
|
| + .then(Protocol.Profiler.startPreciseCoverage)
|
| + .then(() => Protocol.Runtime.compileScript({ expression: source, sourceURL: arguments.callee.name, persistScript: true }))
|
| + .then((result) => Protocol.Runtime.runScript({ scriptId: result.result.scriptId }))
|
| + .then(InspectorTest.logMessage)
|
| + .then(Protocol.Profiler.takePreciseCoverage)
|
| + .then(LogSorted)
|
| + .then(() => Protocol.Runtime.evaluate({ expression: "is_optimized(fib)" }))
|
| + .then(message => InspectorTest.logMessage(message))
|
| + .then(() => Protocol.Runtime.evaluate({ expression: "fib(20)" }))
|
| + .then(message => InspectorTest.logMessage(message))
|
| + .then(() => Protocol.Runtime.evaluate({ expression: "is_optimized(fib)" }))
|
| + .then(message => InspectorTest.logMessage(message))
|
| + .then(Protocol.Profiler.takePreciseCoverage)
|
| + .then(LogSorted)
|
| + .then(Protocol.Profiler.stopPreciseCoverage)
|
| + .then(Protocol.Profiler.disable)
|
| + .then(Protocol.Runtime.disable)
|
| + .then(ClearAndGC)
|
| .then(next);
|
| },
|
| ]);
|
|
|