aboutsummaryrefslogtreecommitdiffstats
path: root/src/qml/memory/qv4writebarrier.cpp
blob: d7e56212ca25935dc857059eca0f7c3fd980793e (plain)
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
34
35
36
// Copyright (C) 2023 The Qt Company Ltd.
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
#include <private/qv4value_p.h>
#include <private/qv4mm_p.h>

QT_BEGIN_NAMESPACE

namespace {
    void markHeapBase(QV4::MarkStack* markStack, QV4::Heap::Base *base){
        if (!base)
            return;
        base->mark(markStack);
    }
}
namespace QV4 {

void WriteBarrier::write_slowpath(EngineBase *engine, Heap::Base *base, ReturnedValue *slot, ReturnedValue value)
{
    Q_UNUSED(base);
    Q_UNUSED(slot);
    MarkStack * markStack = engine->memoryManager->markStack();
    if constexpr (isInsertionBarrier)
        markHeapBase(markStack, Value::fromReturnedValue(value).heapObject());
}

void WriteBarrier::write_slowpath(EngineBase *engine, Heap::Base *base, Heap::Base **slot, Heap::Base *value)
{
    Q_UNUSED(base);
    Q_UNUSED(slot);
    MarkStack * markStack = engine->memoryManager->markStack();
    if constexpr (isInsertionBarrier)
        markHeapBase(markStack, value);
}

}
QT_END_NAMESPACE