summaryrefslogtreecommitdiff
path: root/ops/README.md
diff options
context:
space:
mode:
authorDivy Srivastava <dj.srivastava23@gmail.com>2022-11-27 05:54:28 -0800
committerGitHub <noreply@github.com>2022-11-27 19:24:28 +0530
commitca66978a5aadddf7895b49b44076c574e7e6a0b0 (patch)
tree65d93f524bc5fea23cef4e75b02de275833158e1 /ops/README.md
parent9ffc6acdbb3326dde74c803332547b0ae33e483a (diff)
feat(ops): fast calls for Wasm (#16776)
This PR introduces Wasm ops. These calls are optimized for entry from Wasm land. The `#[op(wasm)]` attribute is opt-in. Last parameter `Option<&mut [u8]>` is the memory slice of the Wasm module *when entered from a Fast API call*. Otherwise, the user is expected to implement logic to obtain the memory if `None` ```rust #[op(wasm)] pub fn op_args_get( offset: i32, buffer_offset: i32, memory: Option<&mut [u8]>, ) { // ... } ```
Diffstat (limited to 'ops/README.md')
-rw-r--r--ops/README.md21
1 files changed, 19 insertions, 2 deletions
diff --git a/ops/README.md b/ops/README.md
index 441b526ca..39d860663 100644
--- a/ops/README.md
+++ b/ops/README.md
@@ -34,8 +34,8 @@ Cases where code is optimized away:
The macro will infer and try to auto generate V8 fast API call trait impl for
`sync` ops with:
-- arguments: integers, bool, `&mut OpState`, `&[u8]`, &mut [u8]`,`&[u32]`,`&mut
- [u32]`
+- arguments: integers, bool, `&mut OpState`, `&[u8]`, `&mut [u8]`, `&[u32]`,
+ `&mut [u32]`
- return_type: integers, bool
The `#[op(fast)]` attribute should be used to enforce fast call generation at
@@ -43,3 +43,20 @@ compile time.
Trait gen for `async` ops & a ZeroCopyBuf equivalent type is planned and will be
added soon.
+
+### Wasm calls
+
+The `#[op(wasm)]` attribute should be used for calls expected to be called from
+Wasm. This enables the fast call generation and allows seamless `WasmMemory`
+integration for generic and fast calls.
+
+```rust
+#[op(wasm)]
+pub fn op_args_get(
+ offset: i32,
+ buffer_offset: i32,
+ memory: Option<&[u8]>, // Must be last parameter. Some(..) when entered from Wasm.
+) {
+ // ...
+}
+```