Qt
Internal/Contributor docs for the Qt SDK. <b>Note:</b> These are NOT official API docs; those are found <a href='https://doc.qt.io/'>here</a>.
Loading...
Searching...
No Matches
QV4::MemoryManager Class Reference

#include <qv4mm_p.h>

+ Collaboration diagram for QV4::MemoryManager:

Public Types

enum  Blockness : quint8 { Unblocked , NormalBlocked , InCriticalSection }
 

Public Member Functions

 MemoryManager (ExecutionEngine *engine)
 
 ~MemoryManager ()
 
template<typename ManagedType >
ManagedType::Data * allocManaged (std::size_t size, Heap::InternalClass *ic)
 
template<typename ManagedType >
ManagedType::Data * allocManaged (Heap::InternalClass *ic)
 
template<typename ManagedType >
ManagedType::Data * allocManaged (std::size_t size, InternalClass *ic)
 
template<typename ManagedType >
ManagedType::Data * allocManaged (InternalClass *ic)
 
template<typename ManagedType >
ManagedType::Data * allocManaged (std::size_t size)
 
template<typename ManagedType >
ManagedType::Data * allocManaged ()
 
template<typename ObjectType >
ObjectType::Data * allocateObject (Heap::InternalClass *ic)
 
template<typename ObjectType >
ObjectType::Data * allocateObject (InternalClass *ic)
 
template<typename ObjectType >
ObjectType::Data * allocateObject ()
 
template<typename ManagedType , typename Arg1 >
ManagedType::Data * allocWithStringData (std::size_t unmanagedSize, Arg1 &&arg1)
 
template<typename ObjectType , typename... Args>
ObjectType::Data * allocObject (Heap::InternalClass *ic, Args &&... args)
 
template<typename ObjectType , typename... Args>
ObjectType::Data * allocObject (InternalClass *ic, Args &&... args)
 
template<typename ObjectType , typename... Args>
ObjectType::Data * allocate (Args &&... args)
 
template<typename ManagedType , typename... Args>
ManagedType::Data * alloc (Args &&... args)
 
void runGC ()
 
bool tryForceGCCompletion ()
 
void runFullGC ()
 
void dumpStats () const
 
size_t getUsedMem () const
 
size_t getAllocatedMem () const
 
size_t getLargeItemsMem () const
 
void changeUnmanagedHeapSizeUsage (qptrdiff delta)
 
void updateUnmanagedHeapSizeGCLimit ()
 
template<typename ManagedType >
ManagedType::Data * allocIC ()
 
void registerWeakMap (Heap::MapObject *map)
 
void registerWeakSet (Heap::SetObject *set)
 
void onEventLoop ()
 
void setGCTimeLimit (int timeMs)
 
MarkStackmarkStack ()
 
void collectFromJSStack (MarkStack *markStack) const
 
void sweep (bool lastSweep=false, ClassDestroyStatsCallback classCountPtr=nullptr)
 
void cleanupDeletedQObjectWrappersInSweep ()
 
bool isAboveUnmanagedHeapLimit ()
 

Static Public Member Functions

static constexpr std::size_t align (std::size_t size)
 

Public Attributes

QV4::ExecutionEngineengine
 
ChunkAllocatorchunkAllocator
 
BlockAllocator blockAllocator
 
BlockAllocator icAllocator
 
HugeItemAllocator hugeItemAllocator
 
PersistentValueStoragem_persistentValues
 
PersistentValueStoragem_weakValues
 
QVector< Value * > m_pendingFreedObjectWrapperValue
 
Heap::MapObjectweakMaps = nullptr
 
Heap::SetObjectweakSets = nullptr
 
std::unique_ptr< GCStateMachinegcStateMachine {nullptr}
 
std::unique_ptr< MarkStackm_markStack {nullptr}
 
std::size_t unmanagedHeapSize = 0
 
std::size_t unmanagedHeapSizeGCLimit
 
std::size_t usedSlotsAfterLastFullSweep = 0
 
Blockness gcBlocked = Unblocked
 
bool aggressiveGC = false
 
bool gcStats = false
 
bool gcCollectorStats = false
 
int allocationCount = 0
 
size_t lastAllocRequestedSlots = 0
 
struct { 
 
   size_t   maxReservedMem = 0 
 
   size_t   maxAllocatedMem = 0 
 
   size_t   maxUsedMem = 0 
 
