5#ifndef V8_DIAGNOSTICS_BASIC_BLOCK_PROFILER_H_
6#define V8_DIAGNOSTICS_BASIC_BLOCK_PROFILER_H_
22class OnHeapBasicBlockProfilerData;
42 void SetCode(
const std::ostringstream& os);
47 void AddBranch(int32_t true_block_id, int32_t false_block_id);
58 friend std::ostream&
operator<<(std::ostream& os,
77 using DataList = std::list<std::unique_ptr<BasicBlockProfilerData>>;
BasicBlockProfilerData(const BasicBlockProfilerData &)=delete
void SetFunctionName(std::unique_ptr< char[]> name)
DirectHandle< OnHeapBasicBlockProfilerData > CopyToJSHeap(Isolate *isolate)
const uint32_t * counts() const
BasicBlockProfilerData & operator=(const BasicBlockProfilerData &)=delete
std::vector< uint32_t > counts_
void SetCode(const std::ostringstream &os)
BasicBlockProfilerData(size_t n_blocks)
void SetBlockId(size_t offset, int32_t id)
std::vector< std::pair< int32_t, int32_t > > branches_
void CopyFromJSHeap(Tagged< OnHeapBasicBlockProfilerData > js_heap_data)
std::string function_name_
void SetSchedule(const std::ostringstream &os)
friend std::ostream & operator<<(std::ostream &os, const BasicBlockProfilerData &s)
void AddBranch(int32_t true_block_id, int32_t false_block_id)
void Log(Isolate *isolate, std::ostream &os)
V8_EXPORT_PRIVATE void ResetCounts()
std::vector< int32_t > block_ids_
V8_EXPORT_PRIVATE bool HasData(Isolate *isolate)
static V8_EXPORT_PRIVATE BasicBlockProfiler * Get()
BasicBlockProfilerData * NewData(size_t n_blocks)
base::Mutex data_list_mutex_
BasicBlockProfiler & operator=(const BasicBlockProfiler &)=delete
V8_EXPORT_PRIVATE void Log(Isolate *isolate, std::ostream &os)
std::list< std::unique_ptr< BasicBlockProfilerData > > DataList
BasicBlockProfiler()=default
V8_EXPORT_PRIVATE std::vector< bool > GetCoverageBitmap(Isolate *isolate)
~BasicBlockProfiler()=default
const DataList * data_list()
V8_EXPORT_PRIVATE void ResetCounts(Isolate *isolate)
V8_EXPORT_PRIVATE void Print(Isolate *isolate, std::ostream &os)
BasicBlockProfiler(const BasicBlockProfiler &)=delete
const BuiltinCallees * GetBuiltinCallees(Builtin builtin)
BuiltinCallMap builtin_call_map_
void AddBuiltinCall(Builtin caller, Builtin callee, int32_t block_id)
V8_INLINE void set_all_hash_matched(bool all_hash_matched)
V8_INLINE bool all_hash_matched() const
static BuiltinsCallGraph * Get()
~BuiltinsCallGraph()=default
BuiltinsCallGraph(const BuiltinsCallGraph &)=delete
BuiltinsCallGraph & operator=(const BuiltinsCallGraph &)=delete
std::ostream & operator<<(std::ostream &os, AtomicMemoryOrder order)
std::unordered_map< Builtin, BuiltinCallees > BuiltinCallMap
std::set< Builtin > BlockCallees
std::unordered_map< int32_t, BlockCallees > BuiltinCallees
#define DCHECK_EQ(v1, v2)
#define V8_EXPORT_PRIVATE