aboutsummaryrefslogtreecommitdiffstats
path: root/vespamalloc/src/vespamalloc/malloc/memblockboundscheck.hpp
blob: 3d06879264c2cc885b07a780f89a80d550584f74 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once

#include <vespamalloc/malloc/memblockboundscheck.h>

namespace vespamalloc {

template <size_t MaxSizeClassMultiAllocC, size_t StackTraceLen>
void MemBlockBoundsCheckBaseT<MaxSizeClassMultiAllocC, StackTraceLen>::info(FILE * os, unsigned level) const
{
    if (validCommon()) {
        if (level & 0x02) {
            fprintf(os, "{ %8p(%ld, %u) ", ptr(), size(), threadId());
            const Stack * cStack = callStack();
            for (int i=0; i<int(StackTraceLen);i++) {
                if (cStack[i].valid()) {
                    cStack[i].info(os);
                    fprintf(os, " ");
                }
            }
            fprintf(os, " }");
        }
        if (level & 0x01) {
            fprintf(os, " %8p(%ld, %u)", ptr(), size(), threadId());
        }
        if (level == 0) {
            fprintf(os, " %8p(%ld)", ptr(), size());
        }
    }
}

} // namespace vespamalloc