mirror of
https://github.com/denoland/deno.git
synced 2025-10-02 23:24:37 +00:00
refactor: convert ops to use serde_v8 (#10009)
This commit rewrites most of the ops to use "serde_v8" instead of "json" serialization.
This commit is contained in:
parent
284e6c3039
commit
2aed322dd5
49 changed files with 840 additions and 980 deletions
|
@ -4,8 +4,6 @@ use deno_core::error::bad_resource_id;
|
|||
use deno_core::error::null_opbuf;
|
||||
use deno_core::error::AnyError;
|
||||
use deno_core::futures::channel::oneshot;
|
||||
use deno_core::serde_json::json;
|
||||
use deno_core::serde_json::Value;
|
||||
use deno_core::OpState;
|
||||
use deno_core::Resource;
|
||||
use deno_core::ResourceId;
|
||||
|
@ -17,7 +15,7 @@ use std::rc::Rc;
|
|||
use std::time::Duration;
|
||||
|
||||
use super::error::DomExceptionOperationError;
|
||||
use super::error::WebGpuError;
|
||||
use super::error::WebGpuResult;
|
||||
|
||||
pub(crate) struct WebGpuBuffer(pub(crate) wgpu_core::id::BufferId);
|
||||
impl Resource for WebGpuBuffer {
|
||||
|
@ -47,7 +45,7 @@ pub fn op_webgpu_create_buffer(
|
|||
state: &mut OpState,
|
||||
args: CreateBufferArgs,
|
||||
_zero_copy: Option<ZeroCopyBuf>,
|
||||
) -> Result<Value, AnyError> {
|
||||
) -> Result<WebGpuResult, AnyError> {
|
||||
let instance = state.borrow::<super::Instance>();
|
||||
let device_resource = state
|
||||
.resource_table
|
||||
|
@ -70,10 +68,7 @@ pub fn op_webgpu_create_buffer(
|
|||
|
||||
let rid = state.resource_table.add(WebGpuBuffer(buffer));
|
||||
|
||||
Ok(json!({
|
||||
"rid": rid,
|
||||
"err": maybe_err.map(WebGpuError::from)
|
||||
}))
|
||||
Ok(WebGpuResult::rid_err(rid, maybe_err))
|
||||
}
|
||||
|
||||
#[derive(Deserialize)]
|
||||
|
@ -90,7 +85,7 @@ pub async fn op_webgpu_buffer_get_map_async(
|
|||
state: Rc<RefCell<OpState>>,
|
||||
args: BufferGetMapAsyncArgs,
|
||||
_bufs: Option<ZeroCopyBuf>,
|
||||
) -> Result<Value, AnyError> {
|
||||
) -> Result<WebGpuResult, AnyError> {
|
||||
let (sender, receiver) = oneshot::channel::<Result<(), AnyError>>();
|
||||
|
||||
let device;
|
||||
|
@ -164,7 +159,7 @@ pub async fn op_webgpu_buffer_get_map_async(
|
|||
|
||||
tokio::try_join!(device_poll_fut, receiver_fut)?;
|
||||
|
||||
Ok(json!({}))
|
||||
Ok(WebGpuResult::empty())
|
||||
}
|
||||
|
||||
#[derive(Deserialize)]
|
||||
|
@ -179,7 +174,7 @@ pub fn op_webgpu_buffer_get_mapped_range(
|
|||
state: &mut OpState,
|
||||
args: BufferGetMappedRangeArgs,
|
||||
zero_copy: Option<ZeroCopyBuf>,
|
||||
) -> Result<Value, AnyError> {
|
||||
) -> Result<WebGpuResult, AnyError> {
|
||||
let mut zero_copy = zero_copy.ok_or_else(null_opbuf)?;
|
||||
let instance = state.borrow::<super::Instance>();
|
||||
let buffer_resource = state
|
||||
|
@ -204,9 +199,7 @@ pub fn op_webgpu_buffer_get_mapped_range(
|
|||
.resource_table
|
||||
.add(WebGpuBufferMapped(slice_pointer, args.size as usize));
|
||||
|
||||
Ok(json!({
|
||||
"rid": rid,
|
||||
}))
|
||||
Ok(WebGpuResult::rid(rid))
|
||||
}
|
||||
|
||||
#[derive(Deserialize)]
|
||||
|
@ -220,7 +213,7 @@ pub fn op_webgpu_buffer_unmap(
|
|||
state: &mut OpState,
|
||||
args: BufferUnmapArgs,
|
||||
zero_copy: Option<ZeroCopyBuf>,
|
||||
) -> Result<Value, AnyError> {
|
||||
) -> Result<WebGpuResult, AnyError> {
|
||||
let mapped_resource = state
|
||||
.resource_table
|
||||
.take::<WebGpuBufferMapped>(args.mapped_rid)
|
||||
|
@ -242,5 +235,5 @@ pub fn op_webgpu_buffer_unmap(
|
|||
|
||||
let maybe_err = gfx_select!(buffer => instance.buffer_unmap(buffer)).err();
|
||||
|
||||
Ok(json!({ "err": maybe_err.map(WebGpuError::from) }))
|
||||
Ok(WebGpuResult::maybe_err(maybe_err))
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue