From 80eaa1eaf9dde0caa4e983374fb1356aed67c8e1 Mon Sep 17 00:00:00 2001 From: Eelco Dolstra Date: Thu, 16 Apr 2020 16:28:07 +0200 Subject: feat(3p/nix): Add function to allocate a Value in traceable memory Backported from: https://github.com/NixOS/nix/commit/b3e5eea4a91400fb2a12aba4b07a94d03ba54605 https://github.com/NixOS/nix/commit/fcd048a526bd239fa615457e77d61d69d679bf03 Intentionally skipped because we have not backported the JSON changes: https://github.com/NixOS/nix/commit/9f46f54de4e55267df492456fc0393f74616366b Did not apply changes ni primops.cc, because those look suspect and are also based on something that we don't have in our tree. Change-Id: I837787ce9f2c90267bc39fce15177980d209d4e9 Reviewed-on: https://cl.tvl.fyi/c/depot/+/1253 Tested-by: BuildkiteCI Reviewed-by: isomer --- third_party/nix/src/libexpr/eval.cc | 7 +++++++ third_party/nix/src/libexpr/nixexpr.hh | 1 + third_party/nix/src/libexpr/value.hh | 2 ++ 3 files changed, 10 insertions(+) (limited to 'third_party/nix/src/libexpr') diff --git a/third_party/nix/src/libexpr/eval.cc b/third_party/nix/src/libexpr/eval.cc index 2b825bfd2788..0f3b7fabe029 100644 --- a/third_party/nix/src/libexpr/eval.cc +++ b/third_party/nix/src/libexpr/eval.cc @@ -5,10 +5,13 @@ #include #include #include +#include #include #include #include +#define GC_INCLUDE_NEW + #include #include #include @@ -40,6 +43,10 @@ static char* dupString(const char* s) { return t; } +std::shared_ptr allocRootValue(Value* v) { + return std::allocate_shared(traceable_allocator(), v); +} + static void printValue(std::ostream& str, std::set& active, const Value& v) { checkInterrupt(); diff --git a/third_party/nix/src/libexpr/nixexpr.hh b/third_party/nix/src/libexpr/nixexpr.hh index 4b2bd86ef966..365235377f71 100644 --- a/third_party/nix/src/libexpr/nixexpr.hh +++ b/third_party/nix/src/libexpr/nixexpr.hh @@ -3,6 +3,7 @@ #include #include #include + #include #include "libexpr/symbol-table.hh" diff --git a/third_party/nix/src/libexpr/value.hh b/third_party/nix/src/libexpr/value.hh index 7308dd31933a..cb1b8796cfe4 100644 --- a/third_party/nix/src/libexpr/value.hh +++ b/third_party/nix/src/libexpr/value.hh @@ -247,4 +247,6 @@ typedef std::map, traceable_allocator>> ValueMap; +std::shared_ptr allocRootValue(Value* v); + } // namespace nix -- cgit 1.4.1