Skip to content

Commit 3219b77

Browse files
committed
Use alloc_align for all coroutine-related heap-allocated types
Signed-off-by: Petr Shumilov <p.shumilov@vkteam.ru>
1 parent 34c31f3 commit 3219b77

6 files changed

Lines changed: 31 additions & 1 deletion

File tree

runtime-light/coroutine/detail/await-set.h

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -61,6 +61,11 @@ class await_broker {
6161
return kphp::memory::script::alloc(n);
6262
}
6363

64+
template<typename... Args>
65+
auto operator new(size_t n, std::align_val_t al, [[maybe_unused]] Args&&... args) noexcept -> void* {
66+
return kphp::memory::script::alloc_aligned(n, al);
67+
}
68+
6469
void operator delete(void* ptr, [[maybe_unused]] size_t n) noexcept {
6570
kphp::memory::script::free(ptr);
6671
}
@@ -168,6 +173,11 @@ class await_set_task_promise_base : public kphp::coro::async_stack_element {
168173
return kphp::memory::script::alloc(n);
169174
}
170175

176+
template<typename... Args>
177+
auto operator new(size_t n, std::align_val_t al, [[maybe_unused]] Args&&... args) noexcept -> void* {
178+
return kphp::memory::script::alloc_aligned(n, al);
179+
}
180+
171181
void operator delete(void* ptr, [[maybe_unused]] size_t n) noexcept {
172182
kphp::memory::script::free(ptr);
173183
}

runtime-light/coroutine/detail/task-self-deleting.h

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,11 @@ struct promise_self_deleting : kphp::coro::async_stack_element {
3535
return kphp::memory::script::alloc(n);
3636
}
3737

38+
template<typename... Args>
39+
auto operator new(size_t n, std::align_val_t al, [[maybe_unused]] Args&&... args) noexcept -> void* {
40+
return kphp::memory::script::alloc_aligned(n, al);
41+
}
42+
3843
auto operator delete(void* ptr, [[maybe_unused]] size_t n) noexcept -> void {
3944
kphp::memory::script::free(ptr);
4045
}

runtime-light/coroutine/detail/when-all.h

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -155,6 +155,11 @@ class when_all_task_promise_base : public kphp::coro::async_stack_element {
155155
return kphp::memory::script::alloc(n);
156156
}
157157

158+
template<typename... Args>
159+
auto operator new(size_t n, std::align_val_t al, [[maybe_unused]] Args&&... args) noexcept -> void* {
160+
return kphp::memory::script::alloc_aligned(n, al);
161+
}
162+
158163
auto operator delete(void* ptr, [[maybe_unused]] size_t n) noexcept -> void {
159164
kphp::memory::script::free(ptr);
160165
}

runtime-light/coroutine/detail/when-any.h

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -165,6 +165,11 @@ class when_any_task_promise_base : public kphp::coro::async_stack_element {
165165
return kphp::memory::script::alloc(n);
166166
}
167167

168+
template<typename... Args>
169+
auto operator new(size_t n, std::align_val_t al, [[maybe_unused]] Args&&... args) noexcept -> void* {
170+
return kphp::memory::script::alloc_aligned(n, al);
171+
}
172+
168173
auto operator delete(void* ptr, [[maybe_unused]] size_t n) noexcept -> void {
169174
kphp::memory::script::free(ptr);
170175
}

runtime-light/coroutine/shared-task.h

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -148,6 +148,11 @@ struct promise_base : kphp::coro::async_stack_element {
148148
return kphp::memory::script::alloc(n);
149149
}
150150

151+
template<typename... Args>
152+
auto operator new(size_t n, std::align_val_t al, [[maybe_unused]] Args&&... args) noexcept -> void* {
153+
return kphp::memory::script::alloc_aligned(n, al);
154+
}
155+
151156
auto operator delete(void* ptr, [[maybe_unused]] size_t n) noexcept -> void {
152157
kphp::memory::script::free(ptr);
153158
}

runtime-light/coroutine/task.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -74,7 +74,7 @@ struct promise_base : kphp::coro::async_stack_element {
7474
return kphp::memory::script::alloc_aligned(n, al);
7575
}
7676

77-
auto operator delete([[maybe_unused]] void* ptr, [[maybe_unused]] size_t n) noexcept -> void {
77+
auto operator delete(void* ptr, [[maybe_unused]] size_t n) noexcept -> void {
7878
kphp::memory::script::free(ptr);
7979
}
8080

0 commit comments

Comments
 (0)