blob: 8c2ce239706c89c3c40ade07b2e03e4c96ee8549 [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 Script& script,
const Class& cls,
const Function& func) const = 0;
virtual ~CoverageFilter() {}
};
class CodeCoverage : public AllStatic {
public:
static void Write(Thread* thread);
static void PrintJSON(Thread* thread,
JSONStream* stream,
CoverageFilter* filter,
bool as_call_sites);
private:
static void PrintClass(const Library& lib,
const Class& cls,
const JSONArray& arr,
CoverageFilter* filter,
bool as_call_sites);
static void CompileAndAdd(const Function& function,
const JSONArray& hits_or_sites,
const GrowableArray<intptr_t>& pos_to_line,
bool as_call_sites);
};
} // namespace dart
#endif // VM_COVERAGE_H_