return HandleForwarding();
}
-inline void DSNodeHandle::setNode(DSNode *n) {
+inline void DSNodeHandle::setNode(DSNode *n) const {
assert(!n || !n->getForwardNode() && "Cannot set node to a forwarded node!");
if (N) N->NumReferrers--;
N = n;
/// mergeWith - Merge the logical node pointed to by 'this' with the node
/// pointed to by 'N'.
///
-inline void DSNodeHandle::mergeWith(const DSNodeHandle &Node) {
- if (N != 0)
+inline void DSNodeHandle::mergeWith(const DSNodeHandle &Node) const {
+ if (!isNull())
getNode()->mergeWith(Node, Offset);
- else // No node to merge with, so just point to Node
- *this = Node;
+ else { // No node to merge with, so just point to Node
+ Offset = 0;
+ setNode(Node.getNode());
+ Offset = Node.getOffset();
+ }
}
} // End llvm namespace
inline DSNode *getNode() const; // Defined inline in DSNode.h
unsigned getOffset() const { return Offset; }
- inline void setNode(DSNode *N); // Defined inline in DSNode.h
+ inline void setNode(DSNode *N) const; // Defined inline in DSNode.h
void setOffset(unsigned O) {
//assert((!N || Offset < N->Size || (N->Size == 0 && Offset == 0) ||
// !N->ForwardNH.isNull()) && "Node handle offset out of range!");
/// mergeWith - Merge the logical node pointed to by 'this' with the node
/// pointed to by 'N'.
///
- void mergeWith(const DSNodeHandle &N);
+ void mergeWith(const DSNodeHandle &N) const;
// hasLink - Return true if there is a link at the specified offset...
inline bool hasLink(unsigned Num) const;
return HandleForwarding();
}
-inline void DSNodeHandle::setNode(DSNode *n) {
+inline void DSNodeHandle::setNode(DSNode *n) const {
assert(!n || !n->getForwardNode() && "Cannot set node to a forwarded node!");
if (N) N->NumReferrers--;
N = n;
/// mergeWith - Merge the logical node pointed to by 'this' with the node
/// pointed to by 'N'.
///
-inline void DSNodeHandle::mergeWith(const DSNodeHandle &Node) {
- if (N != 0)
+inline void DSNodeHandle::mergeWith(const DSNodeHandle &Node) const {
+ if (!isNull())
getNode()->mergeWith(Node, Offset);
- else // No node to merge with, so just point to Node
- *this = Node;
+ else { // No node to merge with, so just point to Node
+ Offset = 0;
+ setNode(Node.getNode());
+ Offset = Node.getOffset();
+ }
}
} // End llvm namespace
inline DSNode *getNode() const; // Defined inline in DSNode.h
unsigned getOffset() const { return Offset; }
- inline void setNode(DSNode *N); // Defined inline in DSNode.h
+ inline void setNode(DSNode *N) const; // Defined inline in DSNode.h
void setOffset(unsigned O) {
//assert((!N || Offset < N->Size || (N->Size == 0 && Offset == 0) ||
// !N->ForwardNH.isNull()) && "Node handle offset out of range!");
/// mergeWith - Merge the logical node pointed to by 'this' with the node
/// pointed to by 'N'.
///
- void mergeWith(const DSNodeHandle &N);
+ void mergeWith(const DSNodeHandle &N) const;
// hasLink - Return true if there is a link at the specified offset...
inline bool hasLink(unsigned Num) const;