Lines Matching refs:SMSNode
96 struct SMSNode {
103 SMSNode(ValueT D, unsigned P, unsigned N) : Data(D), Prev(P), Next(N) {}
121 using DenseT = SmallVector<SMSNode, 8>;
131 unsigned FreelistIdx = SMSNode::INVALID;
139 unsigned sparseIndex(const SMSNode &N) const { return sparseIndex(N.Data); }
144 bool isHead(const SMSNode &D) const {
151 bool isSingleton(const SMSNode &N) const {
157 /// Add in the given SMSNode. Uses a free entry in our freelist if
161 Dense.push_back(SMSNode(V, Prev, Next));
170 Dense[Idx] = SMSNode(V, Prev, Next);
178 Dense[Idx].Prev = SMSNode::INVALID;
233 if (Idx == SMSNode::INVALID)
319 iterator end() { return iterator(this, SMSNode::INVALID, SMSNode::INVALID); }
321 return const_iterator(this, SMSNode::INVALID, SMSNode::INVALID);
346 FreelistIdx = SMSNode::INVALID;
413 iterator E = iterator(this, SMSNode::INVALID, B.SparseIdx);
423 unsigned NodeIdx = addValue(Val, SMSNode::INVALID, SMSNode::INVALID);
489 iterator unlink(const SMSNode &N) {
492 assert(N.Next == SMSNode::INVALID && "Singleton has next?");
493 return iterator(this, SMSNode::INVALID, ValIndexOf(N.Data));