Coverage Report

Created: 2026-04-01 07:11

next uncovered line (L), next uncovered region (R), next uncovered branch (B)
/src/xnnpack/src/allocator.c
Line
Count
Source
1
// Copyright 2019 Google LLC
2
//
3
// This source code is licensed under the BSD-style license found in the
4
// LICENSE file in the root directory of this source tree.
5
6
#include <assert.h>
7
#include <stddef.h>
8
#include <stdlib.h>
9
10
#ifdef __ANDROID__
11
  #include <malloc.h>
12
#endif
13
14
#include "include/xnnpack.h"
15
#include "src/xnnpack/allocator.h"
16
#include "src/xnnpack/common.h"
17
18
19
extern int posix_memalign(void **memptr, size_t alignment, size_t size);
20
21
22
0
static void* xnn_allocate(void* context, size_t size) {
23
0
  return malloc(size);
24
0
}
25
26
0
static void* xnn_reallocate(void* context, void* pointer, size_t size) {
27
0
  return realloc(pointer, size);
28
0
}
29
30
0
static void xnn_deallocate(void* context, void* pointer) {
31
0
  if XNN_LIKELY(pointer != NULL) {
32
0
    free(pointer);
33
0
  }
34
0
}
35
36
0
static void* xnn_aligned_allocate(void* context, size_t alignment, size_t size) {
37
#if XNN_ARCH_WASM
38
  assert(alignment <= 2 * sizeof(void*));
39
  return malloc(size);
40
#elif XNN_PLATFORM_ANDROID
41
  return memalign(alignment, size);
42
#elif XNN_PLATFORM_WINDOWS
43
  return _aligned_malloc(size, alignment);
44
#else
45
0
  void* memory_ptr = NULL;
46
0
  if (posix_memalign(&memory_ptr, alignment, size) != 0) {
47
0
    return NULL;
48
0
  }
49
0
  return memory_ptr;
50
0
#endif
51
0
}
52
53
0
static void xnn_aligned_deallocate(void* context, void* pointer) {
54
0
  if XNN_LIKELY(pointer != NULL) {
55
    #if defined(_WIN32)
56
      _aligned_free(pointer);
57
    #else
58
0
      free(pointer);
59
0
    #endif
60
0
  }
61
0
}
62
63
const struct xnn_allocator xnn_default_allocator = {
64
  .allocate = xnn_allocate,
65
  .reallocate = xnn_reallocate,
66
  .deallocate = xnn_deallocate,
67
  .aligned_allocate = xnn_aligned_allocate,
68
  .aligned_deallocate = xnn_aligned_deallocate,
69
};