1 // Copyright 2021 the V8 project authors. All rights reserved. 2 // Use of this source code is governed by a BSD-style license that can be 3 // found in the LICENSE file. 4 5 #ifndef V8_HEAP_HEAP_LAYOUT_TRACER_H_ 6 #define V8_HEAP_HEAP_LAYOUT_TRACER_H_ 7 8 #include "include/v8-callbacks.h" 9 #include "src/common/globals.h" 10 11 namespace v8 { 12 namespace internal { 13 14 class Heap; 15 class BasicMemoryChunk; 16 17 class HeapLayoutTracer : AllStatic { 18 public: 19 static void GCProloguePrintHeapLayout(v8::Isolate* isolate, 20 v8::GCType gc_type, 21 v8::GCCallbackFlags flags, void* data); 22 static void GCEpiloguePrintHeapLayout(v8::Isolate* isolate, 23 v8::GCType gc_type, 24 v8::GCCallbackFlags flags, void* data); 25 26 private: 27 static void PrintBasicMemoryChunk(std::ostream& os, BasicMemoryChunk* chunk, 28 const char* owner_name); 29 static void PrintHeapLayout(std::ostream& os, Heap* heap); 30 }; 31 } // namespace internal 32 } // namespace v8 33 #endif // V8_HEAP_HEAP_LAYOUT_TRACER_H_ 34