From 5d2ae840f13641a6f699ab77d43e41d98f459053 Mon Sep 17 00:00:00 2001 From: Aspen Smith Date: Sat, 10 Feb 2024 12:21:06 -0500 Subject: refactor(tvix/eval): Box the inside of Value::Json serde_json::Value is pretty large, and is contributing (albeit not exclusively) to the large size of the Value repr. Putting it in a box is *especially* cheap (since it's rarely used) and allows us to (eventually) cut down on the size of Value. Change-Id: I005a802d8527b639beb4e938e3320b11ffa1ef23 Reviewed-on: https://cl.tvl.fyi/c/depot/+/10795 Reviewed-by: sterni Autosubmit: aspen Tested-by: BuildkiteCI --- tvix/eval/src/value/json.rs | 2 +- tvix/eval/src/value/mod.rs | 2 +- tvix/eval/src/vm/generators.rs | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) (limited to 'tvix/eval/src') diff --git a/tvix/eval/src/value/json.rs b/tvix/eval/src/value/json.rs index c2f8b2c2b1..5c627540db 100644 --- a/tvix/eval/src/value/json.rs +++ b/tvix/eval/src/value/json.rs @@ -111,7 +111,7 @@ impl Value { pub(crate) async fn into_json_generator(self, co: GenCo) -> Result { match self.into_json(&co).await? { Err(cek) => Ok(Value::Catchable(cek)), - Ok(json) => Ok(Value::Json(json)), + Ok(json) => Ok(Value::Json(Box::new(json))), } } } diff --git a/tvix/eval/src/value/mod.rs b/tvix/eval/src/value/mod.rs index e0c5a2f512..043788da45 100644 --- a/tvix/eval/src/value/mod.rs +++ b/tvix/eval/src/value/mod.rs @@ -78,7 +78,7 @@ pub enum Value { #[serde(skip)] UnresolvedPath(Box), #[serde(skip)] - Json(serde_json::Value), + Json(Box), #[serde(skip)] FinaliseRequest(bool), diff --git a/tvix/eval/src/vm/generators.rs b/tvix/eval/src/vm/generators.rs index e5468fb06d..cffe36e602 100644 --- a/tvix/eval/src/vm/generators.rs +++ b/tvix/eval/src/vm/generators.rs @@ -775,7 +775,7 @@ pub(crate) async fn request_to_json( value: Value, ) -> Result { match co.yield_(VMRequest::ToJson(value)).await { - VMResponse::Value(Value::Json(json)) => Ok(json), + VMResponse::Value(Value::Json(json)) => Ok(*json), VMResponse::Value(Value::Catchable(cek)) => Err(cek), msg => panic!( "Tvix bug: VM responded with incorrect generator message: {}", -- cgit 1.4.1