1// Copyright 2024 The Go Authors. All rights reserved.
2// Use of this source code is governed by a BSD-style
3// license that can be found in the LICENSE file.
4
5// Package profilerecord holds internal types used to represent profiling
6// records with deep stack traces.
7//
8// TODO: Consider moving this to internal/runtime, see golang.org/issue/65355.
9package profilerecord
10
11type StackRecord struct {
12	Stack []uintptr
13}
14
15type MemProfileRecord struct {
16	AllocBytes, FreeBytes     int64
17	AllocObjects, FreeObjects int64
18	Stack                     []uintptr
19}
20
21func (r *MemProfileRecord) InUseBytes() int64   { return r.AllocBytes - r.FreeBytes }
22func (r *MemProfileRecord) InUseObjects() int64 { return r.AllocObjects - r.FreeObjects }
23
24type BlockProfileRecord struct {
25	Count  int64
26	Cycles int64
27	Stack  []uintptr
28}
29