Page Menu
Home
Phorge
Search
Configure Global Search
Log In
Files
F2921813
sugar.h
No One
Temporary
Actions
Download File
Edit File
Delete File
View Transforms
Subscribe
Flag For Later
Award Token
Size
1 KB
Referenced Files
None
Subscribers
None
sugar.h
View Options
#ifndef SUGAR_H
#define SUGAR_H
#include
"types.h"
#include
<stddef.h>
#include
<stdlib.h>
#include
<utarray.h>
#include
<minicoro.h>
#define CORO_MALLOC(size) calloc(1, size)
#define CORO_FREE(ptr) free(ptr)
#define CORO_PER_TICK_LIMIT 100000
typedef
enum
{
CORO_ASYNC_AWAIT
,
CORO_GENERATOR
,
CORO_ASYNC_GENERATOR
}
coroutine_type_t
;
typedef
struct
coroutine
{
struct
js
*
js
;
coroutine_type_t
type
;
jsval_t
scope
;
jsval_t
this_val
;
jsval_t
super_val
;
jsval_t
new_target
;
jsval_t
awaited_promise
;
jsval_t
result
;
jsval_t
async_func
;
jsval_t
*
args
;
int
nargs
;
bool
is_settled
;
bool
is_error
;
bool
is_done
;
jsoff_t
resume_point
;
jsval_t
yield_value
;
struct
coroutine
*
prev
;
struct
coroutine
*
next
;
mco_coro
*
mco
;
bool
mco_started
;
bool
is_ready
;
struct
for_let_ctx
*
for_let_stack
;
int
for_let_stack_len
;
int
for_let_stack_cap
;
UT_array
*
scope_stack
;
}
coroutine_t
;
typedef
struct
{
coroutine_t
*
head
;
coroutine_t
*
tail
;
}
coroutine_queue_t
;
typedef
struct
{
struct
js
*
js
;
const
char
*
code
;
size_t
code_len
;
jsval_t
closure_scope
;
jsval_t
result
;
jsval_t
promise
;
bool
has_error
;
coroutine_t
*
coro
;
}
async_exec_context_t
;
typedef
struct
{
jsval_t
scope
;
UT_array
*
scope_stack
;
}
coro_saved_state_t
;
extern
coroutine_queue_t
pending_coroutines
;
extern
uint32_t
coros_this_tick
;
void
enqueue_coroutine
(
coroutine_t
*
coro
);
void
remove_coroutine
(
coroutine_t
*
coro
);
void
free_coroutine
(
coroutine_t
*
coro
);
coro_saved_state_t
coro_enter
(
struct
js
*
js
,
coroutine_t
*
coro
);
void
coro_leave
(
struct
js
*
js
,
coroutine_t
*
coro
,
coro_saved_state_t
saved
);
jsval_t
start_async_in_coroutine
(
struct
js
*
js
,
const
char
*
code
,
size_t
code_len
,
jsval_t
closure_scope
,
jsval_t
*
args
,
int
nargs
);
jsval_t
resume_coroutine_wrapper
(
struct
js
*
js
,
jsval_t
*
args
,
int
nargs
);
jsval_t
reject_coroutine_wrapper
(
struct
js
*
js
,
jsval_t
*
args
,
int
nargs
);
bool
has_ready_coroutines
(
void
);
bool
has_pending_coroutines
(
void
);
#endif
File Metadata
Details
Attached
Mime Type
text/x-c
Expires
Fri, Mar 27, 11:05 AM (2 d)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
513125
Default Alt Text
sugar.h (1 KB)
Attached To
Mode
rANT Ant
Attached
Detach File
Event Timeline
Log In to Comment