1
1
Fork 0
mirror of https://github.com/NixOS/nix.git synced 2025-11-15 15:02:42 +01:00

Size -> size_t

This commit is contained in:
Eelco Dolstra 2019-04-23 22:47:30 +02:00
parent ba36d43d46
commit 35b76b21ee
5 changed files with 26 additions and 27 deletions

View file

@ -93,12 +93,12 @@ public:
return res; return res;
} }
Size words() const size_t words() const
{ {
return wordsFor(capacity()); return wordsFor(capacity());
} }
static Size wordsFor(size_t capacity) static size_t wordsFor(size_t capacity)
{ {
return 2 + 3 * capacity; // FIXME return 2 + 3 * capacity; // FIXME
} }

View file

@ -70,12 +70,12 @@ public:
return getMisc() & 0xffff; return getMisc() & 0xffff;
} }
Size words() const size_t words() const
{ {
return wordsFor(getSize()); return wordsFor(getSize());
} }
static Size wordsFor(unsigned short size) static size_t wordsFor(unsigned short size)
{ {
return 2 + size; return 2 + size;
} }

View file

@ -239,8 +239,8 @@ void GC::gc()
// Go through all the arenas and add free objects to the // Go through all the arenas and add free objects to the
// appropriate freelists. // appropriate freelists.
Size totalObjectsFreed = 0; size_t totalObjectsFreed = 0;
Size totalWordsFreed = 0; size_t totalWordsFreed = 0;
for (auto & arena : arenas) { for (auto & arena : arenas) {
auto [objectsFreed, wordsFreed] = freeUnmarked(arena); auto [objectsFreed, wordsFreed] = freeUnmarked(arena);
@ -252,10 +252,10 @@ void GC::gc()
totalWordsFreed * WORD_SIZE, totalObjectsFreed, marked); totalWordsFreed * WORD_SIZE, totalObjectsFreed, marked);
} }
std::pair<Size, Size> GC::freeUnmarked(Arena & arena) std::pair<size_t, size_t> GC::freeUnmarked(Arena & arena)
{ {
Size objectsFreed = 0; size_t objectsFreed = 0;
Size wordsFreed = 0; size_t wordsFreed = 0;
auto end = arena.start + arena.size; auto end = arena.start + arena.size;
auto pos = arena.start; auto pos = arena.start;
@ -272,7 +272,7 @@ std::pair<Size, Size> GC::freeUnmarked(Arena & arena)
auto obj = (Object *) pos; auto obj = (Object *) pos;
auto tag = obj->type; auto tag = obj->type;
Size objSize; size_t objSize;
if (tag >= tInt && tag <= tFloat) { if (tag >= tInt && tag <= tFloat) {
objSize = ((Value *) obj)->words(); objSize = ((Value *) obj)->words();
} else { } else {
@ -326,7 +326,7 @@ std::pair<Size, Size> GC::freeUnmarked(Arena & arena)
} else { } else {
//debug("FREE OBJECT %x %d %d", obj, obj->type, objSize); //debug("FREE OBJECT %x %d %d", obj, obj->type, objSize);
#if GC_DEBUG #if GC_DEBUG
for (Size i = 0; i < objSize; ++i) for (size_t i = 0; i < objSize; ++i)
((Word *) obj)[i] = 0xdeadc0dedeadbeefULL; ((Word *) obj)[i] = 0xdeadc0dedeadbeefULL;
#endif #endif
objectsFreed += 1; objectsFreed += 1;

View file

@ -11,7 +11,6 @@
namespace nix { namespace nix {
typedef unsigned long Word; typedef unsigned long Word;
typedef size_t Size; // size in words
enum Tag { enum Tag {
tFree = 3, tFree = 3,
@ -103,27 +102,27 @@ struct PtrList : Object
{ {
T * elems[0]; 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; elems[i] = nullptr;
} }
Size size() const { return getMisc(); } size_t size() const { return getMisc(); }
Size words() const { return wordsFor(size()); } size_t words() const { return wordsFor(size()); }
static Size wordsFor(Size size) { return 1 + size; } static size_t wordsFor(size_t size) { return 1 + size; }
}; };
struct Free : Object struct Free : Object
{ {
Free * next; Free * next;
Free(Size size) : Object(tFree, size), next(nullptr) { } Free(size_t size) : Object(tFree, size), next(nullptr) { }
// return size in words // 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<class T> template<class T>
@ -151,10 +150,10 @@ private:
struct Arena struct Arena
{ {
Size size; // in words size_t size; // in words
Word * start; Word * start;
Arena(Size size) Arena(size_t size)
: size(size) : size(size)
, start(new Word[size]) , start(new Word[size])
{ {
@ -183,13 +182,13 @@ private:
struct FreeList struct FreeList
{ {
Size minSize; size_t minSize;
Free * front = nullptr; Free * front = nullptr;
}; };
std::array<FreeList, 8> freeLists; std::array<FreeList, 8> freeLists;
Object * allocObject(Size size) Object * allocObject(size_t size)
{ {
assert(size >= 2); assert(size >= 2);
@ -253,7 +252,7 @@ public:
~GC(); ~GC();
template<typename T, typename... Args> template<typename T, typename... Args>
Ptr<T> alloc(Size size, const Args & ... args) Ptr<T> alloc(size_t size, const Args & ... args)
{ {
auto raw = allocObject(size); auto raw = allocObject(size);
return new (raw) T(args...); return new (raw) T(args...);
@ -279,7 +278,7 @@ private:
void addToFreeList(Free * obj); void addToFreeList(Free * obj);
std::pair<Size, Size> freeUnmarked(Arena & arena); std::pair<size_t, size_t> freeUnmarked(Arena & arena);
}; };
extern GC gc; extern GC gc;

View file

@ -169,7 +169,7 @@ public:
return type == tList0 ? 0 : type == tList1 ? 1 : type == tList2 ? 2 : bigList->size(); 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) void setContext(const PathSet & context)
{ {