diff --git a/src/libexpr/attr-set.hh b/src/libexpr/attr-set.hh index cb29ee74e..0385edbc1 100644 --- a/src/libexpr/attr-set.hh +++ b/src/libexpr/attr-set.hh @@ -93,12 +93,12 @@ public: return res; } - Size words() const + size_t words() const { return wordsFor(capacity()); } - static Size wordsFor(size_t capacity) + static size_t wordsFor(size_t capacity) { return 2 + 3 * capacity; // FIXME } diff --git a/src/libexpr/eval.hh b/src/libexpr/eval.hh index 4ed8fc541..36bef09e3 100644 --- a/src/libexpr/eval.hh +++ b/src/libexpr/eval.hh @@ -70,12 +70,12 @@ public: return getMisc() & 0xffff; } - Size words() const + size_t words() const { return wordsFor(getSize()); } - static Size wordsFor(unsigned short size) + static size_t wordsFor(unsigned short size) { return 2 + size; } diff --git a/src/libexpr/gc.cc b/src/libexpr/gc.cc index 96b2728bf..58107690d 100644 --- a/src/libexpr/gc.cc +++ b/src/libexpr/gc.cc @@ -239,8 +239,8 @@ void GC::gc() // Go through all the arenas and add free objects to the // appropriate freelists. - Size totalObjectsFreed = 0; - Size totalWordsFreed = 0; + size_t totalObjectsFreed = 0; + size_t totalWordsFreed = 0; for (auto & arena : arenas) { auto [objectsFreed, wordsFreed] = freeUnmarked(arena); @@ -252,10 +252,10 @@ void GC::gc() totalWordsFreed * WORD_SIZE, totalObjectsFreed, marked); } -std::pair GC::freeUnmarked(Arena & arena) +std::pair GC::freeUnmarked(Arena & arena) { - Size objectsFreed = 0; - Size wordsFreed = 0; + size_t objectsFreed = 0; + size_t wordsFreed = 0; auto end = arena.start + arena.size; auto pos = arena.start; @@ -272,7 +272,7 @@ std::pair GC::freeUnmarked(Arena & arena) auto obj = (Object *) pos; auto tag = obj->type; - Size objSize; + size_t objSize; if (tag >= tInt && tag <= tFloat) { objSize = ((Value *) obj)->words(); } else { @@ -326,7 +326,7 @@ std::pair GC::freeUnmarked(Arena & arena) } else { //debug("FREE OBJECT %x %d %d", obj, obj->type, objSize); #if GC_DEBUG - for (Size i = 0; i < objSize; ++i) + for (size_t i = 0; i < objSize; ++i) ((Word *) obj)[i] = 0xdeadc0dedeadbeefULL; #endif objectsFreed += 1; diff --git a/src/libexpr/gc.hh b/src/libexpr/gc.hh index 0bc951923..f8be832eb 100644 --- a/src/libexpr/gc.hh +++ b/src/libexpr/gc.hh @@ -11,7 +11,6 @@ namespace nix { typedef unsigned long Word; -typedef size_t Size; // size in words enum Tag { tFree = 3, @@ -103,27 +102,27 @@ struct PtrList : Object { T * elems[0]; - PtrList(Tag type, Size size) : Object(type, size) + PtrList(Tag type, size_t size) : Object(type, size) { - for (Size i = 0; i < size; i++) + for (size_t i = 0; i < size; i++) elems[i] = nullptr; } - Size size() const { return getMisc(); } - Size words() const { return wordsFor(size()); } - static Size wordsFor(Size size) { return 1 + size; } + size_t size() const { return getMisc(); } + size_t words() const { return wordsFor(size()); } + static size_t wordsFor(size_t size) { return 1 + size; } }; struct Free : Object { Free * next; - Free(Size size) : Object(tFree, size), next(nullptr) { } + Free(size_t size) : Object(tFree, size), next(nullptr) { } // return size in words - Size words() const { return getMisc(); } + size_t words() const { return getMisc(); } - void setSize(Size size) { assert(size >= 1); setMisc(size); } + void setSize(size_t size) { assert(size >= 1); setMisc(size); } }; template @@ -151,10 +150,10 @@ private: struct Arena { - Size size; // in words + size_t size; // in words Word * start; - Arena(Size size) + Arena(size_t size) : size(size) , start(new Word[size]) { @@ -183,13 +182,13 @@ private: struct FreeList { - Size minSize; + size_t minSize; Free * front = nullptr; }; std::array freeLists; - Object * allocObject(Size size) + Object * allocObject(size_t size) { assert(size >= 2); @@ -253,7 +252,7 @@ public: ~GC(); template - Ptr alloc(Size size, const Args & ... args) + Ptr alloc(size_t size, const Args & ... args) { auto raw = allocObject(size); return new (raw) T(args...); @@ -279,7 +278,7 @@ private: void addToFreeList(Free * obj); - std::pair freeUnmarked(Arena & arena); + std::pair freeUnmarked(Arena & arena); }; extern GC gc; diff --git a/src/libexpr/value.hh b/src/libexpr/value.hh index 2289b86fd..1112511fd 100644 --- a/src/libexpr/value.hh +++ b/src/libexpr/value.hh @@ -169,7 +169,7 @@ public: return type == tList0 ? 0 : type == tList1 ? 1 : type == tList2 ? 2 : bigList->size(); } - constexpr static Size words() { return 3; } // FIXME + constexpr static size_t words() { return 3; } // FIXME void setContext(const PathSet & context) {