diff options
Diffstat (limited to 'core/bindings.rs')
-rw-r--r-- | core/bindings.rs | 22 |
1 files changed, 9 insertions, 13 deletions
diff --git a/core/bindings.rs b/core/bindings.rs index 8a32bc5da..edf115d27 100644 --- a/core/bindings.rs +++ b/core/bindings.rs @@ -309,21 +309,17 @@ fn opcall<'s>( } }; - // Structured args - let v = args.get(2); + // Deserializable args (may be structured args or ZeroCopyBuf) + let a = args.get(2); + let b = args.get(3); - // Buf arg (optional) - let arg3 = args.get(3); - let buf: Option<ZeroCopyBuf> = match serde_v8::from_v8(scope, arg3) { - Ok(buf) => buf, - Err(err) => { - throw_type_error(scope, format!("Err with buf arg: {}", err)); - return; - } + let payload = OpPayload { + scope, + a, + b, + promise_id, }; - - let payload = OpPayload::new(scope, v, promise_id); - let op = OpTable::route_op(op_id, state.op_state.clone(), payload, buf); + let op = OpTable::route_op(op_id, state.op_state.clone(), payload); match op { Op::Sync(result) => { rv.set(result.to_v8(scope).unwrap()); |