diff options
author | Adam Joseph <adam@westernsemico.com> | 2023-12-08T10·46-0800 |
---|---|---|
committer | clbot <clbot@tvl.fyi> | 2023-12-12T14·26+0000 |
commit | edbd5055a1c3ca429b4c58d23f140a9fb76c3fc8 (patch) | |
tree | e223f9d7ca3175180627b3265e66b48c33521d31 /tvix/eval/src/vm/generators.rs | |
parent | 8a40f75c2d0cd03e3c3f680f4bd062f0611f2ab8 (diff) |
feat(tvix/eval): nonrecursive nix_cmp_ordering(), fixes b/339 r/7167
This commit rewrites Value::nix_cmp_ordering() into an equivalent nonrecursive form. Except for calls to Thunk::force(), the new form no longer uses generators, and is async only because of the fact that it calls Thunk::force(). I originally believed that this commit would make evaluation faster. In fact it is slightly slower. I believe this is due to the added vec![] allocation. I am investigating. Prev-Nixpkgs-Benchmark: {"attrpath":"pkgsCross.aarch64-multiplatform.hello.outPath","peak-kbytes":"460048","system-seconds":"0.68","user-seconds":"5.73"} This-Nixpkgs-Benchmark: {"attrpath":"pkgsCross.aarch64-multiplatform.hello.outPath","peak-kbytes":"460224","system-seconds":"0.67","user-seconds":"5.84"} Change-Id: Ic627bc220d9c5aa3c5e68b9b8bf199837cd55af5 Reviewed-on: https://cl.tvl.fyi/c/depot/+/10212 Reviewed-by: tazjin <tazjin@tvl.su> Tested-by: BuildkiteCI Autosubmit: Adam Joseph <adam@westernsemico.com>
Diffstat (limited to 'tvix/eval/src/vm/generators.rs')
-rw-r--r-- | tvix/eval/src/vm/generators.rs | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/tvix/eval/src/vm/generators.rs b/tvix/eval/src/vm/generators.rs index 3a256ec55d7e..4fff498fe7c6 100644 --- a/tvix/eval/src/vm/generators.rs +++ b/tvix/eval/src/vm/generators.rs @@ -337,7 +337,7 @@ impl<'o> VM<'o> { let values = *values; self.reenqueue_generator(name, span.clone(), generator); self.enqueue_generator("nix_eq", span.clone(), |co| { - values.0.nix_eq(values.1, co, ptr_eq, span) + values.0.nix_eq_owned_genco(values.1, co, ptr_eq, span) }); return Ok(false); } |