chromium/v8/src/diagnostics/basic-block-profiler.h

// Copyright 2014 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.

#ifndef V8_DIAGNOSTICS_BASIC_BLOCK_PROFILER_H_
#define V8_DIAGNOSTICS_BASIC_BLOCK_PROFILER_H_

#include <iosfwd>
#include <list>
#include <memory>
#include <string>
#include <vector>

#include "src/base/macros.h"
#include "src/base/platform/mutex.h"
#include "src/common/globals.h"
#include "src/objects/shared-function-info.h"

namespace v8 {
namespace internal {

class OnHeapBasicBlockProfilerData;

class BasicBlockProfilerData {};

class BasicBlockProfiler {};

std::ostream& operator<<(std::ostream& os, const BasicBlockProfilerData& s);

// This struct comprises all callee inside a block.
using BlockCallees = std::set<Builtin>;
// This struct describes a call inside a caller, the key is block id, the value
// is a set of callee builtins.
using BuiltinCallees = std::unordered_map<int32_t, BlockCallees>;
// This struct describes a map for all builtins which will call other builtin.
using BuiltinCallMap = std::unordered_map<Builtin, BuiltinCallees>;

class BuiltinsCallGraph {};

}  // namespace internal
}  // namespace v8

#endif  // V8_DIAGNOSTICS_BASIC_BLOCK_PROFILER_H_