# HG changeset patch # User Christian Wimmer # Date 1395773405 25200 # Node ID 762c9aceb7d85a451fc743b6c6d963ca877ff1d3 # Parent ed8533832ea4b989805f31cad961cbe49f91d1f3 Add equals/hashCode methods diff -r ed8533832ea4 -r 762c9aceb7d8 graal/com.oracle.truffle.api/src/com/oracle/truffle/api/nodes/NodeUtil.java --- a/graal/com.oracle.truffle.api/src/com/oracle/truffle/api/nodes/NodeUtil.java Tue Mar 25 11:49:46 2014 -0700 +++ b/graal/com.oracle.truffle.api/src/com/oracle/truffle/api/nodes/NodeUtil.java Tue Mar 25 11:50:05 2014 -0700 @@ -122,6 +122,20 @@ return unsafe.getObject(node, offset); } } + + @Override + public int hashCode() { + return kind.hashCode() | type.hashCode() | name.hashCode() | ((Long) offset).hashCode(); + } + + @Override + public boolean equals(Object obj) { + if (obj instanceof NodeField) { + NodeField other = (NodeField) obj; + return offset == other.offset && name.equals(other.name) && type.equals(other.type) && kind.equals(other.kind); + } + return false; + } } /** @@ -198,6 +212,21 @@ public long[] getChildrenOffsets() { return childrenOffsets; } + + @Override + public int hashCode() { + return Arrays.hashCode(fields) ^ Arrays.hashCode(childOffsets) ^ Arrays.hashCode(childrenOffsets) ^ ((Long) parentOffset).hashCode(); + } + + @Override + public boolean equals(Object obj) { + if (obj instanceof NodeClass) { + NodeClass other = (NodeClass) obj; + return Arrays.equals(fields, other.fields) && Arrays.equals(childOffsets, other.childOffsets) && Arrays.equals(childrenOffsets, other.childrenOffsets) && + parentOffset == other.parentOffset; + } + return false; + } } static class NodeIterator implements Iterator {