#include "src/heap/memory-measurement.h"
#include "include/v8-local-handle.h"
#include "src/api/api-inl.h"
#include "src/execution/isolate-inl.h"
#include "src/handles/global-handles-inl.h"
#include "src/heap/factory-inl.h"
#include "src/heap/incremental-marking.h"
#include "src/heap/marking-worklist.h"
#include "src/logging/counters.h"
#include "src/objects/js-array-buffer-inl.h"
#include "src/objects/js-promise-inl.h"
#include "src/tasks/task-utils.h"
#if V8_ENABLE_WEBASSEMBLY
#include "src/wasm/wasm-code-manager.h"
#include "src/wasm/wasm-engine.h"
#include "src/wasm/wasm-import-wrapper-cache.h"
#endif
namespace v8 {
namespace internal {
namespace {
class MemoryMeasurementResultBuilder { … };
}
class V8_EXPORT_PRIVATE MeasureMemoryDelegate
: public v8::MeasureMemoryDelegate { … };
MeasureMemoryDelegate::MeasureMemoryDelegate(
Isolate* isolate, DirectHandle<NativeContext> context,
DirectHandle<JSPromise> promise, v8::MeasureMemoryMode mode)
: … { … }
MeasureMemoryDelegate::~MeasureMemoryDelegate() { … }
bool MeasureMemoryDelegate::ShouldMeasure(v8::Local<v8::Context> context) { … }
void MeasureMemoryDelegate::MeasurementComplete(Result result) { … }
MemoryMeasurement::MemoryMeasurement(Isolate* isolate)
: … { … }
bool MemoryMeasurement::EnqueueRequest(
std::unique_ptr<v8::MeasureMemoryDelegate> delegate,
v8::MeasureMemoryExecution execution,
const std::vector<Handle<NativeContext>> contexts) { … }
std::vector<Address> MemoryMeasurement::StartProcessing() { … }
void MemoryMeasurement::FinishProcessing(const NativeContextStats& stats) { … }
void MemoryMeasurement::ScheduleReportingTask() { … }
bool MemoryMeasurement::IsGCTaskPending(v8::MeasureMemoryExecution execution) { … }
void MemoryMeasurement::SetGCTaskPending(v8::MeasureMemoryExecution execution) { … }
void MemoryMeasurement::SetGCTaskDone(v8::MeasureMemoryExecution execution) { … }
void MemoryMeasurement::ScheduleGCTask(v8::MeasureMemoryExecution execution) { … }
int MemoryMeasurement::NextGCTaskDelayInSeconds() { … }
void MemoryMeasurement::ReportResults() { … }
std::unique_ptr<v8::MeasureMemoryDelegate> MemoryMeasurement::DefaultDelegate(
Isolate* isolate, Handle<NativeContext> context, Handle<JSPromise> promise,
v8::MeasureMemoryMode mode) { … }
void NativeContextStats::Clear() { … }
void NativeContextStats::Merge(const NativeContextStats& other) { … }
void NativeContextStats::IncrementExternalSize(Address context, Tagged<Map> map,
Tagged<HeapObject> object) { … }
}
}