about summary refs log tree commit diff
path: root/tvix/eval/src/compiler.rs
diff options
context:
space:
mode:
authorVincent Ambo <mail@tazj.in>2022-08-10T14·53+0300
committertazjin <tazjin@tvl.su>2022-08-24T18·19+0000
commit6dc9ca5723ee46ade3ad3618ae780ec88ae884e2 (patch)
tree9bdf55af081c9dd0f9f59739b4455534f7cad39c /tvix/eval/src/compiler.rs
parentc7ba2dec04c9c0bf7558285ed7d434e61ee5e5b5 (diff)
feat(tvix/value): introduce string representation with &'static str r/4457
For cases where the strings are statically known (such as the
oft-occuring name/value), this can be a useful optimisation.

It's also much more convenient in tests.

Change-Id: Ie462b684805bd4986ea5e85ca4bff663bc2d3c3c
Reviewed-on: https://cl.tvl.fyi/c/depot/+/6111
Tested-by: BuildkiteCI
Reviewed-by: eta <tvl@eta.st>
Diffstat (limited to 'tvix/eval/src/compiler.rs')
-rw-r--r--tvix/eval/src/compiler.rs8
1 files changed, 4 insertions, 4 deletions
diff --git a/tvix/eval/src/compiler.rs b/tvix/eval/src/compiler.rs
index 5b6f748dc7..668ec842e8 100644
--- a/tvix/eval/src/compiler.rs
+++ b/tvix/eval/src/compiler.rs
@@ -111,7 +111,7 @@ impl Compiler {
                 rnix::StrPart::Ast(node) => self.compile(node)?,
 
                 rnix::StrPart::Literal(lit) => {
-                    let idx = self.chunk.add_constant(Value::String(NixString(lit)));
+                    let idx = self.chunk.add_constant(Value::String(lit.into()));
                     self.chunk.add_op(OpCode::OpConstant(idx));
                 }
             }
@@ -206,9 +206,9 @@ impl Compiler {
                         let ident = rnix::types::Ident::cast(fragment).unwrap();
 
                         // TODO(tazjin): intern!
-                        let idx = self
-                            .chunk
-                            .add_constant(Value::String(NixString(ident.as_str().to_string())));
+                        let idx = self.chunk.add_constant(Value::String(NixString::Heap(
+                            ident.as_str().to_string(),
+                        )));
                         self.chunk.add_op(OpCode::OpConstant(idx));
                     }