diff options
author | Bert Belder <bertbelder@gmail.com> | 2018-10-07 23:48:06 +0200 |
---|---|---|
committer | Bert Belder <bertbelder@gmail.com> | 2018-10-08 18:19:32 +0200 |
commit | e742af10aa67dc90a68fcb60b8e70733fd753e68 (patch) | |
tree | bc9d7360c5a8cb94e93f9dabf5749b94addc0c18 /libdeno/deno.h | |
parent | d86e5d2605c68606c8073d1b563d3389ea93c112 (diff) |
Abide by the rules when passing Isolate between c and rust
Ensure that at most one mutable Isolate reference exists at a time.
`deno_execute()` and `deno_respond()` now borrow a reference to the rust-side
isolate from the caller. When we need a reference to the isolate while one of
these functions is on the stack, `deno_get_data()` can be used to borrow back
that reference.
Diffstat (limited to 'libdeno/deno.h')
-rw-r--r-- | libdeno/deno.h | 7 |
1 files changed, 4 insertions, 3 deletions
diff --git a/libdeno/deno.h b/libdeno/deno.h index d3c2cf762..c166c7fde 100644 --- a/libdeno/deno.h +++ b/libdeno/deno.h @@ -30,7 +30,7 @@ void deno_init(); const char* deno_v8_version(); void deno_set_v8_flags(int* argc, char** argv); -Deno* deno_new(void* user_data, deno_recv_cb cb); +Deno* deno_new(deno_recv_cb cb); void deno_delete(Deno* d); // Returns the void* user_data provided in deno_new. @@ -39,7 +39,8 @@ void* deno_get_data(Deno*); // Returns false on error. // Get error text with deno_last_exception(). // 0 = fail, 1 = success -int deno_execute(Deno* d, const char* js_filename, const char* js_source); +int deno_execute(Deno* d, void* user_data, const char* js_filename, + const char* js_source); // deno_respond sends up to one message back for every deno_recv_cb made. // @@ -59,7 +60,7 @@ int deno_execute(Deno* d, const char* js_filename, const char* js_source); // // A non-zero return value, means a JS exception was encountered during the // libdeno.recv() callback. Check deno_last_exception() for exception text. -int deno_respond(Deno* d, int32_t req_id, deno_buf buf); +int deno_respond(Deno* d, void* user_data, int32_t req_id, deno_buf buf); const char* deno_last_exception(Deno* d); |