refactor(tvix/eval): Box Value::String
NixString is *quite* large - like 80 bytes - because of the extra capacity value for BString and because of the context. We want to keep Value small since we're passing it around a lot, so let's box the NixString inside Value::String to save on some memory, and make cloning ostensibly a little cheaper Change-Id: I343c8b4e7f61dc3dcbbaba4382efb3b3e5bbabb2 Reviewed-on: https://cl.tvl.fyi/c/depot/+/10729 Tested-by: BuildkiteCI Reviewed-by: sterni <sternenseemann@systemli.org>
This commit is contained in:
parent
4c5d9fa356
commit
5f0f4ea374
15 changed files with 69 additions and 72 deletions
|
|
@ -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
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue