@@ -59,7 +59,7 @@ struct Value final {
5959 } u;
6060
6161 std::unique_ptr<api::vTensor> as_tensor;
62- api::StagingBuffer as_staging;
62+ std::unique_ptr< api::StagingBuffer> as_staging;
6363 TensorRef as_tensorref;
6464
6565 std::vector<int64_t > as_int_list;
@@ -73,7 +73,7 @@ struct Value final {
7373
7474 std::string as_string;
7575
76- SymInt as_symint;
76+ std::unique_ptr< SymInt> as_symint;
7777
7878 Payload () : u () {}
7979 // NOLINTNEXTLINE
@@ -117,9 +117,7 @@ struct Value final {
117117 CASE_MOVE_TRIVIALLY_COPYABLE_TYPE (TypeTag::INT, as_int);
118118 CASE_MOVE_TRIVIALLY_COPYABLE_TYPE (TypeTag::DOUBLE, as_double);
119119 CASE_MOVE_TRIVIALLY_COPYABLE_TYPE (TypeTag::BOOL, as_bool);
120- // Tensor adjacent types
121- CASE_MOVE_MOVEABLE_TYPE (
122- TypeTag::STAGING, api::StagingBuffer, as_staging, StagingBuffer);
120+ // Tensor adjacent type
123121 CASE_MOVE_MOVEABLE_TYPE (
124122 TypeTag::TENSORREF, TensorRef, as_tensorref, TensorRef);
125123 // Scalar lists
@@ -134,9 +132,10 @@ struct Value final {
134132 TypeTag::VALUELIST, std::vector<ValueRef>, as_value_list, vector);
135133 CASE_MOVE_MOVEABLE_TYPE (
136134 TypeTag::STRING, std::string, as_string, basic_string);
137- CASE_MOVE_MOVEABLE_TYPE (TypeTag::SYMINT, SymInt, as_symint, SymInt);
138135 // Tensor type
139136 CASE_MOVE_UNIQUE_PTR_TYPE (TypeTag::TENSOR, as_tensor);
137+ CASE_MOVE_UNIQUE_PTR_TYPE (TypeTag::STAGING, as_staging);
138+ CASE_MOVE_UNIQUE_PTR_TYPE (TypeTag::SYMINT, as_symint);
140139
141140 case TypeTag::NONE:
142141 clearToNone ();
@@ -163,9 +162,6 @@ struct Value final {
163162
164163 ~Value () {
165164 switch (tag) {
166- case TypeTag::STAGING:
167- payload.as_staging .~StagingBuffer ();
168- break ;
169165 case TypeTag::TENSORREF:
170166 payload.as_tensorref .~TensorRef ();
171167 break ;
@@ -184,8 +180,11 @@ struct Value final {
184180 case TypeTag::STRING:
185181 payload.as_string .~basic_string ();
186182 break ;
183+ case TypeTag::STAGING:
184+ payload.as_staging .reset ();
185+ break ;
187186 case TypeTag::SYMINT:
188- payload.as_symint .~SymInt ();
187+ payload.as_symint .reset ();
189188 break ;
190189 case TypeTag::TENSOR:
191190 payload.as_tensor .reset ();
@@ -258,12 +257,6 @@ struct Value final {
258257 return payload.member_name ; \
259258 }
260259
261- SUPPORT_TRIVIALLY_MOVEABLE_TYPE (
262- api::StagingBuffer,
263- Staging,
264- TypeTag::STAGING,
265- as_staging);
266-
267260 SUPPORT_TRIVIALLY_MOVEABLE_TYPE (
268261 TensorRef,
269262 TensorRef,
@@ -300,8 +293,6 @@ struct Value final {
300293 TypeTag::STRING,
301294 as_string);
302295
303- SUPPORT_TRIVIALLY_MOVEABLE_TYPE (SymInt, SymInt, TypeTag::SYMINT, as_symint);
304-
305296#undef SUPPORT_TRIVIALLY_MOVEABLE_TYPE
306297
307298#define SUPPORT_UNIQUE_PTR_TYPE (type, type_name, type_tag, member_name ) \
@@ -330,6 +321,14 @@ struct Value final {
330321
331322 SUPPORT_UNIQUE_PTR_TYPE (api::vTensor, Tensor, TypeTag::TENSOR, as_tensor);
332323
324+ SUPPORT_UNIQUE_PTR_TYPE (
325+ api::StagingBuffer,
326+ Staging,
327+ TypeTag::STAGING,
328+ as_staging);
329+
330+ SUPPORT_UNIQUE_PTR_TYPE (SymInt, SymInt, TypeTag::SYMINT, as_symint);
331+
333332#undef SUPPORT_UNIQUE_PTR_TYPE
334333
335334 private:
0 commit comments