summaryrefslogtreecommitdiff
path: root/ext
diff options
context:
space:
mode:
authorBartek IwaƄczuk <biwanczuk@gmail.com>2023-10-25 13:43:38 +0200
committerGitHub <noreply@github.com>2023-10-25 13:43:38 +0200
commit093b3eee58181ec45839d0fe10b8157326a102b2 (patch)
tree33f1cb35bfef7a85335d46ca7cb055459c20d637 /ext
parent6c60859407a39e579a9f7101b254c874af85ca68 (diff)
chore: update deno_core and port all remaining ops to `op2` (#20954)
Signed-off-by: Matt Mastracci <matthew@mastracci.com> Co-authored-by: Matt Mastracci <matthew@mastracci.com>
Diffstat (limited to 'ext')
-rw-r--r--ext/http/http_next.rs3
-rw-r--r--ext/node/ops/http2.rs6
-rw-r--r--ext/node/ops/v8.rs8
-rw-r--r--ext/web/lib.rs24
-rw-r--r--ext/web/stream_resource.rs2
-rw-r--r--ext/web/timers.rs7
-rw-r--r--ext/websocket/lib.rs17
7 files changed, 32 insertions, 35 deletions
diff --git a/ext/http/http_next.rs b/ext/http/http_next.rs
index 522df280f..7fc396b38 100644
--- a/ext/http/http_next.rs
+++ b/ext/http/http_next.rs
@@ -661,8 +661,7 @@ pub fn op_http_set_response_body_text(
}
}
-// Skipping `fast` because we prefer an owned buffer here.
-#[op2]
+#[op2(fast)]
pub fn op_http_set_response_body_bytes(
#[smi] slab_id: SlabId,
#[buffer] buffer: JsBuffer,
diff --git a/ext/node/ops/http2.rs b/ext/node/ops/http2.rs
index e0dfa1396..676ef7e6e 100644
--- a/ext/node/ops/http2.rs
+++ b/ext/node/ops/http2.rs
@@ -9,7 +9,6 @@ use std::task::Poll;
use bytes::Bytes;
use deno_core::error::AnyError;
use deno_core::futures::future::poll_fn;
-use deno_core::op;
use deno_core::op2;
use deno_core::serde::Serialize;
use deno_core::AsyncRefCell;
@@ -157,10 +156,11 @@ pub async fn op_http2_listen(
)
}
-#[op]
+#[op2(async)]
+#[serde]
pub async fn op_http2_accept(
state: Rc<RefCell<OpState>>,
- rid: ResourceId,
+ #[smi] rid: ResourceId,
) -> Result<
Option<(Vec<(ByteString, ByteString)>, ResourceId, ResourceId)>,
AnyError,
diff --git a/ext/node/ops/v8.rs b/ext/node/ops/v8.rs
index fdfc559d7..dbb84e932 100644
--- a/ext/node/ops/v8.rs
+++ b/ext/node/ops/v8.rs
@@ -1,5 +1,4 @@
// Copyright 2018-2023 the Deno authors. All rights reserved. MIT license.
-use deno_core::op;
use deno_core::op2;
use deno_core::v8;
@@ -8,8 +7,11 @@ pub fn op_v8_cached_data_version_tag() -> u32 {
v8::script_compiler::cached_data_version_tag()
}
-#[op(v8)]
-fn op_v8_get_heap_statistics(scope: &mut v8::HandleScope, buffer: &mut [f64]) {
+#[op2]
+pub fn op_v8_get_heap_statistics(
+ scope: &mut v8::HandleScope,
+ #[buffer] buffer: &mut [f64],
+) {
let mut stats = v8::HeapStatistics::default();
scope.get_heap_statistics(&mut stats);
diff --git a/ext/web/lib.rs b/ext/web/lib.rs
index f4789123b..4e0d97f5c 100644
--- a/ext/web/lib.rs
+++ b/ext/web/lib.rs
@@ -10,9 +10,7 @@ mod timers;
use deno_core::error::range_error;
use deno_core::error::type_error;
use deno_core::error::AnyError;
-use deno_core::op;
use deno_core::op2;
-use deno_core::serde_v8;
use deno_core::url::Url;
use deno_core::v8;
use deno_core::ByteString;
@@ -366,14 +364,14 @@ impl Resource for TextDecoderResource {
}
}
-#[op(v8)]
-fn op_encoding_encode_into_fallback(
+#[op2(fast(op_encoding_encode_into_fast))]
+fn op_encoding_encode_into(
scope: &mut v8::HandleScope,
- input: serde_v8::Value,
- buffer: &mut [u8],
- out_buf: &mut [u32],
+ input: v8::Local<v8::Value>,
+ #[buffer] buffer: &mut [u8],
+ #[buffer] out_buf: &mut [u32],
) -> Result<(), AnyError> {
- let s = v8::Local::<v8::String>::try_from(input.v8_value)?;
+ let s = v8::Local::<v8::String>::try_from(input)?;
let mut nchars = 0;
out_buf[1] = s.write_utf8(
@@ -387,11 +385,11 @@ fn op_encoding_encode_into_fallback(
Ok(())
}
-#[op(fast, slow = op_encoding_encode_into_fallback)]
-fn op_encoding_encode_into(
- input: Cow<'_, str>,
- buffer: &mut [u8],
- out_buf: &mut [u32],
+#[op2(fast)]
+fn op_encoding_encode_into_fast(
+ #[string] input: Cow<'_, str>,
+ #[buffer] buffer: &mut [u8],
+ #[buffer] out_buf: &mut [u32],
) {
// Since `input` is already UTF-8, we can simply find the last UTF-8 code
// point boundary from input that fits in `buffer`, and copy the bytes up to
diff --git a/ext/web/stream_resource.rs b/ext/web/stream_resource.rs
index b35d4c302..212f1e956 100644
--- a/ext/web/stream_resource.rs
+++ b/ext/web/stream_resource.rs
@@ -491,7 +491,7 @@ pub fn op_readable_stream_resource_write_buf(
/// Write to the channel synchronously, returning 0 if the channel was closed, 1 if we wrote
/// successfully, 2 if the channel was full and we need to block.
-#[op2]
+#[op2(fast)]
pub fn op_readable_stream_resource_write_sync(
sender: *const c_void,
#[buffer] buffer: JsBuffer,
diff --git a/ext/web/timers.rs b/ext/web/timers.rs
index 67beee599..7c83e8f37 100644
--- a/ext/web/timers.rs
+++ b/ext/web/timers.rs
@@ -4,7 +4,6 @@
use crate::hr_timer_lock::hr_timer_lock;
use deno_core::error::AnyError;
-use deno_core::op;
use deno_core::op2;
use deno_core::CancelFuture;
use deno_core::CancelHandle;
@@ -80,11 +79,11 @@ pub fn op_timer_handle(state: &mut OpState) -> ResourceId {
/// [`TimerHandle`] resource given by `rid` has been canceled.
///
/// If the timer is canceled, this returns `false`. Otherwise, it returns `true`.
-#[op(deferred)]
+#[op2(async(deferred), fast)]
pub async fn op_sleep(
state: Rc<RefCell<OpState>>,
- millis: u64,
- rid: ResourceId,
+ #[number] millis: u64,
+ #[smi] rid: ResourceId,
) -> Result<bool, AnyError> {
let handle = state.borrow().resource_table.get::<TimerHandle>(rid)?;
diff --git a/ext/websocket/lib.rs b/ext/websocket/lib.rs
index 48a22431b..83d553eeb 100644
--- a/ext/websocket/lib.rs
+++ b/ext/websocket/lib.rs
@@ -4,7 +4,6 @@ use bytes::Bytes;
use deno_core::error::invalid_hostname;
use deno_core::error::type_error;
use deno_core::error::AnyError;
-use deno_core::op;
use deno_core::op2;
use deno_core::url;
use deno_core::AsyncMutFuture;
@@ -472,11 +471,11 @@ pub fn op_ws_send_text(
}
/// Async version of send. Does not update buffered amount as we rely on the socket itself for backpressure.
-#[op(fast)]
+#[op2(async)]
pub async fn op_ws_send_binary_async(
state: Rc<RefCell<OpState>>,
- rid: ResourceId,
- data: JsBuffer,
+ #[smi] rid: ResourceId,
+ #[buffer] data: JsBuffer,
) -> Result<(), AnyError> {
let resource = state
.borrow_mut()
@@ -490,11 +489,11 @@ pub async fn op_ws_send_binary_async(
}
/// Async version of send. Does not update buffered amount as we rely on the socket itself for backpressure.
-#[op(fast)]
+#[op2(async)]
pub async fn op_ws_send_text_async(
state: Rc<RefCell<OpState>>,
- rid: ResourceId,
- data: String,
+ #[smi] rid: ResourceId,
+ #[string] data: String,
) -> Result<(), AnyError> {
let resource = state
.borrow_mut()
@@ -609,10 +608,10 @@ pub fn op_ws_get_error(state: &mut OpState, #[smi] rid: ResourceId) -> String {
resource.error.take().unwrap_or_default()
}
-#[op(fast)]
+#[op2(async)]
pub async fn op_ws_next_event(
state: Rc<RefCell<OpState>>,
- rid: ResourceId,
+ #[smi] rid: ResourceId,
) -> u16 {
let Ok(resource) = state
.borrow_mut()