about summary refs log tree commit diff
path: root/tvix/eval/src/value
diff options
context:
space:
mode:
authorAspen Smith <root@gws.fyi>2024-02-10T17·21-0500
committerclbot <clbot@tvl.fyi>2024-02-10T20·34+0000
commit5d2ae840f13641a6f699ab77d43e41d98f459053 (patch)
treed0ca56f8fe1469a34ccd1f8f644322623490f496 /tvix/eval/src/value
parent7b1632ec71cc56dffa6eeca90fdf122331a5065f (diff)
refactor(tvix/eval): Box the inside of Value::Json r/7496
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 <sternenseemann@systemli.org>
Autosubmit: aspen <root@gws.fyi>
Tested-by: BuildkiteCI
Diffstat (limited to 'tvix/eval/src/value')
-rw-r--r--tvix/eval/src/value/json.rs2
-rw-r--r--tvix/eval/src/value/mod.rs2
2 files changed, 2 insertions, 2 deletions
diff --git a/tvix/eval/src/value/json.rs b/tvix/eval/src/value/json.rs
index c2f8b2c2b1ef..5c627540dbe8 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<Value, ErrorKind> {
         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 e0c5a2f512cf..043788da4596 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<Path>),
     #[serde(skip)]
-    Json(serde_json::Value),
+    Json(Box<serde_json::Value>),
 
     #[serde(skip)]
     FinaliseRequest(bool),