   uint   allocations [BlockAllocator::NumBins
 
statistics 
 

Protected Member Functions

Heap::BaseallocString (std::size_t unmanagedSize)
 expects size to be aligned
 
Heap::BaseallocData (std::size_t size)
 
Heap::Object * allocObjectWithMemberData (const QV4::VTable *vtable, uint nMembers)
 

Friends

template<typename ToBeMarked >
struct GCCriticalSection
 

Detailed Description

Definition at line 174 of file qv4mm_p.h.

Member Enumeration Documentation

◆ Blockness

Enumerator
Unblocked 
NormalBlocked 
InCriticalSection 

Definition at line 421 of file qv4mm_p.h.

Constructor & Destructor Documentation

◆ MemoryManager()

◆ ~MemoryManager()

QV4::MemoryManager::~MemoryManager ( )

Member Function Documentation

◆ align()

static constexpr std::size_t QV4::MemoryManager::align ( std::size_t size)
inlinestaticconstexpr

Definition at line 187 of file qv4mm_p.h.

Referenced by QV4::MemberData::allocate(), allocObjectWithMemberData(), and allocString().

+ Here is the caller graph for this function:

◆ alloc()

template<typename ManagedType , typename... Args>
ManagedType::Data * QV4::MemoryManager::alloc ( Args &&... args)
inline

Definition at line 307 of file qv4mm_p.h.

References args, and engine.

Referenced by QV4::RuntimeHelpers::addHelper(), QV4::RegExpObject::builtinExec(), QV4::Symbol::create(), QV4::QmlContext::create(), QV4::RegExpPrototype::execFirstMatch(), QV4::StringPrototype::method_slice(), and QV4::ExecutionContext::newWithContext().

+ Here is the caller graph for this function:

◆ allocate()

template<typename ObjectType , typename... Args>
ObjectType::Data * QV4::MemoryManager::allocate ( Args &&... args)
inline

Definition at line 298 of file qv4mm_p.h.

References args, and engine.

Referenced by QV4::ExecutionEngine::ExecutionEngine(), allocData(), allocString(), QtObject::binding(), QV4::NodeList::create(), QV4::NamedNodeMap::create(), QV4::QQmlTypeWrapper::create(), QV4::QQmlTypeWrapper::create(), QV4::QMetaObjectWrapper::create(), QV4::QmlListWrapper::create(), QV4::QmlListWrapper::create(), QV4::QmlListWrapper::create(), QV4::Node::create(), QV4::QmlContext::create(), QV4::QQmlSqlDatabaseWrapper::create(), QQuickJSContext2DPrototype::create(), QV4::FunctionObject::createBuiltinFunction(), QV4::FunctionObject::createConstructorFunction(), QV4::FunctionObject::createScriptFunction(), QV4::Heap::Sequence::detached(), QV4::Promise::ReactionHandler::executeResolveThenable(), QQmlDMAbstractItemModelData::get(), QQmlDMListAccessorData::get(), QQmlDelegateModelGroup::get(), QQmlListModel::get(), QV4::NodePrototype::getProto(), QQmlComponent::incubateObject(), QV4::GlobalExtensions::init(), VDMAbstractItemModelDataType::initializeConstructor(), QV4::Document::load(), QV4::PromiseCtor::method_all(), QQuickJSContext2DPrototype::method_createConicalGradient(), QQuickJSContext2DPrototype::method_createLinearGradient(), QQuickJSContext2DPrototype::method_createPattern(), QQuickJSContext2DPrototype::method_createRadialGradient(), QV4::StringPrototype::method_iterator(), QV4::PromiseCtor::method_race(), QV4::PromiseCtor::method_reject(), QV4::PromiseCtor::method_resolve(), QV4::Proxy::method_revocable(), QV4::PromisePrototype::method_then(), QV4::ExecutionEngine::newArrayBuffer(), QV4::ExecutionEngine::newArrayBuffer(), QV4::ExecutionEngine::newArrayIteratorObject(), QV4::ExecutionEngine::newArrayObject(), QV4::ExecutionEngine::newArrayObject(), QV4::ExecutionEngine::newArrayObject(), QV4::ExecutionEngine::newBooleanObject(), QV4::ExecutionEngine::newDateObject(), QV4::ExecutionEngine::newDateObject(), QV4::ExecutionEngine::newDateObject(), QV4::ExecutionEngine::newDateObject(), QV4::ExecutionEngine::newDateObject(), QV4::ExecutionEngine::newForInIteratorObject(), QV4::ExecutionEngine::newMapIteratorObject(), QV4::ExecutionEngine::newNumberObject(), QV4::ExecutionEngine::newObject(), QV4::ExecutionEngine::newPromiseObject(), QV4::ExecutionEngine::newPromiseObject(), QV4::ExecutionEngine::newRegExpObject(), QV4::ExecutionEngine::newSetIteratorObject(), QV4::ExecutionEngine::newStringObject(), QV4::ExecutionEngine::newUrlObject(), QV4::ExecutionEngine::newUrlSearchParamsObject(), QV4::ExecutionEngine::newVariantObject(), qt_add_qmlxmlhttprequest(), qt_create_image_data(), QV4::Proxy::virtualCallAsConstructor(), QV4::QQmlTypeWrapper::virtualGet(), and QV4::QQmlTypeWrapper::virtualResolveLookupGetter().

◆ allocateObject() [1/3]

template<typename ObjectType >
ObjectType::Data * QV4::MemoryManager::allocateObject ( )
inline

Definition at line 262 of file qv4mm_p.h.

References d, and engine.

◆ allocateObject() [2/3]

template<typename ObjectType >
ObjectType::Data * QV4::MemoryManager::allocateObject ( Heap::InternalClass * ic)
inline

Definition at line 246 of file qv4mm_p.h.

References engine, o, Q_ASSERT, and QV4::Heap::InternalClass::size.

◆ allocateObject() [3/3]

template<typename ObjectType >
ObjectType::Data * QV4::MemoryManager::allocateObject ( InternalClass * ic)
inline

Definition at line 256 of file qv4mm_p.h.

◆ allocData()

Heap::Base * QV4::MemoryManager::allocData ( std::size_t size)
protected

Definition at line 999 of file qv4mm.cpp.

References allocate(), allocationCount, blockAllocator, lastAllocRequestedSlots, Q_ASSERT, QV4::Chunk::SlotSize, and QV4::Chunk::SlotSizeShift.

Referenced by allocObjectWithMemberData().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ allocIC()

template<typename ManagedType >
ManagedType::Data * QV4::MemoryManager::allocIC ( )
inline

Definition at line 333 of file qv4mm_p.h.

Referenced by QV4::ExecutionEngine::ExecutionEngine(), and QV4::ExecutionEngine::newClass().

+ Here is the caller graph for this function:

◆ allocManaged() [1/6]

template<typename ManagedType >
ManagedType::Data * QV4::MemoryManager::allocManaged ( )
inline

Definition at line 237 of file qv4mm_p.h.

References engine.

◆ allocManaged() [2/6]

template<typename ManagedType >
ManagedType::Data * QV4::MemoryManager::allocManaged ( Heap::InternalClass * ic)
inline

Definition at line 211 of file qv4mm_p.h.

◆ allocManaged() [3/6]

template<typename ManagedType >
ManagedType::Data * QV4::MemoryManager::allocManaged ( InternalClass * ic)
inline

Definition at line 223 of file qv4mm_p.h.

◆ allocManaged() [4/6]

template<typename ManagedType >
ManagedType::Data * QV4::MemoryManager::allocManaged ( std::size_t size)
inline

Definition at line 229 of file qv4mm_p.h.

References engine.

◆ allocManaged() [5/6]

template<typename ManagedType >
ManagedType::Data * QV4::MemoryManager::allocManaged ( std::size_t size,
Heap::InternalClass * ic )
inline

◆ allocManaged() [6/6]

template<typename ManagedType >
ManagedType::Data * QV4::MemoryManager::allocManaged ( std::size_t size,
InternalClass * ic )
inline

Definition at line 217 of file qv4mm_p.h.

◆ allocObject() [1/2]

template<typename ObjectType , typename... Args>
ObjectType::Data * QV4::MemoryManager::allocObject ( Heap::InternalClass * ic,
Args &&... args )
inline

Definition at line 282 of file qv4mm_p.h.

References args, and d.

Referenced by QV4::ExecutionEngine::ExecutionEngine(), QV4::ErrorObject::create(), QV4::ErrorObject::create(), QV4::ErrorObject::create(), QV4::TypedArray::create(), QV4::ExecutionEngine::newArrayObject(), QV4::ExecutionEngine::newObject(), QV4::ExecutionEngine::newSymbolObject(), and QV4::ScriptFunction::virtualCallAsConstructor().

+ Here is the caller graph for this function:

◆ allocObject() [2/2]

template<typename ObjectType , typename... Args>
ObjectType::Data * QV4::MemoryManager::allocObject ( InternalClass * ic,
Args &&... args )
inline

Definition at line 290 of file qv4mm_p.h.

References args, and d.

◆ allocObjectWithMemberData()

Heap::Object * QV4::MemoryManager::allocObjectWithMemberData ( const QV4::VTable * vtable,
uint nMembers )
protected

◆ allocString()

Heap::Base * QV4::MemoryManager::allocString ( std::size_t unmanagedSize)
protected

expects size to be aligned

Definition at line 985 of file qv4mm.cpp.

References align(), allocate(), allocationCount, blockAllocator, lastAllocRequestedSlots, QV4::Chunk::SlotSizeShift, and unmanagedHeapSize.

+ Here is the call graph for this function:

◆ allocWithStringData()

template<typename ManagedType , typename Arg1 >
ManagedType::Data * QV4::MemoryManager::allocWithStringData ( std::size_t unmanagedSize,
Arg1 && arg1 )
inline

Definition at line 272 of file qv4mm_p.h.

References engine, o, and Q_ASSERT.

Referenced by QV4::ExecutionEngine::newIdentifier(), and QV4::ExecutionEngine::newString().

+ Here is the caller graph for this function:

◆ changeUnmanagedHeapSizeUsage()

void QV4::MemoryManager::changeUnmanagedHeapSizeUsage ( qptrdiff delta)
inline

Definition at line 327 of file qv4mm_p.h.

◆ cleanupDeletedQObjectWrappersInSweep()

void QV4::MemoryManager::cleanupDeletedQObjectWrappersInSweep ( )

Definition at line 1154 of file qv4mm.cpp.

References QSet< T >::begin(), QV4::PersistentValueStorage::begin(), QSet< T >::end(), QV4::PersistentValueStorage::end(), engine, QSet< T >::erase(), QV4::PersistentValueStorage::free(), i, it, QV4::ExecutionEngine::m_multiplyWrappedQObjects, m_pendingFreedObjectWrapperValue, m_weakValues, QV4::Value::managed(), and QV4::Value::undefinedValue().

Referenced by sweep().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ collectFromJSStack()

void QV4::MemoryManager::collectFromJSStack ( MarkStack * markStack) const

Definition at line 1448 of file qv4mm.cpp.

References engine, QV4::EngineBase::jsStackBase, QV4::EngineBase::jsStackTop, QV4::Value::managed(), markStack(), and Q_ASSERT.

+ Here is the call graph for this function:

◆ dumpStats()

void QV4::MemoryManager::dumpStats ( ) const

Definition at line 1432 of file qv4mm.cpp.

References gcStats, i, QV4::BlockAllocator::NumBins, qDebug, QV4::Chunk::SlotSizeShift, and statistics.

Referenced by ~MemoryManager().

+ Here is the caller graph for this function:

◆ getAllocatedMem()

size_t QV4::MemoryManager::getAllocatedMem ( ) const

Definition at line 1356 of file qv4mm.cpp.

References QV4::BlockAllocator::allocatedMem(), blockAllocator, hugeItemAllocator, icAllocator, and QV4::HugeItemAllocator::usedMem().

Referenced by runGC().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ getLargeItemsMem()

size_t QV4::MemoryManager::getLargeItemsMem ( ) const

Definition at line 1361 of file qv4mm.cpp.

References hugeItemAllocator, and QV4::HugeItemAllocator::usedMem().

Referenced by runGC().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ getUsedMem()

size_t QV4::MemoryManager::getUsedMem ( ) const

Definition at line 1351 of file qv4mm.cpp.

References blockAllocator, icAllocator, and QV4::BlockAllocator::usedMem().

Referenced by runGC().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ isAboveUnmanagedHeapLimit()

bool QV4::MemoryManager::isAboveUnmanagedHeapLimit ( )
inline

Definition at line 363 of file qv4mm_p.h.

Referenced by QV4::GCCriticalSection< ToBeMarked >::~GCCriticalSection().

+ Here is the caller graph for this function:

◆ markStack()

MarkStack * QV4::MemoryManager::markStack ( )
inline

Definition at line 346 of file qv4mm_p.h.

Referenced by QV4::GCCriticalSection< ToBeMarked >::~GCCriticalSection(), and collectFromJSStack().

+ Here is the caller graph for this function:

◆ onEventLoop()

void QV4::MemoryManager::onEventLoop ( )

Definition at line 1092 of file qv4mm.cpp.

References engine, gcBlocked, gcStateMachine, InCriticalSection, QV4::EngineBase::inShutdown, QMetaObject::invokeMethod(), QV4::ExecutionEngine::publicEngine, and Qt::QueuedConnection.

+ Here is the call graph for this function:

◆ registerWeakMap()

void QV4::MemoryManager::registerWeakMap ( Heap::MapObject * map)

Definition at line 1389 of file qv4mm.cpp.

References map, and weakMaps.

◆ registerWeakSet()

void QV4::MemoryManager::registerWeakSet ( Heap::SetObject * set)

Definition at line 1395 of file qv4mm.cpp.

References set, and weakSets.

◆ runFullGC()

void QV4::MemoryManager::runFullGC ( )

Definition at line 1250 of file qv4mm.cpp.

References m_markStack, runGC(), and tryForceGCCompletion().

+ Here is the call graph for this function:

◆ runGC()

void QV4::MemoryManager::runGC ( )

Definition at line 1258 of file qv4mm.cpp.

References QV4::BlockAllocator::allocatedMem(), allocationCount, blockAllocator, QSet< T >::cbegin(), QSet< T >::cend(), QV4::BlockAllocator::chunks, QSet< T >::constBegin(), QSet< T >::constEnd(), QV4::dumpBins(), QString::fromLatin1(), gcBlocked, gcCollectorStats, gcStateMachine, gcStats, getAllocatedMem(), getLargeItemsMem(), getUsedMem(), icAllocator, it, lastAllocRequestedSlots, QV4::markStackSize, NormalBlocked, QString::number(), qDebug, qMax(), QElapsedTimer::start(), statistics, Unblocked, unmanagedHeapSize, and unmanagedHeapSizeGCLimit.

Referenced by QV4::GCCriticalSection< ToBeMarked >::~GCCriticalSection(), QQmlEngine::clearComponentCache(), QJSEngine::collectGarbage(), and runFullGC().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ setGCTimeLimit()

void QV4::MemoryManager::setGCTimeLimit ( int timeMs)

Definition at line 1108 of file qv4mm.cpp.

References gcStateMachine.

Referenced by ~MemoryManager(), and QQmlEngine::clearComponentCache().

+ Here is the caller graph for this function:

◆ sweep()

void QV4::MemoryManager::sweep ( bool lastSweep = false,
ClassDestroyStatsCallback classCountPtr = nullptr )

Definition at line 1113 of file qv4mm.cpp.

References QV4::Value::as(), QV4::PersistentValueStorage::begin(), blockAllocator, cleanupDeletedQObjectWrappersInSweep(), QV4::PersistentValueStorage::end(), engine, gcBlocked, hugeItemAllocator, icAllocator, QV4::EngineBase::identifierTable, it, m_weakValues, QV4::Value::managed(), QV4::BlockAllocator::resetBlackBits(), QV4::HugeItemAllocator::resetBlackBits(), QV4::IdentifierTable::sweep(), QV4::BlockAllocator::sweep(), QV4::HugeItemAllocator::sweep(), Unblocked, updateUnmanagedHeapSizeGCLimit(), usedSlotsAfterLastFullSweep, and QV4::BlockAllocator::usedSlotsAfterLastSweep.

Referenced by ~MemoryManager().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ tryForceGCCompletion()

bool QV4::MemoryManager::tryForceGCCompletion ( )

Precondition: Incremental garbage collection must be currently active Finishes incremental garbage collection, unless in a critical section Code entering a critical section is expected to check if we need to force a gc completion, and to trigger the gc again if necessary when exiting the critcial section. Returns true if the gc cycle completed, false otherwise.

Definition at line 1236 of file qv4mm.cpp.

References gcBlocked, gcStateMachine, InCriticalSection, m_markStack, and Q_ASSERT.

Referenced by QV4::GCCriticalSection< ToBeMarked >::~GCCriticalSection(), and runFullGC().

+ Here is the caller graph for this function:

◆ updateUnmanagedHeapSizeGCLimit()

void QV4::MemoryManager::updateUnmanagedHeapSizeGCLimit ( )

Definition at line 1366 of file qv4mm.cpp.

References aggressiveGC, QV4::BlockAllocator::allocatedMem(), blockAllocator, QV4::dumpBins(), engine, icAllocator, QV4::EngineBase::inShutdown, Q_ASSERT, qMax(), unmanagedHeapSize, unmanagedHeapSizeGCLimit, and QV4::BlockAllocator::usedMem().

Referenced by sweep().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

Friends And Related Symbol Documentation

◆ GCCriticalSection

template<typename ToBeMarked >
friend struct GCCriticalSection
friend

Definition at line 183 of file qv4mm_p.h.

Member Data Documentation

◆ aggressiveGC

bool QV4::MemoryManager::aggressiveGC = false

Definition at line 423 of file qv4mm_p.h.

Referenced by updateUnmanagedHeapSizeGCLimit().

◆ allocationCount

int QV4::MemoryManager::allocationCount = 0

Definition at line 427 of file qv4mm_p.h.

Referenced by allocData(), allocString(), and runGC().

◆ allocations

uint QV4::MemoryManager::allocations[BlockAllocator::NumBins]

Definition at line 434 of file qv4mm_p.h.

◆ blockAllocator

◆ chunkAllocator

ChunkAllocator* QV4::MemoryManager::chunkAllocator

Definition at line 404 of file qv4mm_p.h.

Referenced by ~MemoryManager().

◆ engine

◆ gcBlocked

Blockness QV4::MemoryManager::gcBlocked = Unblocked

◆ gcCollectorStats

bool QV4::MemoryManager::gcCollectorStats = false

Definition at line 425 of file qv4mm_p.h.

Referenced by runGC().

◆ gcStateMachine

◆ gcStats

bool QV4::MemoryManager::gcStats = false

Definition at line 424 of file qv4mm_p.h.

Referenced by MemoryManager(), dumpStats(), and runGC().

◆ hugeItemAllocator

HugeItemAllocator QV4::MemoryManager::hugeItemAllocator

◆ icAllocator

BlockAllocator QV4::MemoryManager::icAllocator

◆ lastAllocRequestedSlots

size_t QV4::MemoryManager::lastAllocRequestedSlots = 0

Definition at line 428 of file qv4mm_p.h.

Referenced by allocData(), allocString(), and runGC().

◆ m_markStack

std::unique_ptr<MarkStack> QV4::MemoryManager::m_markStack {nullptr}

Definition at line 415 of file qv4mm_p.h.

Referenced by ~MemoryManager(), runFullGC(), and tryForceGCCompletion().

◆ m_pendingFreedObjectWrapperValue

QVector<Value *> QV4::MemoryManager::m_pendingFreedObjectWrapperValue

Definition at line 410 of file qv4mm_p.h.

Referenced by cleanupDeletedQObjectWrappersInSweep().

◆ m_persistentValues

◆ m_weakValues

PersistentValueStorage* QV4::MemoryManager::m_weakValues

Definition at line 409 of file qv4mm_p.h.

Referenced by ~MemoryManager(), cleanupDeletedQObjectWrappersInSweep(), and sweep().

◆ maxAllocatedMem

size_t QV4::MemoryManager::maxAllocatedMem = 0

Definition at line 432 of file qv4mm_p.h.

◆ maxReservedMem

size_t QV4::MemoryManager::maxReservedMem = 0

Definition at line 431 of file qv4mm_p.h.

◆ maxUsedMem

size_t QV4::MemoryManager::maxUsedMem = 0

Definition at line 433 of file qv4mm_p.h.

◆ [struct]

struct { ... } QV4::MemoryManager::statistics

Referenced by MemoryManager(), dumpStats(), and runGC().

◆ unmanagedHeapSize

std::size_t QV4::MemoryManager::unmanagedHeapSize = 0

Definition at line 417 of file qv4mm_p.h.

Referenced by allocString(), runGC(), and updateUnmanagedHeapSizeGCLimit().

◆ unmanagedHeapSizeGCLimit

std::size_t QV4::MemoryManager::unmanagedHeapSizeGCLimit

Definition at line 418 of file qv4mm_p.h.

Referenced by runGC(), and updateUnmanagedHeapSizeGCLimit().

◆ usedSlotsAfterLastFullSweep

std::size_t QV4::MemoryManager::usedSlotsAfterLastFullSweep = 0

Definition at line 419 of file qv4mm_p.h.

Referenced by sweep().

◆ weakMaps

Heap::MapObject* QV4::MemoryManager::weakMaps = nullptr

Definition at line 411 of file qv4mm_p.h.

Referenced by registerWeakMap().

◆ weakSets

Heap::SetObject* QV4::MemoryManager::weakSets = nullptr

Definition at line 412 of file qv4mm_p.h.

Referenced by registerWeakSet().


The documentation for this class was generated from the following files: