refactor(tvix/eval): Don't double-box Path values

PathBuf internally contains a heap pointer (an OsString), so we were in
effect double-boxing here. Removing the extra layer by making
Tvix::Value represented by a Box<Path> rather than a Box<PathBuf> saves
us an indirection, while still avoiding the extra memory overhead of the
capacity which was the reason we were boxing PathBuf in the first place.

Change-Id: I8c185b9d4646161d1921917f83e87421496a3e24
Reviewed-on: https://cl.tvl.fyi/c/depot/+/10725
Reviewed-by: sterni <sternenseemann@systemli.org>
Autosubmit: aspen <root@gws.fyi>
Tested-by: BuildkiteCI
This commit is contained in:
Aspen Smith 2024-01-31 10:19:13 -05:00 committed by aspen
parent 201173afac
commit d3d41552cf
6 changed files with 23 additions and 20 deletions

View file

@ -27,7 +27,7 @@ impl Value {
Value::String(s) => Json::String(s.to_str()?.to_owned()),
Value::Path(p) => {
let imported = generators::request_path_import(co, *p).await;
let imported = generators::request_path_import(co, p.into_path_buf()).await;
Json::String(imported.to_string_lossy().to_string())
}