summaryrefslogtreecommitdiff
path: root/stackless_coroutine.c
diff options
context:
space:
mode:
authorMitya Selivanov <automainint@guattari.tech>2025-04-26 02:10:48 +0200
committerMitya Selivanov <automainint@guattari.tech>2025-04-26 02:10:48 +0200
commit72b9fc8c1515c12600513fd9759f9b9034825726 (patch)
tree130972ec171ced5d68cd13a493f185cfd4b4a52d /stackless_coroutine.c
parent8a4b4bed8259397c6d958766573a0bfa25909b98 (diff)
downloadreduced_system_layer-72b9fc8c1515c12600513fd9759f9b9034825726.zip
Pixels scaling tests and perf
Diffstat (limited to 'stackless_coroutine.c')
-rw-r--r--stackless_coroutine.c16
1 files changed, 9 insertions, 7 deletions
diff --git a/stackless_coroutine.c b/stackless_coroutine.c
index 73a55e4..79d93ae 100644
--- a/stackless_coroutine.c
+++ b/stackless_coroutine.c
@@ -67,11 +67,13 @@ typedef struct {
#define CORO_PROMISE_FROM(coro_) (*((Coro_Promise_Void *) (coro_)))
-#ifdef CORO_ENABLE_CUSTOM_DISPATCH
+// TODO: Only use static dispatch?
+
+#ifdef ENABLE_CORO_CUSTOM_DISPATCH
// Application should implement this procedure if custom dispatch is enabled.
-void stackless_coroutine_dispatch(void *promise);
+void dispatch_stackless_coroutine(void *promise);
#else
-static void stackless_coroutine_dispatch(void *promise) {
+static void dispatch_stackless_coroutine(void *promise) {
// Dynamic dispatch by default.
CORO_PROMISE_FROM(promise)._state_machine(promise);
}
@@ -131,10 +133,10 @@ static void stackless_coroutine_dispatch(void *promise) {
CORO_STATIC(coro_, Coro_Void_, __VA_ARGS__)
#define coro_resume(promise_) \
- stackless_coroutine_dispatch(&(promise_))
+ dispatch_stackless_coroutine(&(promise_))
#define coro_next(promise_) \
- (stackless_coroutine_dispatch(&(promise_)), (promise_).return_value)
+ (dispatch_stackless_coroutine(&(promise_)), (promise_).return_value)
#define yield(...) \
do { \
@@ -175,7 +177,7 @@ static void stackless_coroutine_dispatch(void *promise) {
case CORO_LINE_(): \
if ((promise_)._index != -1) { \
self->_index = CORO_LINE_(); \
- stackless_coroutine_dispatch(&(promise_)); \
+ dispatch_stackless_coroutine(&(promise_)); \
} \
if ((promise_)._index != -1) \
return; \
@@ -188,7 +190,7 @@ static void stackless_coroutine_dispatch(void *promise) {
case CORO_LINE_(): \
if ((promise_)._index != -1) { \
self->_index = CORO_LINE_(); \
- stackless_coroutine_dispatch(&(promise_)); \
+ dispatch_stackless_coroutine(&(promise_)); \
self->return_value = (promise_).return_value; \
return; \
} \