message: Add a field for storing platform specific payloads for stream_executor::DeviceMemoryBase.
diff: @@ -84,6 +84,12 @@ class DeviceMemoryBase {
  void *opaque() { return opaque_; }
  const void *opaque() const { return opaque_; }
  + // Returns the payload of this memory region.
  + uint64 payload() const { return payload_; }
  +
  + // Sets payload to given value.
  + void SetPayload(uint64 payload) { payload_ = payload; }
  +
  // Returns whether the two DeviceMemoryBase segments are identical (both in
  // their opaque pointer and size).
  bool IsSameAs(const DeviceMemoryBase &other) const {
  @@ -103,6 +109,7 @@ class DeviceMemoryBase {
  private:
  void *opaque_; // Platform-dependent value representing allocated memory.
  uint64 size_; // Size in bytes of this allocation.
  + uint64 payload_ = 0; // Payload data associtated with this allocation.
  };
  // Typed wrapper around "void *"-like DeviceMemoryBase.
  @@ -179,7 +186,6 @@ class SharedDeviceMemory final : public DeviceMemoryBase {
  bool IsScalar() const { return ElementCount() == 1; }
  };
  -
  // Host-side representation of packed-and-aligned vector datatypes on the device
  // side. Since these can appear in device kernel signatures, we support
  // launching them with these datatypes in launch signatures.
  