blob: 5cc1ec13b22b094aad6a0a0dd16ee30335a7afa7 [file] [log] [blame]
// Copyright (c) 2013, the Dart project authors. Please see the AUTHORS file
// for details. All rights reserved. Use of this source code is governed by a
// BSD-style license that can be found in the LICENSE file.
#ifndef VM_COVERAGE_H_
#define VM_COVERAGE_H_
#include "vm/allocation.h"
#include "vm/flags.h"
namespace dart {
DECLARE_FLAG(charp, coverage_dir);
// Forward declarations.
class Class;
class Function;
template <typename T> class GrowableArray;
class Isolate;
class JSONArray;
class JSONStream;
class Library;
class Script;
class String;
class CoverageFilter : public ValueObject {
public:
virtual bool ShouldOutputCoverageFor(const Library& lib,
const String& script_url,
const Class& cls,
const Function& func) const = 0;
virtual ~CoverageFilter() {}
};
class CodeCoverage : public AllStatic {
public:
static void Write(Isolate* isolate);
static void PrintJSON(Isolate* isolate,
JSONStream* stream,
CoverageFilter* filter);
private:
static void PrintClass(const Library& lib,
const Class& cls,
const JSONArray& arr,
CoverageFilter* filter);
static void CompileAndAdd(const Function& function,
const JSONArray& hits_arr,
const GrowableArray<intptr_t>& pos_to_line);
};
} // namespace dart
#endif // VM_COVERAGE_H_