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::Chunk Struct Reference

#include <qv4mmdefs_p.h>

+ Collaboration diagram for QV4::Chunk:

Public Types

enum  {
  ChunkSize = 64*1024 , ChunkShift = 16 , SlotSize = 32 , SlotSizeShift = 5 ,
  NumSlots = ChunkSize/SlotSize , BitmapSize = NumSlots/8 , HeaderSize = 3*BitmapSize , DataSize = ChunkSize - HeaderSize ,
  AvailableSlots = DataSize/SlotSize , Bits = 32 , BitShift = 5 , EntriesInBitmap = BitmapSize/sizeof(quintptr)
}
 

Public Member Functions

HeapItemrealBase ()
 
HeapItemfirst ()
 
uint nFreeSlots () const
 
uint nUsedSlots () const
 
bool sweep (ClassDestroyStatsCallback classCountPtr)
 
void resetBlackBits ()
 
bool sweep (ExecutionEngine *engine)
 
void freeAll (ExecutionEngine *engine)
 
void sortIntoBins (HeapItem **bins, uint nBins)
 

Static Public Member Functions

static Q_ALWAYS_INLINE size_t bitmapIndex (size_t index)
 
static Q_ALWAYS_INLINE quintptr bitForIndex (size_t index)
 
static void setBit (quintptr *bitmap, size_t index)
 
static void clearBit (quintptr *bitmap, size_t index)
 
static bool testBit (quintptr *bitmap, size_t index)
 
static void setBits (quintptr *bitmap, size_t index, size_t nBits)
 
static bool hasNonZeroBit (quintptr *bitmap)
 
static uint lowestNonZeroBit (quintptr *bitmap)
 

Public Attributes

quintptr blackBitmap [BitmapSize/sizeof(quintptr)]
 
quintptr objectBitmap [BitmapSize/sizeof(quintptr)]
 
quintptr extendsBitmap [BitmapSize/sizeof(quintptr)]
 
char data [ChunkSize - HeaderSize]
 

Detailed Description

Definition at line 56 of file qv4mmdefs_p.h.

Member Enumeration Documentation

◆ anonymous enum

anonymous enum
Enumerator
ChunkSize 
ChunkShift 
SlotSize 
SlotSizeShift 
NumSlots 
BitmapSize 
HeaderSize 
DataSize 
AvailableSlots 
Bits 
BitShift 
EntriesInBitmap 

Definition at line 57 of file qv4mmdefs_p.h.

Member Function Documentation

◆ bitForIndex()

static Q_ALWAYS_INLINE quintptr QV4::Chunk::bitForIndex ( size_t index)
inlinestatic

Definition at line 87 of file qv4mmdefs_p.h.

References Bits.

Referenced by clearBit(), QV4::Heap::Base::mark(), setBit(), and testBit().

+ Here is the caller graph for this function:

◆ bitmapIndex()

static Q_ALWAYS_INLINE size_t QV4::Chunk::bitmapIndex ( size_t index)
inlinestatic

Definition at line 84 of file qv4mmdefs_p.h.

References BitShift.

Referenced by clearBit(), QV4::Heap::Base::mark(), setBit(), and testBit().

+ Here is the caller graph for this function:

◆ clearBit()

static void QV4::Chunk::clearBit ( quintptr * bitmap,
size_t index )
inlinestatic

Definition at line 97 of file qv4mmdefs_p.h.

References bitForIndex(), and bitmapIndex().

Referenced by QV4::MemoryManager::allocObjectWithMemberData().

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

◆ first()

HeapItem * QV4::Chunk::first ( )
inline

Definition at line 220 of file qv4mmdefs_p.h.

References data.

Referenced by QV4::freeHugeChunk().

+ Here is the caller graph for this function:

◆ freeAll()

void QV4::Chunk::freeAll ( ExecutionEngine * engine)

Definition at line 331 of file qv4mm.cpp.

References engine, i, QV4::Heap::Base::internalClass, o, Q_ASSERT, Q_V4_PROFILE_DEALLOC, qCountTrailingZeroBits(), and qPopulationCount().

+ Here is the call graph for this function:

◆ hasNonZeroBit()

