diff --git a/Cargo.lock b/Cargo.lock index 41c1a1c1d6..e8cd14dfc7 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -5421,9 +5421,9 @@ dependencies = [ [[package]] name = "v8" -version = "0.54.0" +version = "0.55.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3b63103bd7caa4c3571e8baafe58f3e04818df70505304ed814737e655d1d8d6" +checksum = "46cd4f562bce7520fbb511850c5488366264caf346be221cf7e908f51ac33dbc" dependencies = [ "bitflags", "fslock", diff --git a/cli/napi/js_native_api.rs b/cli/napi/js_native_api.rs index 07b583beb3..a0605af11c 100644 --- a/cli/napi/js_native_api.rs +++ b/cli/napi/js_native_api.rs @@ -1260,10 +1260,11 @@ fn napi_delete_reference(env: *mut Env, _nref: napi_ref) -> Result { } #[napi_sym::napi_sym] -fn napi_detach_arraybuffer(_env: *mut Env, value: napi_value) -> Result { +fn napi_detach_arraybuffer(env: *mut Env, value: napi_value) -> Result { + let env: &mut Env = env.as_mut().ok_or(Error::InvalidArg)?; let value = transmute::>(value); let ab = v8::Local::::try_from(value).unwrap(); - ab.detach(); + ab.detach(v8::undefined(&mut env.scope()).into()); Ok(()) } diff --git a/core/Cargo.toml b/core/Cargo.toml index c72497bbfc..bc51af72c4 100644 --- a/core/Cargo.toml +++ b/core/Cargo.toml @@ -35,7 +35,7 @@ serde_v8 = { version = "0.69.0", path = "../serde_v8" } smallvec = "1.8" sourcemap = "6.1" url = { version = "2.3.1", features = ["serde", "expose_internals"] } -v8 = { version = "0.54.0", default-features = false } +v8 = { version = "0.55.0", default-features = false } [[example]] name = "http_bench_json_ops" diff --git a/core/ops_builtin_v8.rs b/core/ops_builtin_v8.rs index 7c79754897..c72e114bd5 100644 --- a/core/ops_builtin_v8.rs +++ b/core/ops_builtin_v8.rs @@ -472,7 +472,7 @@ fn op_serialize( } let backing_store = buf.get_backing_store(); - buf.detach(); + buf.detach(v8::undefined(scope).into()); let id = shared_array_buffer_store.insert(backing_store); value_serializer.transfer_array_buffer(id, buf); let id = v8::Number::new(scope, id as f64).into(); diff --git a/core/runtime.rs b/core/runtime.rs index 376e0beb40..e85b7296af 100644 --- a/core/runtime.rs +++ b/core/runtime.rs @@ -197,14 +197,10 @@ fn v8_init( v8::icu::set_common_data_71(&ICU_DATA.0).unwrap(); let flags = concat!( - " --experimental-wasm-threads", " --wasm-test-streaming", " --harmony-import-assertions", " --no-validate-asm", " --turbo_fast_api_calls", - // This flag prevents "unresolved external reference" panic during - // build, which started happening in V8 10.6 - " --noexperimental-async-stack-tagging-api", " --harmony-change-array-by-copy", ); diff --git a/ext/web/lib.rs b/ext/web/lib.rs index f799f02e74..85fae2c64b 100644 --- a/ext/web/lib.rs +++ b/ext/web/lib.rs @@ -383,7 +383,7 @@ fn op_transfer_arraybuffer<'a>( return Err(type_error("ArrayBuffer is not detachable")); } let bs = ab.get_backing_store(); - ab.detach(); + ab.detach(v8::undefined(scope).into()); let ab = v8::ArrayBuffer::with_backing_store(scope, &bs); Ok(serde_v8::Value { v8_value: ab.into(), diff --git a/serde_v8/Cargo.toml b/serde_v8/Cargo.toml index 5f7c562140..e3d0f8133d 100644 --- a/serde_v8/Cargo.toml +++ b/serde_v8/Cargo.toml @@ -18,7 +18,7 @@ derive_more = "0.99.17" serde = { version = "1.0.136", features = ["derive"] } serde_bytes = "0.11" smallvec = { version = "1.8", features = ["union"] } -v8 = { version = "0.54.0", default-features = false } +v8 = { version = "0.55.0", default-features = false } [dev-dependencies] bencher = "0.1" diff --git a/serde_v8/magic/detached_buffer.rs b/serde_v8/magic/detached_buffer.rs index b35d4f66d0..78232cbe77 100644 --- a/serde_v8/magic/detached_buffer.rs +++ b/serde_v8/magic/detached_buffer.rs @@ -63,7 +63,7 @@ impl FromV8 for DetachedBuffer { return Err(crate::Error::ExpectedDetachable); } let store = b.get_backing_store(); - b.detach(); // Detach + b.detach(v8::undefined(scope).into()); // Detach Ok(Self(V8Slice { store, range })) } }