|  | // Copyright 2017 the V8 project authors. All rights reserved. | 
|  | // Use of this source code is governed by a BSD-style license that can be | 
|  | // found in the LICENSE file. | 
|  |  | 
|  | // Flags: --allow-natives-syntax --no-always-opt | 
|  | // Files: test/mjsunit/code-coverage-utils.js | 
|  |  | 
|  | // Test code coverage without explicitly activating it upfront. | 
|  |  | 
|  | TestCoverageNoGC( | 
|  | "call simple function twice", | 
|  | ` | 
|  | function f() {} | 
|  | f(); | 
|  | f(); | 
|  | `, | 
|  | [{"start":0,"end":25,"count":1}, | 
|  | {"start":0,"end":15,"count":1}] | 
|  | ); | 
|  |  | 
|  | TestCoverageNoGC( | 
|  | "call arrow function twice", | 
|  | ` | 
|  | var f = () => 1; | 
|  | f(); | 
|  | f(); | 
|  | `, | 
|  | [{"start":0,"end":26,"count":1}, | 
|  | {"start":8,"end":15,"count":1}] | 
|  | ); | 
|  |  | 
|  | TestCoverageNoGC( | 
|  | "call nested function", | 
|  | ` | 
|  | function f() { | 
|  | function g() {} | 
|  | g(); | 
|  | g(); | 
|  | } | 
|  | f(); | 
|  | f(); | 
|  | `, | 
|  | [{"start":0,"end":58,"count":1}, | 
|  | {"start":0,"end":48,"count":1}, | 
|  | {"start":17,"end":32,"count":1}] | 
|  | ); | 
|  |  | 
|  | TestCoverageNoGC( | 
|  | "call recursive function", | 
|  | ` | 
|  | function fib(x) { | 
|  | if (x < 2) return 1; | 
|  | return fib(x-1) + fib(x-2); | 
|  | } | 
|  | fib(5); | 
|  | `, | 
|  | [{"start":0,"end":80,"count":1}, | 
|  | {"start":0,"end":72,"count":1}] | 
|  | ); |