Coverage Report

Created: 2026-09-26 06:49

next uncovered line (L), next uncovered region (R), next uncovered branch (B)
/src/serenity/Userland/Libraries/LibJS/Heap/Internals.h
Line
Count
Source
1
/*
2
 * Copyright (c) 2020-2024, Andreas Kling <andreas@ladybird.org>
3
 * Copyright (c) 2020-2023, the SerenityOS developers.
4
 *
5
 * SPDX-License-Identifier: BSD-2-Clause
6
 */
7
8
#pragma once
9
10
#include <AK/Types.h>
11
#include <LibJS/Forward.h>
12
13
namespace JS {
14
15
class HeapBase {
16
    AK_MAKE_NONCOPYABLE(HeapBase);
17
    AK_MAKE_NONMOVABLE(HeapBase);
18
19
public:
20
81.1k
    VM& vm() { return m_vm; }
21
22
protected:
23
    HeapBase(VM& vm)
24
48
        : m_vm(vm)
25
48
    {
26
48
    }
27
28
    VM& m_vm;
29
};
30
31
class HeapBlockBase {
32
    AK_MAKE_NONMOVABLE(HeapBlockBase);
33
    AK_MAKE_NONCOPYABLE(HeapBlockBase);
34
35
public:
36
    static size_t block_size;
37
    static HeapBlockBase* from_cell(Cell const* cell)
38
118k
    {
39
118k
        return reinterpret_cast<HeapBlockBase*>(bit_cast<FlatPtr>(cell) & ~(HeapBlockBase::block_size - 1));
40
118k
    }
41
42
118k
    Heap& heap() { return m_heap; }
43
44
protected:
45
    HeapBlockBase(Heap& heap)
46
3.87k
        : m_heap(heap)
47
3.87k
    {
48
3.87k
    }
49
50
    Heap& m_heap;
51
};
52
53
}