summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMatt Mastracci <matthew@mastracci.com>2023-11-08 12:46:13 -0700
committerGitHub <noreply@github.com>2023-11-08 20:46:13 +0100
commitf8d1d84c5a22fffbb2b39e531216e0a344a74988 (patch)
tree38b3b1abb27ce2ec97267db8502cfe36841a8175
parente4593873a9c791238685dfbb45e64b4485884174 (diff)
chore(ext/web): migrate to deno_core typed externals (#21114)
Use our safer typed externals for the external required for resource streams.
-rw-r--r--Cargo.lock73
-rw-r--r--Cargo.toml2
-rw-r--r--ext/web/stream_resource.rs26
3 files changed, 48 insertions, 53 deletions
diff --git a/Cargo.lock b/Cargo.lock
index 05507c1e0..9741b8c47 100644
--- a/Cargo.lock
+++ b/Cargo.lock
@@ -974,29 +974,6 @@ dependencies = [
]
[[package]]
-name = "deno-proc-macro-rules"
-version = "0.3.2"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "3c65c2ffdafc1564565200967edc4851c7b55422d3913466688907efd05ea26f"
-dependencies = [
- "deno-proc-macro-rules-macros",
- "proc-macro2",
- "syn 2.0.37",
-]
-
-[[package]]
-name = "deno-proc-macro-rules-macros"
-version = "0.3.2"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "3047b312b7451e3190865713a4dd6e1f821aed614ada219766ebc3024a690435"
-dependencies = [
- "once_cell",
- "proc-macro2",
- "quote",
- "syn 2.0.37",
-]
-
-[[package]]
name = "deno_ast"
version = "0.31.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -1113,9 +1090,9 @@ dependencies = [
[[package]]
name = "deno_core"
-version = "0.227.0"
+version = "0.228.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "d6218d09d15ef76df4f81178b9d97d176d7e780565c323a42c4860b67c214101"
+checksum = "78996b42de9975a052cfc9234be39eabf3d6f7721e7cfe79f14a5bd0a252b552"
dependencies = [
"anyhow",
"bytes",
@@ -1539,15 +1516,15 @@ dependencies = [
[[package]]
name = "deno_ops"
-version = "0.103.0"
+version = "0.104.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "14decb93ef6058b9c237ca86d8807563cc4ca19a3c0424e9ea8f1df3045723ad"
+checksum = "a06291034a0ad5293efcfa01826e4af6adabdfd513b766e2f2cc60dd6c75a94f"
dependencies = [
- "deno-proc-macro-rules",
"lazy-regex",
"once_cell",
"pmutil",
"proc-macro-crate",
+ "proc-macro-rules",
"proc-macro2",
"quote",
"regex",
@@ -3983,11 +3960,10 @@ dependencies = [
[[package]]
name = "proc-macro-crate"
-version = "1.3.1"
+version = "2.0.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "7f4c021e1093a56626774e81216a4ce732a735e5bad4868a03f3ed65ca0c3919"
+checksum = "7e8366a6159044a37876a2b9817124296703c586a5c92e2c53751fa06d8d43e8"
dependencies = [
- "once_cell",
"toml_edit",
]
@@ -4022,6 +3998,29 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "dc375e1527247fe1a97d8b7156678dfe7c1af2fc075c9a4db3690ecd2a148068"
[[package]]
+name = "proc-macro-rules"
+version = "0.4.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "07c277e4e643ef00c1233393c673f655e3672cf7eb3ba08a00bdd0ea59139b5f"
+dependencies = [
+ "proc-macro-rules-macros",
+ "proc-macro2",
+ "syn 2.0.37",
+]
+
+[[package]]
+name = "proc-macro-rules-macros"
+version = "0.4.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "207fffb0fe655d1d47f6af98cc2793405e85929bdbc420d685554ff07be27ac7"
+dependencies = [
+ "once_cell",
+ "proc-macro2",
+ "quote",
+ "syn 2.0.37",
+]
+
+[[package]]
name = "proc-macro2"
version = "1.0.67"
source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -4783,9 +4782,9 @@ dependencies = [
[[package]]
name = "serde_v8"
-version = "0.136.0"
+version = "0.137.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "813256f4379caece177ca747ffa35a7f4c0422cec9258f9cecaa9b15ded0cc5c"
+checksum = "2c22cbbd634a5b13e9c6a0c6718ae9a8da3696aec5e5eff48fb90e4c9be0809e"
dependencies = [
"bytes",
"derive_more",
@@ -5879,15 +5878,15 @@ dependencies = [
[[package]]
name = "toml_datetime"
-version = "0.6.3"
+version = "0.6.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "7cda73e2f1397b1262d6dfdcef8aafae14d1de7748d66822d3bfeeb6d03e5e4b"
+checksum = "3550f4e9685620ac18a50ed434eb3aec30db8ba93b0287467bca5826ea25baf1"
[[package]]
name = "toml_edit"
-version = "0.19.15"
+version = "0.20.7"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "1b5bb770da30e5cbfde35a2d7b9b8a2c4b8ef89548a7a6aeab5c9a576e3e7421"
+checksum = "70f427fce4d84c72b5b732388bf4a9f4531b53f74e2887e3ecb2481f68f66d81"
dependencies = [
"indexmap 2.0.2",
"toml_datetime",
diff --git a/Cargo.toml b/Cargo.toml
index e42a12cd5..07a828443 100644
--- a/Cargo.toml
+++ b/Cargo.toml
@@ -40,7 +40,7 @@ repository = "https://github.com/denoland/deno"
[workspace.dependencies]
deno_ast = { version = "0.31.2", features = ["transpiling"] }
-deno_core = { version = "0.227.0" }
+deno_core = { version = "0.228.0" }
deno_runtime = { version = "0.130.0", path = "./runtime" }
napi_sym = { version = "0.52.0", path = "./cli/napi/sym" }
diff --git a/ext/web/stream_resource.rs b/ext/web/stream_resource.rs
index 212f1e956..93d10f806 100644
--- a/ext/web/stream_resource.rs
+++ b/ext/web/stream_resource.rs
@@ -2,6 +2,7 @@
use bytes::BytesMut;
use deno_core::error::type_error;
use deno_core::error::AnyError;
+use deno_core::external;
use deno_core::op2;
use deno_core::serde_v8::V8Slice;
use deno_core::unsync::TaskQueue;
@@ -9,6 +10,7 @@ use deno_core::AsyncResult;
use deno_core::BufView;
use deno_core::CancelFuture;
use deno_core::CancelHandle;
+use deno_core::ExternalPointer;
use deno_core::JsBuffer;
use deno_core::OpState;
use deno_core::RcLike;
@@ -290,17 +292,6 @@ impl BoundedBufferChannel {
self.inner.borrow_mut()
}
- pub fn into_raw(self) -> *const BoundedBufferChannel {
- Rc::into_raw(self.inner) as _
- }
-
- pub unsafe fn clone_from_raw(ptr: *const BoundedBufferChannel) -> Self {
- let rc = Rc::from_raw(ptr as *const RefCell<BoundedBufferChannelInner>);
- let clone = rc.clone();
- std::mem::forget(rc);
- std::mem::transmute(clone)
- }
-
pub fn read(&self, limit: usize) -> Result<Option<BufView>, AnyError> {
self.inner().read(limit)
}
@@ -460,19 +451,24 @@ pub fn op_readable_stream_resource_get_sink(
else {
return std::ptr::null();
};
- resource.channel.clone().into_raw() as _
+ ExternalPointer::new(resource.channel.clone()).into_raw()
}
+external!(BoundedBufferChannel, "stream resource channel");
+
fn get_sender(sender: *const c_void) -> BoundedBufferChannel {
// SAFETY: We know this is a valid v8::External
- unsafe { BoundedBufferChannel::clone_from_raw(sender as _) }
+ unsafe {
+ ExternalPointer::<BoundedBufferChannel>::from_raw(sender)
+ .unsafely_deref()
+ .clone()
+ }
}
fn drop_sender(sender: *const c_void) {
// SAFETY: We know this is a valid v8::External
unsafe {
- assert!(!sender.is_null());
- _ = Rc::from_raw(sender as *mut RefCell<BoundedBufferChannelInner>);
+ ExternalPointer::<BoundedBufferChannel>::from_raw(sender).unsafely_take();
}
}