LLVM: llvm::IntervalMapImpl Namespace Reference (original) (raw)

IntervalMapImpl - Namespace used for IntervalMap implementation details. More...

Classes
class BranchNode
class LeafNode
class NodeBase
class NodeRef
struct NodeSizer
class Path
Functions
template
void adjustSiblingSizes (NodeT *Node[], unsigned Nodes, unsigned CurSize[], const unsigned NewSize[])
IntervalMapImpl::adjustSiblingSizes - Move elements between sibling nodes.
IdxPair distribute (unsigned Nodes, unsigned Elements, unsigned Capacity, const unsigned *CurSize, unsigned NewSize[], unsigned Position, bool Grow)
IntervalMapImpl::distribute - Compute a new distribution of node elements after an overflow or underflow.

IntervalMapImpl - Namespace used for IntervalMap implementation details.

It should be considered private to the implementation.

IdxPair

anonymous enum

Enumerator
Log2CacheLine
CacheLineBytes
DesiredNodeBytes

Definition at line 430 of file IntervalMap.h.

adjustSiblingSizes()

template

void llvm::IntervalMapImpl::adjustSiblingSizes ( NodeT * _Node_[],
unsigned Nodes,
unsigned _CurSize_[],
const unsigned _NewSize_[]
)

distribute()

IntervalMapImpl::distribute - Compute a new distribution of node elements after an overflow or underflow.

Reserve space for a new element at Position, and compute the node that will hold Position after redistributing node elements.

It is required that

Elements == sum(CurSize), and Elements + Grow <= Nodes * Capacity.

NewSize[] will be filled in such that:

sum(NewSize) == Elements, and NewSize[i] <= Capacity.

The returned index is the node where Position will go, so:

sum(NewSize[0..idx-1]) <= Position sum(NewSize[0..idx]) >= Position

The last equality, sum(NewSize[0..idx]) == Position, can only happen when Grow is set and NewSize[idx] == Capacity-1. The index points to the node before the one holding the Position'th element where there is room for an insertion.

Parameters

Nodes The number of nodes.
Elements Total elements in all nodes.
Capacity The capacity of each node.
CurSize Array[Nodes] of current node sizes, or NULL.
NewSize Array[Nodes] to receive the new node sizes.
Position Insert position.
Grow Reserve space for a new element at Position.

Returns

(node, offset) for Position.

Definition at line 120 of file IntervalMap.cpp.

References assert().