code: def _xxhash(self):
          
          # repeat the bookkeeping to get a contiguous array inside
          # the function to avoid additional function calls
          # these functions are called millions of times so everything helps
          if self._modified_x or not hasattr(self, '_hashed_xx'):
              if self.flags['C_CONTIGUOUS']:
                  hasher = xxhash.xxh64(self)
                  self._hashed_xx = hasher.intdigest()
              else:
                  # the case where we have sliced our nice
                  # contiguous array into a non- contiguous block
                  # for example (note slice *after* track operation):
                  # t = util.tracked_array(np.random.random(10))[::-1]
                  contiguous = np.ascontiguousarray(self)
                  hasher = xxhash.xxh64(contiguous)
                  self._hashed_xx = hasher.intdigest()
          self._modified_x = False
          return self._hashed_xx
docs: An xxhash.b64 hash of the array.
  
          Returns
          -------------
          xx: int, xxhash.xxh64 hash of array.