diff --git a/default.nix b/default.nix index 9ac6e7c2..3a9b4466 100644 --- a/default.nix +++ b/default.nix @@ -141,6 +141,7 @@ let xo-arena = self.callPackage pkgs/xo-arena.nix { buildDocs = true; }; xo-facet = self.callPackage pkgs/xo-facet.nix {}; xo-allocutil = self.callPackage pkgs/xo-allocutil.nix {}; + xo-alloc = self.callPackage pkgs/xo-alloc.nix {}; # buildDocs = true; xo-refcnt = self.callPackage pkgs/xo-refcnt.nix {}; xo-ordinaltree = self.callPackage pkgs/xo-ordinaltree.nix {}; xo-flatstring = self.callPackage pkgs/xo-flatstring.nix { buildDocs = true; buildExamples = true; }; @@ -479,13 +480,14 @@ in pkgs = pkgs; xo = { cmake = pkgs.xo-cmake; -# facet = pkgs.xo-facet; indentlog = pkgs.xo-indentlog; refcnt = pkgs.xo-refcnt; subsys = pkgs.xo-subsys; randomgen = pkgs.xo-randomgen; arena = pkgs.xo-arena; facet = pkgs.xo-facet; + allocutil = pkgs.xo-allocutil; + alloc = pkgs.xo-alloc; ordinaltree = pkgs.xo-ordinaltree; flatstring = pkgs.xo-flatstring; pyutil = pkgs.xo-pyutil; diff --git a/pkgs/xo-alloc.nix b/pkgs/xo-alloc.nix new file mode 100644 index 00000000..51cbda83 --- /dev/null +++ b/pkgs/xo-alloc.nix @@ -0,0 +1,64 @@ +{ + # nixpkgs dependencies + lib, stdenv, cmake, catch2, + doxygen, + + python3Packages, + + sphinx, graphviz, + + # xo dependencies + xo-callback, + xo-unit, + xo-reflect, +# xo-randomgen, + xo-reflectutil, + xo-indentlog, + xo-allocutil, + xo-cmake, + + buildDocs ? false, + doCheck ? true, +} : + +stdenv.mkDerivation (finalattrs: + { + name = "xo-alloc"; + + src = ../xo-alloc; + + cmakeFlags = ["-DCMAKE_MODULE_PATH=${xo-cmake}/share/cmake"] + ++ lib.optionals buildDocs ["-DXO_ENABLE_DOCS=on"] + ++ ["-DENABLE_TESTING=1"]; + + inherit buildDocs; + inherit doCheck; + + postBuild = lib.optionalString buildDocs '' + cmake --build . -- docs + ''; + + nativeBuildInputs = [ + cmake + catch2 + xo-cmake +# xo-randomgen + ] ++ lib.optionals buildDocs [ + doxygen + sphinx + graphviz + python3Packages.sphinx-rtd-theme + python3Packages.breathe + python3Packages.sphinxcontrib-ditaa + python3Packages.sphinxcontrib-plantuml + python3Packages.pillow + ]; + propagatedBuildInputs = [ + xo-callback + xo-unit + xo-reflect + xo-allocutil + xo-reflectutil + xo-indentlog + ]; + }) diff --git a/pkgs/xo-allocutil.nix b/pkgs/xo-allocutil.nix index acdceb1e..dd66dbd6 100644 --- a/pkgs/xo-allocutil.nix +++ b/pkgs/xo-allocutil.nix @@ -3,6 +3,7 @@ stdenv, cmake, catch2, # xo dependencies + xo-allocutil, xo-cmake, # xo-randomgen, # xo-reflectutil, diff --git a/xo-alloc/src/alloc/ArenaAlloc.cpp b/xo-alloc/src/alloc/ArenaAlloc.cpp index d7f794f3..dc80eb4e 100644 --- a/xo-alloc/src/alloc/ArenaAlloc.cpp +++ b/xo-alloc/src/alloc/ArenaAlloc.cpp @@ -390,8 +390,10 @@ namespace xo { /* word size for alignment */ constexpr uint32_t c_bpw = sizeof(std::uintptr_t); + (void)c_bpw; std::uintptr_t free_u64 = reinterpret_cast(free_ptr_); + (void)free_u64; assert(free_u64 % c_bpw == 0ul); diff --git a/xo-alloc/src/alloc/GC.cpp b/xo-alloc/src/alloc/GC.cpp index dd17fd3b..f1c52d1b 100644 --- a/xo-alloc/src/alloc/GC.cpp +++ b/xo-alloc/src/alloc/GC.cpp @@ -551,7 +551,7 @@ namespace xo { case generation_result::nursery: if (is_before_checkpoint(parent)) { log && log(xtag("act", "N1->N0 must mlog")); - + // N1->N0, so must log this->mutation_log_[role2int(role::to_space)]->push_back(MutationLogEntry(parent, lhs)); ++(this->gc_statistics_.n_logged_mutation_); @@ -974,12 +974,14 @@ namespace xo { from_entry.fixup_parent_child_moved(child_to); +#ifndef NDEBUG { // verify fixup was effective IObject * child_from2 = from_entry.child(); assert(child_from2 == child_to); } - +#endif + // P->C', loc(C') in {N1', T'}