static bool QV4::Chunk::hasNonZeroBit ( quintptr * bitmap)
inlinestatic

Definition at line 126 of file qv4mmdefs_p.h.

References EntriesInBitmap, and i.

◆ lowestNonZeroBit()

static uint QV4::Chunk::lowestNonZeroBit ( quintptr * bitmap)
inlinestatic

Definition at line 132 of file qv4mmdefs_p.h.

References Bits, EntriesInBitmap, i, and qCountTrailingZeroBits().

+ Here is the call graph for this function:

◆ nFreeSlots()

uint QV4::Chunk::nFreeSlots ( ) const
inline

Definition at line 142 of file qv4mmdefs_p.h.

References AvailableSlots, and nUsedSlots().

+ Here is the call graph for this function:

◆ nUsedSlots()

uint QV4::Chunk::nUsedSlots ( ) const
inline

Definition at line 145 of file qv4mmdefs_p.h.

References EntriesInBitmap, extendsBitmap, i, objectBitmap, and qPopulationCount().

Referenced by nFreeSlots().

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

◆ realBase()

HeapItem * QV4::Chunk::realBase ( )
inline

Definition at line 215 of file qv4mmdefs_p.h.

Referenced by QV4::MemoryManager::allocObjectWithMemberData(), and QV4::Heap::Base::mark().

+ Here is the caller graph for this function:

◆ resetBlackBits()

void QV4::Chunk::resetBlackBits ( )

Definition at line 374 of file qv4mm.cpp.

◆ setBit()

static void QV4::Chunk::setBit ( quintptr * bitmap,
size_t index )
inlinestatic

Definition at line 91 of file qv4mmdefs_p.h.

References bitForIndex(), and bitmapIndex().

Referenced by QV4::MemoryManager::allocObjectWithMemberData(), and QV4::HeapItem::setAllocatedSlots().

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

◆ setBits()

static void QV4::Chunk::setBits ( quintptr * bitmap,
size_t index,
size_t nBits )
inlinestatic

Definition at line 109 of file qv4mmdefs_p.h.

References Bits, BitShift, and qMin().

Referenced by QV4::HeapItem::setAllocatedSlots().

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

◆ sortIntoBins()

void QV4::Chunk::sortIntoBins ( HeapItem ** bins,
uint nBins )

Definition at line 379 of file qv4mm.cpp.

References base, HeaderSize, i, Q_ASSERT, qCountTrailingZeroBits(), qMin(), and qPopulationCount().

+ Here is the call graph for this function:

◆ sweep() [1/2]

bool QV4::Chunk::sweep ( ClassDestroyStatsCallback classCountPtr)

◆ sweep() [2/2]

bool QV4::Chunk::sweep ( ExecutionEngine * engine)

Definition at line 269 of file qv4mm.cpp.

References QV4::VTable::destroy, engine, i, o, Q_ASSERT, Q_V4_PROFILE_DEALLOC, qCountTrailingZeroBits(), qPopulationCount(), and SDUMP.

+ Here is the call graph for this function:

◆ testBit()

static bool QV4::Chunk::testBit ( quintptr * bitmap,
size_t index )
inlinestatic

Definition at line 103 of file qv4mmdefs_p.h.

References bitForIndex(), and bitmapIndex().

Referenced by QV4::HeapItem::isBlack(), QV4::HeapItem::isInUse(), QV4::Heap::Base::mark(), and QV4::HeapItem::size().

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

Member Data Documentation

◆ blackBitmap

quintptr QV4::Chunk::blackBitmap[BitmapSize/sizeof(quintptr)]

Definition at line 76 of file qv4mmdefs_p.h.

◆ data

char QV4::Chunk::data[ChunkSize - HeaderSize]

Definition at line 79 of file qv4mmdefs_p.h.

Referenced by first().

◆ extendsBitmap

quintptr QV4::Chunk::extendsBitmap[BitmapSize/sizeof(quintptr)]

Definition at line 78 of file qv4mmdefs_p.h.

Referenced by nUsedSlots().

◆ objectBitmap

quintptr QV4::Chunk::objectBitmap[BitmapSize/sizeof(quintptr)]

Definition at line 77 of file qv4mmdefs_p.h.

Referenced by nUsedSlots().


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