From 3dcfb04512c1f38f5f4b8fab683cdb3c6d30f235 Mon Sep 17 00:00:00 2001 From: Tobias Koppers Date: Thu, 8 Aug 2024 16:42:02 +0200 Subject: [PATCH 1/6] serialization fixups --- turbopack/crates/turbo-tasks/src/backend.rs | 4 ++-- turbopack/crates/turbo-tasks/src/id.rs | 2 +- turbopack/crates/turbo-tasks/src/task/shared_reference.rs | 3 ++- 3 files changed, 5 insertions(+), 4 deletions(-) diff --git a/turbopack/crates/turbo-tasks/src/backend.rs b/turbopack/crates/turbo-tasks/src/backend.rs index 10f208df7cae4..4c116ae9f44c8 100644 --- a/turbopack/crates/turbo-tasks/src/backend.rs +++ b/turbopack/crates/turbo-tasks/src/backend.rs @@ -188,7 +188,7 @@ mod ser { s.serialize_element::(&1)?; s.serialize_element(&FunctionAndArg::Borrowed { fn_type: *fn_type, - arg, + arg: &**arg, })?; s.serialize_element(this)?; s.end() @@ -207,7 +207,7 @@ mod ser { let arg = if let Some(method) = registry::get_trait(*trait_type).methods.get(method_name) { - method.arg_serializer.as_serialize(arg) + method.arg_serializer.as_serialize(&**arg) } else { return Err(serde::ser::Error::custom("Method not found")); }; diff --git a/turbopack/crates/turbo-tasks/src/id.rs b/turbopack/crates/turbo-tasks/src/id.rs index 6eefce9506067..4312e3ca184e8 100644 --- a/turbopack/crates/turbo-tasks/src/id.rs +++ b/turbopack/crates/turbo-tasks/src/id.rs @@ -176,6 +176,6 @@ impl<'de> Deserialize<'de> for TaskId { } } - deserializer.deserialize_u64(V) + deserializer.deserialize_u32(V) } } diff --git a/turbopack/crates/turbo-tasks/src/task/shared_reference.rs b/turbopack/crates/turbo-tasks/src/task/shared_reference.rs index bb1e94dda1d03..cef099af92569 100644 --- a/turbopack/crates/turbo-tasks/src/task/shared_reference.rs +++ b/turbopack/crates/turbo-tasks/src/task/shared_reference.rs @@ -149,7 +149,8 @@ impl<'de> Deserialize<'de> for TypedSharedReference { if let Some(seed) = registry::get_value_type(ty).get_any_deserialize_seed() { if let Some(value) = seq.next_element_seed(seed)? { - Ok(TypedSharedReference(ty, SharedReference::new(value.into()))) + let arc = triomphe::Arc::::from(value); + Ok(TypedSharedReference(ty, SharedReference(arc))) } else { Err(serde::de::Error::invalid_length( 1, From 0ac1b332139f86b1f94850a2bc7a0037d3e0d11f Mon Sep 17 00:00:00 2001 From: Tobias Koppers Date: Fri, 9 Aug 2024 11:00:18 +0200 Subject: [PATCH 2/6] use fork of triomphe --- Cargo.lock | 15 ++++++++++++--- Cargo.toml | 2 +- turbopack/crates/turbo-tasks/Cargo.toml | 2 +- 3 files changed, 14 insertions(+), 5 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index d1fb32520e7cb..865c4cbe45493 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -2676,7 +2676,7 @@ dependencies = [ "once_cell", "phf 0.11.2", "rustc-hash", - "triomphe", + "triomphe 0.1.13", ] [[package]] @@ -8228,6 +8228,16 @@ dependencies = [ "tracing-serde", ] +[[package]] +name = "triomphe" +version = "0.1.12" +source = "git+https://github.com/sokra/triomphe?branch=sokra/unstable#9c591aba443d01a9f525fe9b4a671359d1b455d2" +dependencies = [ + "serde", + "stable_deref_trait", + "unsize", +] + [[package]] name = "triomphe" version = "0.1.13" @@ -8236,7 +8246,6 @@ checksum = "e6631e42e10b40c0690bf92f404ebcfe6e1fdb480391d15f17cc8e96eeed5369" dependencies = [ "serde", "stable_deref_trait", - "unsize", ] [[package]] @@ -8366,7 +8375,7 @@ dependencies = [ "thiserror", "tokio", "tracing", - "triomphe", + "triomphe 0.1.12", "turbo-tasks-build", "turbo-tasks-hash", "turbo-tasks-macros", diff --git a/Cargo.toml b/Cargo.toml index a7e115fecfaae..9c69dcbeb75df 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -207,7 +207,7 @@ tokio = "1.25.0" tokio-util = { version = "0.7.7", features = ["io"] } tracing = "0.1.37" tracing-subscriber = "0.3.16" -triomphe = "0.1.13" +triomphe = { git = "https://github.com/sokra/triomphe", branch = "sokra/unstable" } unicode-segmentation = "1.10.1" unsize = "1.1.0" url = "2.2.2" diff --git a/turbopack/crates/turbo-tasks/Cargo.toml b/turbopack/crates/turbo-tasks/Cargo.toml index e080abbd685bc..d663d0e107010 100644 --- a/turbopack/crates/turbo-tasks/Cargo.toml +++ b/turbopack/crates/turbo-tasks/Cargo.toml @@ -40,7 +40,7 @@ serde_regex = "1.1.0" thiserror = { workspace = true } tokio = { workspace = true, features = ["full"] } tracing = { workspace = true } -triomphe = { workspace = true, features = ["unsize"] } +triomphe = { workspace = true, features = ["unsize", "unstable"] } turbo-tasks-hash = { workspace = true } turbo-tasks-macros = { workspace = true } turbo-tasks-malloc = { workspace = true } From 05253b7226221bf72ce58dc09beb8d3e24275e98 Mon Sep 17 00:00:00 2001 From: Tobias Koppers Date: Fri, 9 Aug 2024 11:03:02 +0200 Subject: [PATCH 3/6] remove unused initializate function from backend --- turbopack/crates/turbo-tasks/src/backend.rs | 3 --- turbopack/crates/turbo-tasks/src/manager.rs | 3 +-- 2 files changed, 1 insertion(+), 5 deletions(-) diff --git a/turbopack/crates/turbo-tasks/src/backend.rs b/turbopack/crates/turbo-tasks/src/backend.rs index 4c116ae9f44c8..6a653c8fa270a 100644 --- a/turbopack/crates/turbo-tasks/src/backend.rs +++ b/turbopack/crates/turbo-tasks/src/backend.rs @@ -428,9 +428,6 @@ impl TryFrom for SharedReference { pub type TaskCollectiblesMap = AutoMap, 1>; pub trait Backend: Sync + Send { - #[allow(unused_variables)] - fn initialize(&mut self, task_id_provider: &dyn TaskIdProvider) {} - #[allow(unused_variables)] fn startup(&self, turbo_tasks: &dyn TurboTasksBackendApi) {} diff --git a/turbopack/crates/turbo-tasks/src/manager.rs b/turbopack/crates/turbo-tasks/src/manager.rs index c7fd82d1bb370..cd453ced826de 100644 --- a/turbopack/crates/turbo-tasks/src/manager.rs +++ b/turbopack/crates/turbo-tasks/src/manager.rs @@ -316,9 +316,8 @@ impl TurboTasks { // that should be safe as long tasks can't outlife turbo task // so we probably want to make sure that all tasks are joined // when trying to drop turbo tasks - pub fn new(mut backend: B) -> Arc { + pub fn new(backend: B) -> Arc { let task_id_factory = IdFactoryWithReuse::new(); - backend.initialize(&task_id_factory); let this = Arc::new_cyclic(|this| Self { this: this.clone(), backend, From 7209ebb943f07df3eab37d927852f500104ef1c9 Mon Sep 17 00:00:00 2001 From: Tobias Koppers Date: Fri, 9 Aug 2024 11:05:22 +0200 Subject: [PATCH 4/6] fixup --- turbopack/crates/turbo-tasks/src/backend.rs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/turbopack/crates/turbo-tasks/src/backend.rs b/turbopack/crates/turbo-tasks/src/backend.rs index 6a653c8fa270a..25de8bb8a867f 100644 --- a/turbopack/crates/turbo-tasks/src/backend.rs +++ b/turbopack/crates/turbo-tasks/src/backend.rs @@ -23,8 +23,8 @@ use crate::{ task::shared_reference::TypedSharedReference, trait_helpers::{get_trait_method, has_trait, traits}, triomphe_utils::unchecked_sidecast_triomphe_arc, - FunctionId, RawVc, ReadRef, SharedReference, TaskId, TaskIdProvider, TaskIdSet, TraitRef, - TraitTypeId, ValueTypeId, VcRead, VcValueTrait, VcValueType, + FunctionId, RawVc, ReadRef, SharedReference, TaskId, TaskIdSet, TraitRef, TraitTypeId, + ValueTypeId, VcRead, VcValueTrait, VcValueType, }; pub enum TaskType { From 64c256b9fe6710c77bf1210e67dd562efd457dc4 Mon Sep 17 00:00:00 2001 From: Tobias Koppers Date: Mon, 12 Aug 2024 13:31:06 +0200 Subject: [PATCH 5/6] fix serialization bug --- turbopack/crates/turbo-tasks-macros/src/value_trait_macro.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/turbopack/crates/turbo-tasks-macros/src/value_trait_macro.rs b/turbopack/crates/turbo-tasks-macros/src/value_trait_macro.rs index 03dc1405b6124..8f7234cc5c563 100644 --- a/turbopack/crates/turbo-tasks-macros/src/value_trait_macro.rs +++ b/turbopack/crates/turbo-tasks-macros/src/value_trait_macro.rs @@ -133,7 +133,7 @@ pub fn value_trait(args: TokenStream, input: TokenStream) -> TokenStream { }); trait_methods.push(quote! { - trait_type.register_default_trait_method::<(#(#arg_types),*)>(stringify!(#ident).into(), *#native_function_id_ident); + trait_type.register_default_trait_method::<(#(#arg_types,)*)>(stringify!(#ident).into(), *#native_function_id_ident); }); native_functions.push(quote! { From e931704bda7eee59389bdb774d2e81f59e6f69c4 Mon Sep 17 00:00:00 2001 From: Tobias Koppers Date: Mon, 12 Aug 2024 13:58:30 +0200 Subject: [PATCH 6/6] fix serialization bug --- turbopack/crates/turbo-tasks-macros/src/value_trait_macro.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/turbopack/crates/turbo-tasks-macros/src/value_trait_macro.rs b/turbopack/crates/turbo-tasks-macros/src/value_trait_macro.rs index 8f7234cc5c563..2a66f757f5490 100644 --- a/turbopack/crates/turbo-tasks-macros/src/value_trait_macro.rs +++ b/turbopack/crates/turbo-tasks-macros/src/value_trait_macro.rs @@ -171,7 +171,7 @@ pub fn value_trait(args: TokenStream, input: TokenStream) -> TokenStream { Some(turbo_fn.static_block(&native_function_id_ident)) } else { trait_methods.push(quote! { - trait_type.register_trait_method::<(#(#arg_types),*)>(stringify!(#ident).into()); + trait_type.register_trait_method::<(#(#arg_types,)*)>(stringify!(#ident).into()); }); None };