feat(tvix/value): introduce string representation with &'static str
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>
This commit is contained in:
parent
c7ba2dec04
commit
6dc9ca5723
4 changed files with 44 additions and 26 deletions
|
|
@ -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));
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue