@@ -198,176 +198,6 @@ class MemoryAllocator {
198
198
int32_t prof_id_ = -1 ;
199
199
};
200
200
201
- #if ET_HAVE_GNU_STATEMENT_EXPRESSIONS
202
- /* *
203
- * Tries allocating from the specified MemoryAllocator*.
204
- *
205
- * - On success, returns a pointer to the allocated buffer.
206
- * - On failure, executes the provided code block, which must return or panic.
207
- *
208
- * Example:
209
- * @code
210
- * char* buf = ET_TRY_ALLOCATE_OR(
211
- * memory_allocator, bufsize, {
212
- * *out_err = Error::MemoryAllocationFailed;
213
- * return nullopt;
214
- * });
215
- * @endcode
216
- */
217
- #define ET_TRY_ALLOCATE_OR (memory_allocator__, nbytes__, ...) \
218
- ({ \
219
- void * et_try_allocate_result = memory_allocator__->allocate (nbytes__); \
220
- if (et_try_allocate_result == nullptr && nbytes__ > 0 ) { \
221
- __VA_ARGS__ \
222
- /* The args must return. */ \
223
- ET_UNREACHABLE (); \
224
- } \
225
- et_try_allocate_result; \
226
- })
227
-
228
- /* *
229
- * Tries allocating an instance of type__ from the specified MemoryAllocator*.
230
- *
231
- * - On success, returns a pointer to the allocated buffer. Note that the memory
232
- * will not be initialized.
233
- * - On failure, executes the provided code block, which must return or panic.
234
- *
235
- * Example:
236
- * @code
237
- * char* buf = ET_TRY_ALLOCATE_INSTANCE_OR(
238
- * memory_allocator,
239
- * MyType,
240
- * { *out_err = Error::MemoryAllocationFailed; return nullopt; });
241
- * @endcode
242
- */
243
- #define ET_TRY_ALLOCATE_INSTANCE_OR (memory_allocator__, type__, ...) \
244
- ({ \
245
- type__* et_try_allocate_result = \
246
- memory_allocator__->allocateInstance <type__>(); \
247
- if (et_try_allocate_result == nullptr ) { \
248
- __VA_ARGS__ \
249
- /* The args must return. */ \
250
- ET_UNREACHABLE (); \
251
- } \
252
- et_try_allocate_result; \
253
- })
254
-
255
- /* *
256
- * Tries allocating multiple elements of a given type from the specified
257
- * MemoryAllocator*.
258
- *
259
- * - On success, returns a pointer to the allocated buffer.
260
- * - On failure, executes the provided code block, which must return or panic.
261
- *
262
- * Example:
263
- * @code
264
- * Tensor* tensor_list = ET_TRY_ALLOCATE_LIST_OR(
265
- * memory_allocator, Tensor, num_tensors, {
266
- * *out_err = Error::MemoryAllocationFailed;
267
- * return nullopt;
268
- * });
269
- * @endcode
270
- */
271
- #define ET_TRY_ALLOCATE_LIST_OR (memory_allocator__, type__, nelem__, ...) \
272
- ({ \
273
- type__* et_try_allocate_result = \
274
- memory_allocator__->allocateList <type__>(nelem__); \
275
- if (et_try_allocate_result == nullptr && nelem__ > 0 ) { \
276
- __VA_ARGS__ \
277
- /* The args must return. */ \
278
- ET_UNREACHABLE (); \
279
- } \
280
- et_try_allocate_result; \
281
- })
282
- #else // !ET_HAVE_GNU_STATEMENT_EXPRESSIONS
283
- /* *
284
- * The recommended alternative for statement expression-incompatible compilers
285
- * is to directly allocate the memory.
286
- * e.g. memory_allocator__->allocate(nbytes__);
287
- */
288
- #define ET_TRY_ALLOCATE_OR (memory_allocator__, nbytes__, ...) \
289
- static_assert ( \
290
- false , \
291
- " ET_TRY_ALLOCATE_OR uses statement expressions and \
292
- thus is not available for use with this compiler." );
293
-
294
- /* *
295
- * The recommended alternative for statement expression-incompatible compilers
296
- * is to directly allocate the memory.
297
- * e.g. memory_allocator__->allocateInstance<type__>();
298
- */
299
- #define ET_TRY_ALLOCATE_INSTANCE_OR (memory_allocator__, type__, ...) \
300
- static_assert ( \
301
- false , \
302
- " ET_TRY_ALLOCATE_INSTANCE_OR uses statement \
303
- expressions and thus is not available for use with this compiler." );
304
-
305
- /* *
306
- * The recommended alternative for statement expression-incompatible compilers
307
- * is to directly use allocate the memory.
308
- * e.g. memory_allocator__->allocateList<type__>(nelem__);
309
- */
310
- #define ET_TRY_ALLOCATE_LIST_OR (memory_allocator__, type__, nelem__, ...) \
311
- static_assert ( \
312
- false , \
313
- " ET_TRY_ALLOCATE_LIST_OR uses statement \
314
- expressions and thus is not available for use with this compiler." );
315
- #endif // !ET_HAVE_GNU_STATEMENT_EXPRESSIONS
316
-
317
- /* *
318
- * Tries allocating from the specified MemoryAllocator*.
319
- *
320
- * - On success, returns a pointer to the allocated buffer.
321
- * - On failure, returns `Error::MemoryAllocationFailed` from the calling
322
- * function, which must be declared to return `executorch::runtime::Error`.
323
- *
324
- * Example:
325
- * @code
326
- * char* buf = ET_ALLOCATE_OR_RETURN_ERROR(memory_allocator, bufsize);
327
- * @endcode
328
- */
329
- #define ET_ALLOCATE_OR_RETURN_ERROR (memory_allocator__, nbytes__ ) \
330
- ET_TRY_ALLOCATE_OR (memory_allocator__, nbytes__, { \
331
- return ::executorch::runtime::Error::MemoryAllocationFailed; \
332
- })
333
-
334
- /* *
335
- * Tries allocating an instance of type__ from the specified MemoryAllocator*.
336
- *
337
- * - On success, returns a pointer to the allocated buffer. Note that the memory
338
- * will not be initialized.
339
- * - On failure, returns `Error::MemoryAllocationFailed` from the calling
340
- * function, which must be declared to return `executorch::runtime::Error`.
341
- *
342
- * Example:
343
- * @code
344
- * char* buf = ET_ALLOCATE_INSTANCE_OR_RETURN_ERROR(memory_allocator, MyType);
345
- * @endcode
346
- */
347
- #define ET_ALLOCATE_INSTANCE_OR_RETURN_ERROR (memory_allocator__, type__ ) \
348
- ET_TRY_ALLOCATE_INSTANCE_OR (memory_allocator__, type__, { \
349
- return ::executorch::runtime::Error::MemoryAllocationFailed; \
350
- })
351
-
352
- /* *
353
- * Tries allocating multiple elements of a given type from the specified
354
- * MemoryAllocator*.
355
- *
356
- * - On success, returns a pointer to the allocated buffer.
357
- * - On failure, returns `Error::MemoryAllocationFailed` from the calling
358
- * function, which must be declared to return `executorch::runtime::Error`.
359
- *
360
- * Example:
361
- * @code
362
- * Tensor* tensor_list = ET_ALLOCATE_LIST_OR_RETURN_ERROR(
363
- * memory_allocator, Tensor, num_tensors);
364
- * @endcode
365
- */
366
- #define ET_ALLOCATE_LIST_OR_RETURN_ERROR (memory_allocator__, type__, nelem__ ) \
367
- ET_TRY_ALLOCATE_LIST_OR (memory_allocator__, type__, nelem__, { \
368
- return ::executorch::runtime::Error::MemoryAllocationFailed; \
369
- })
370
-
371
201
} // namespace runtime
372
202
} // namespace executorch
373
203
0 commit comments