// 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.
|
|
#ifndef V8_DEBUG_DEBUG_TYPE_PROFILE_H_
|
#define V8_DEBUG_DEBUG_TYPE_PROFILE_H_
|
|
#include <vector>
|
|
#include "src/debug/debug-interface.h"
|
#include "src/objects.h"
|
|
namespace v8 {
|
namespace internal {
|
|
// Forward declaration.
|
class Isolate;
|
|
struct TypeProfileEntry {
|
explicit TypeProfileEntry(
|
int pos, std::vector<v8::internal::Handle<internal::String>> t)
|
: position(pos), types(std::move(t)) {}
|
int position;
|
std::vector<v8::internal::Handle<internal::String>> types;
|
};
|
|
struct TypeProfileScript {
|
explicit TypeProfileScript(Handle<Script> s) : script(s) {}
|
Handle<Script> script;
|
std::vector<TypeProfileEntry> entries;
|
};
|
|
class TypeProfile : public std::vector<TypeProfileScript> {
|
public:
|
static std::unique_ptr<TypeProfile> Collect(Isolate* isolate);
|
static void SelectMode(Isolate* isolate, debug::TypeProfile::Mode mode);
|
|
private:
|
TypeProfile() {}
|
};
|
|
} // namespace internal
|
} // namespace v8
|
|
#endif // V8_DEBUG_DEBUG_TYPE_PROFILE_H_
|