// 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 let TestCoverage; let TestCoverageNoGC; let nop; let gen; !function() { function GetCoverage(source) { for (var script of %DebugCollectCoverage()) { if (script.script.source == source) return script; } return undefined; }; function TestCoverageInternal(name, source, expectation, collect_garbage) { source = source.trim(); eval(source); if (collect_garbage) %CollectGarbage("collect dead objects"); var covfefe = GetCoverage(source); var stringified_result = JSON.stringify(covfefe); var stringified_expectation = JSON.stringify(expectation); if (stringified_result != stringified_expectation) { print(stringified_result.replace(/[}],[{]/g, "},\n {")); } assertEquals(stringified_expectation, stringified_result, name + " failed"); }; TestCoverage = function(name, source, expectation) { TestCoverageInternal(name, source, expectation, true); }; TestCoverageNoGC = function(name, source, expectation) { TestCoverageInternal(name, source, expectation, false); }; nop = function() {}; gen = function*() { yield 1; yield 2; yield 3; }; }();