aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/include/janet.h
diff options
context:
space:
mode:
authorCalvin Rose <calsrose@gmail.com>2021-07-16 20:59:03 -0500
committerCalvin Rose <calsrose@gmail.com>2021-07-16 20:59:03 -0500
commit1ef6db16eda21f4b8cbb73682dcd388e36fe1202 (patch)
treeaabff07d725707e548cf45829bf482e0f3d60000 /src/include/janet.h
parentDelete jpm and related testing from this repository. (diff)
Add janet_vm_save and janet_vm_load.
This lets a user multiplex multiple Janet VMs on a single thread or process if they are willing to implement context switching themselves.
Diffstat (limited to 'src/include/janet.h')
-rw-r--r--src/include/janet.h7
1 files changed, 7 insertions, 0 deletions
diff --git a/src/include/janet.h b/src/include/janet.h
index 296df0e6..f07074dd 100644
--- a/src/include/janet.h
+++ b/src/include/janet.h
@@ -365,6 +365,9 @@ typedef enum {
JANET_STATUS_ALIVE
} JanetFiberStatus;
+/* For encapsulating all thread-local Janet state (except natives) */
+typedef struct JanetVM JanetVM;
+
/* Use type punning for GC objects */
typedef struct JanetGCObject JanetGCObject;
@@ -1641,6 +1644,10 @@ JANET_API int32_t janet_sorted_keys(const JanetKV *dict, int32_t cap, int32_t *i
/* VM functions */
JANET_API int janet_init(void);
JANET_API void janet_deinit(void);
+JANET_API JanetVM *janet_vm_alloc(void);
+JANET_API void janet_vm_free(JanetVM *vm);
+JANET_API void janet_vm_save(JanetVM *into);
+JANET_API void janet_vm_load(JanetVM *from);
JANET_API JanetSignal janet_continue(JanetFiber *fiber, Janet in, Janet *out);
JANET_API JanetSignal janet_continue_signal(JanetFiber *fiber, Janet in, Janet *out, JanetSignal sig);
JANET_API JanetSignal janet_pcall(JanetFunction *fun, int32_t argn, const Janet *argv, Janet *out, JanetFiber **f);