code: private final ValueNode registerFinalValue(int value) {
          // We always register final values because while ADDING
          // we do not know yet whether we will build fast or small.
          lookupFinalValueNode.setFinalValue(value);
          Node oldNode=nodes.get(lookupFinalValueNode);
          if(oldNode!=null) {
              return (ValueNode)oldNode;
          }
          ValueNode newNode=new ValueNode(value);
          // If put() returns a non-null value from an equivalent, previously
          // registered node, then get() failed to find that and we will leak newNode.
          oldNode=nodes.put(newNode, newNode);
          assert(oldNode==null);
          return newNode;
      }
docs: Makes sure that there is only one unique FinalValueNode registered
  with this value.
  Avoids creating a node if the value is a duplicate.
  @param value A final value.
  @return A FinalValueNode with the given value.