@@ -59,7 +59,7 @@ struct Value final {
59
59
} u;
60
60
61
61
std::unique_ptr<api::vTensor> as_tensor;
62
- api::StagingBuffer as_staging;
62
+ std::unique_ptr< api::StagingBuffer> as_staging;
63
63
TensorRef as_tensorref;
64
64
65
65
std::vector<int64_t > as_int_list;
@@ -73,7 +73,7 @@ struct Value final {
73
73
74
74
std::string as_string;
75
75
76
- SymInt as_symint;
76
+ std::unique_ptr< SymInt> as_symint;
77
77
78
78
Payload () : u () {}
79
79
// NOLINTNEXTLINE
@@ -117,9 +117,7 @@ struct Value final {
117
117
CASE_MOVE_TRIVIALLY_COPYABLE_TYPE (TypeTag::INT, as_int);
118
118
CASE_MOVE_TRIVIALLY_COPYABLE_TYPE (TypeTag::DOUBLE, as_double);
119
119
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
123
121
CASE_MOVE_MOVEABLE_TYPE (
124
122
TypeTag::TENSORREF, TensorRef, as_tensorref, TensorRef);
125
123
// Scalar lists
@@ -134,9 +132,12 @@ struct Value final {
134
132
TypeTag::VALUELIST, std::vector<ValueRef>, as_value_list, vector);
135
133
CASE_MOVE_MOVEABLE_TYPE (
136
134
TypeTag::STRING, std::string, as_string, basic_string);
137
- CASE_MOVE_MOVEABLE_TYPE (TypeTag::SYMINT, SymInt, as_symint, SymInt);
138
135
// Tensor type
139
136
CASE_MOVE_UNIQUE_PTR_TYPE (TypeTag::TENSOR, as_tensor);
137
+ // Small tensor adjacent types
138
+ CASE_MOVE_UNIQUE_PTR_TYPE (TypeTag::STAGING, as_staging);
139
+ // Large tensor adjacent types
140
+ CASE_MOVE_UNIQUE_PTR_TYPE (TypeTag::SYMINT, as_symint);
140
141
141
142
case TypeTag::NONE:
142
143
clearToNone ();
@@ -163,9 +164,6 @@ struct Value final {
163
164
164
165
~Value () {
165
166
switch (tag) {
166
- case TypeTag::STAGING:
167
- payload.as_staging .~StagingBuffer ();
168
- break ;
169
167
case TypeTag::TENSORREF:
170
168
payload.as_tensorref .~TensorRef ();
171
169
break ;
@@ -184,8 +182,11 @@ struct Value final {
184
182
case TypeTag::STRING:
185
183
payload.as_string .~basic_string ();
186
184
break ;
185
+ case TypeTag::STAGING:
186
+ payload.as_staging .reset ();
187
+ break ;
187
188
case TypeTag::SYMINT:
188
- payload.as_symint .~SymInt ();
189
+ payload.as_symint .reset ();
189
190
break ;
190
191
case TypeTag::TENSOR:
191
192
payload.as_tensor .reset ();
@@ -258,12 +259,6 @@ struct Value final {
258
259
return payload.member_name ; \
259
260
}
260
261
261
- SUPPORT_TRIVIALLY_MOVEABLE_TYPE (
262
- api::StagingBuffer,
263
- Staging,
264
- TypeTag::STAGING,
265
- as_staging);
266
-
267
262
SUPPORT_TRIVIALLY_MOVEABLE_TYPE (
268
263
TensorRef,
269
264
TensorRef,
@@ -300,8 +295,6 @@ struct Value final {
300
295
TypeTag::STRING,
301
296
as_string);
302
297
303
- SUPPORT_TRIVIALLY_MOVEABLE_TYPE (SymInt, SymInt, TypeTag::SYMINT, as_symint);
304
-
305
298
#undef SUPPORT_TRIVIALLY_MOVEABLE_TYPE
306
299
307
300
#define SUPPORT_UNIQUE_PTR_TYPE (type, type_name, type_tag, member_name ) \
@@ -330,6 +323,14 @@ struct Value final {
330
323
331
324
SUPPORT_UNIQUE_PTR_TYPE (api::vTensor, Tensor, TypeTag::TENSOR, as_tensor);
332
325
326
+ SUPPORT_UNIQUE_PTR_TYPE (
327
+ api::StagingBuffer,
328
+ Staging,
329
+ TypeTag::STAGING,
330
+ as_staging);
331
+
332
+ SUPPORT_UNIQUE_PTR_TYPE (SymInt, SymInt, TypeTag::SYMINT, as_symint);
333
+
333
334
#undef SUPPORT_UNIQUE_PTR_TYPE
334
335
335
336
private:
0 commit comments