about summary refs log tree commit diff
path: root/tvix/eval/src/vm
diff options
context:
space:
mode:
Diffstat (limited to 'tvix/eval/src/vm')
-rw-r--r--tvix/eval/src/vm/generators.rs4
-rw-r--r--tvix/eval/src/vm/mod.rs11
2 files changed, 8 insertions, 7 deletions
diff --git a/tvix/eval/src/vm/generators.rs b/tvix/eval/src/vm/generators.rs
index 3d2fd9d266c7..e5468fb06d4a 100644
--- a/tvix/eval/src/vm/generators.rs
+++ b/tvix/eval/src/vm/generators.rs
@@ -436,7 +436,7 @@ where
                                 })
                                 .with_span(&span, self)?;
 
-                            message = VMResponse::Value(Value::String(content.into()))
+                            message = VMResponse::Value(content.into())
                         }
 
                         VMRequest::PathExists(path) => {
@@ -607,7 +607,7 @@ pub async fn request_string_coerce(
     kind: CoercionKind,
 ) -> Result<NixString, CatchableErrorKind> {
     match val {
-        Value::String(s) => Ok(s),
+        Value::String(s) => Ok(*s),
         _ => match co.yield_(VMRequest::StringCoerce(val, kind)).await {
             VMResponse::Value(Value::Catchable(c)) => Err(c),
             VMResponse::Value(value) => Ok(value
diff --git a/tvix/eval/src/vm/mod.rs b/tvix/eval/src/vm/mod.rs
index 6e36edd95670..d23bef6743ef 100644
--- a/tvix/eval/src/vm/mod.rs
+++ b/tvix/eval/src/vm/mod.rs
@@ -987,9 +987,10 @@ where
             }
         }
 
-        // FIXME: consume immediately here the String.
         self.stack
-            .push(Value::String(NixString::new_context_from(context, out)));
+            .push(Value::String(Box::new(NixString::new_context_from(
+                context, out,
+            ))));
         Ok(())
     }
 
@@ -1250,7 +1251,7 @@ async fn add_values(co: GenCo, a: Value, b: Value) -> Result<Value, ErrorKind> {
                 Err(c) => Value::Catchable(c),
             }
         }
-        (Value::String(s1), Value::String(s2)) => Value::String(s1.concat(&s2)),
+        (Value::String(s1), Value::String(s2)) => Value::String(Box::new(s1.concat(&s2))),
         (Value::String(s1), v) => generators::request_string_coerce(
             &co,
             v,
@@ -1261,7 +1262,7 @@ async fn add_values(co: GenCo, a: Value, b: Value) -> Result<Value, ErrorKind> {
             },
         )
         .await
-        .map(|s2| Value::String(s1.concat(&s2)))
+        .map(|s2| Value::String(Box::new(s1.concat(&s2))))
         .into(),
         (a @ Value::Integer(_), b) | (a @ Value::Float(_), b) => arithmetic_op!(&a, &b, +)?,
         (a, b) => {
@@ -1284,7 +1285,7 @@ async fn add_values(co: GenCo, a: Value, b: Value) -> Result<Value, ErrorKind> {
             )
             .await;
             match (r1, r2) {
-                (Ok(s1), Ok(s2)) => Value::String(s1.concat(&s2)),
+                (Ok(s1), Ok(s2)) => Value::String(Box::new(s1.concat(&s2))),
                 (Err(c), _) => return Ok(Value::Catchable(c)),
                 (_, Err(c)) => return Ok(Value::Catchable(c)),
             }