mirror of
https://github.com/corda/corda.git
synced 2025-02-01 08:48:09 +00:00
use size_t in Allocator
This commit is contained in:
parent
d92edcc36d
commit
a1631c00f9
@ -18,10 +18,16 @@ namespace util {
|
|||||||
|
|
||||||
class Allocator {
|
class Allocator {
|
||||||
public:
|
public:
|
||||||
// TODO: use size_t instead of unsigned
|
|
||||||
virtual void* tryAllocate(unsigned size) = 0;
|
// Returns null on failure
|
||||||
virtual void* allocate(unsigned size) = 0;
|
virtual void* tryAllocate(size_t size) = 0;
|
||||||
virtual void free(const void* p, unsigned size) = 0;
|
|
||||||
|
// Aborts on failure
|
||||||
|
virtual void* allocate(size_t size) = 0;
|
||||||
|
|
||||||
|
// By contract, size MUST be the original size of the allocated data, and p
|
||||||
|
// MUST point to the original base of the allocated data. No partial frees.
|
||||||
|
virtual void free(const void* p, size_t size) = 0;
|
||||||
};
|
};
|
||||||
|
|
||||||
} // namespace util
|
} // namespace util
|
||||||
|
@ -24,13 +24,13 @@ class FixedAllocator : public Allocator {
|
|||||||
public:
|
public:
|
||||||
FixedAllocator(Aborter* a, Slice<uint8_t> memory);
|
FixedAllocator(Aborter* a, Slice<uint8_t> memory);
|
||||||
|
|
||||||
virtual void* tryAllocate(unsigned size);
|
virtual void* tryAllocate(size_t size);
|
||||||
|
|
||||||
void* allocate(unsigned size, unsigned padAlignment);
|
void* allocate(size_t size, unsigned padAlignment);
|
||||||
|
|
||||||
virtual void* allocate(unsigned size);
|
virtual void* allocate(size_t size);
|
||||||
|
|
||||||
virtual void free(const void* p, unsigned size);
|
virtual void free(const void* p, size_t size);
|
||||||
|
|
||||||
Aborter* a;
|
Aborter* a;
|
||||||
Slice<uint8_t> memory;
|
Slice<uint8_t> memory;
|
||||||
|
@ -95,7 +95,7 @@ class Zone : public avian::util::Allocator {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
virtual void* tryAllocate(unsigned size)
|
virtual void* tryAllocate(size_t size)
|
||||||
{
|
{
|
||||||
size = pad(size);
|
size = pad(size);
|
||||||
if (tryEnsure(size)) {
|
if (tryEnsure(size)) {
|
||||||
@ -107,7 +107,7 @@ class Zone : public avian::util::Allocator {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
virtual void* allocate(unsigned size)
|
virtual void* allocate(size_t size)
|
||||||
{
|
{
|
||||||
size = pad(size);
|
size = pad(size);
|
||||||
void* p = tryAllocate(size);
|
void* p = tryAllocate(size);
|
||||||
@ -146,7 +146,7 @@ class Zone : public avian::util::Allocator {
|
|||||||
segment = s;
|
segment = s;
|
||||||
}
|
}
|
||||||
|
|
||||||
virtual void free(const void*, unsigned)
|
virtual void free(const void*, size_t)
|
||||||
{
|
{
|
||||||
// not supported
|
// not supported
|
||||||
abort(s);
|
abort(s);
|
||||||
|
@ -60,10 +60,10 @@ class Context;
|
|||||||
|
|
||||||
Aborter* getAborter(Context* c);
|
Aborter* getAborter(Context* c);
|
||||||
|
|
||||||
void* tryAllocate(Context* c, unsigned size);
|
void* tryAllocate(Context* c, size_t size);
|
||||||
void* allocate(Context* c, unsigned size);
|
void* allocate(Context* c, size_t size);
|
||||||
void* allocate(Context* c, unsigned size, bool limit);
|
void* allocate(Context* c, size_t size, bool limit);
|
||||||
void free(Context* c, const void* p, unsigned size);
|
void free(Context* c, const void* p, size_t size);
|
||||||
|
|
||||||
#ifdef USE_ATOMIC_OPERATIONS
|
#ifdef USE_ATOMIC_OPERATIONS
|
||||||
inline void markBitAtomic(uintptr_t* map, unsigned i)
|
inline void markBitAtomic(uintptr_t* map, unsigned i)
|
||||||
@ -1863,7 +1863,7 @@ void collect(Context* c)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void* allocate(Context* c, unsigned size, bool limit)
|
void* allocate(Context* c, size_t size, bool limit)
|
||||||
{
|
{
|
||||||
ACQUIRE(c->lock);
|
ACQUIRE(c->lock);
|
||||||
|
|
||||||
@ -1888,12 +1888,12 @@ void* allocate(Context* c, unsigned size, bool limit)
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
void* tryAllocate(Context* c, unsigned size)
|
void* tryAllocate(Context* c, size_t size)
|
||||||
{
|
{
|
||||||
return allocate(c, size, true);
|
return allocate(c, size, true);
|
||||||
}
|
}
|
||||||
|
|
||||||
void* allocate(Context* c, unsigned size)
|
void* allocate(Context* c, size_t size)
|
||||||
{
|
{
|
||||||
void* p = allocate(c, size, false);
|
void* p = allocate(c, size, false);
|
||||||
expect(c->system, p);
|
expect(c->system, p);
|
||||||
@ -1901,7 +1901,7 @@ void* allocate(Context* c, unsigned size)
|
|||||||
return p;
|
return p;
|
||||||
}
|
}
|
||||||
|
|
||||||
void free(Context* c, const void* p, unsigned size)
|
void free(Context* c, const void* p, size_t size)
|
||||||
{
|
{
|
||||||
ACQUIRE(c->lock);
|
ACQUIRE(c->lock);
|
||||||
|
|
||||||
@ -1925,7 +1925,7 @@ void free(Context* c, const void* p, unsigned size)
|
|||||||
c->count -= size;
|
c->count -= size;
|
||||||
}
|
}
|
||||||
|
|
||||||
void free_(Context* c, const void* p, unsigned size)
|
void free_(Context* c, const void* p, size_t size)
|
||||||
{
|
{
|
||||||
free(c, p, size);
|
free(c, p, size);
|
||||||
}
|
}
|
||||||
@ -1963,17 +1963,17 @@ class MyHeap : public Heap {
|
|||||||
return local::limitExceeded(&c, pendingAllocation);
|
return local::limitExceeded(&c, pendingAllocation);
|
||||||
}
|
}
|
||||||
|
|
||||||
virtual void* tryAllocate(unsigned size)
|
virtual void* tryAllocate(size_t size)
|
||||||
{
|
{
|
||||||
return local::tryAllocate(&c, size);
|
return local::tryAllocate(&c, size);
|
||||||
}
|
}
|
||||||
|
|
||||||
virtual void* allocate(unsigned size)
|
virtual void* allocate(size_t size)
|
||||||
{
|
{
|
||||||
return local::allocate(&c, size);
|
return local::allocate(&c, size);
|
||||||
}
|
}
|
||||||
|
|
||||||
virtual void free(const void* p, unsigned size)
|
virtual void free(const void* p, size_t size)
|
||||||
{
|
{
|
||||||
free_(&c, p, size);
|
free_(&c, p, size);
|
||||||
}
|
}
|
||||||
|
@ -68,12 +68,12 @@ const char* mainClass(const char* jar)
|
|||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
virtual void* tryAllocate(unsigned size)
|
virtual void* tryAllocate(size_t size)
|
||||||
{
|
{
|
||||||
return s->tryAllocate(size);
|
return s->tryAllocate(size);
|
||||||
}
|
}
|
||||||
|
|
||||||
virtual void* allocate(unsigned size)
|
virtual void* allocate(size_t size)
|
||||||
{
|
{
|
||||||
void* p = tryAllocate(size);
|
void* p = tryAllocate(size);
|
||||||
if (p == 0) {
|
if (p == 0) {
|
||||||
@ -82,7 +82,7 @@ const char* mainClass(const char* jar)
|
|||||||
return p;
|
return p;
|
||||||
}
|
}
|
||||||
|
|
||||||
virtual void free(const void* p, unsigned)
|
virtual void free(const void* p, size_t)
|
||||||
{
|
{
|
||||||
s->free(p);
|
s->free(p);
|
||||||
}
|
}
|
||||||
|
@ -1636,12 +1636,12 @@ int main(int ac, char** av)
|
|||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
virtual void* tryAllocate(unsigned size)
|
virtual void* tryAllocate(size_t size)
|
||||||
{
|
{
|
||||||
return s->tryAllocate(size);
|
return s->tryAllocate(size);
|
||||||
}
|
}
|
||||||
|
|
||||||
virtual void* allocate(unsigned size)
|
virtual void* allocate(size_t size)
|
||||||
{
|
{
|
||||||
void* p = tryAllocate(size);
|
void* p = tryAllocate(size);
|
||||||
if (p == 0) {
|
if (p == 0) {
|
||||||
@ -1650,7 +1650,7 @@ int main(int ac, char** av)
|
|||||||
return p;
|
return p;
|
||||||
}
|
}
|
||||||
|
|
||||||
virtual void free(const void* p, unsigned)
|
virtual void free(const void* p, size_t)
|
||||||
{
|
{
|
||||||
s->free(p);
|
s->free(p);
|
||||||
}
|
}
|
||||||
|
@ -20,14 +20,14 @@ FixedAllocator::FixedAllocator(Aborter* a, Slice<uint8_t> memory)
|
|||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
void* FixedAllocator::tryAllocate(unsigned size)
|
void* FixedAllocator::tryAllocate(size_t size)
|
||||||
{
|
{
|
||||||
return allocate(size);
|
return allocate(size);
|
||||||
}
|
}
|
||||||
|
|
||||||
void* FixedAllocator::allocate(unsigned size, unsigned padAlignment)
|
void* FixedAllocator::allocate(size_t size, unsigned padAlignment)
|
||||||
{
|
{
|
||||||
unsigned paddedSize = vm::pad(size, padAlignment);
|
size_t paddedSize = vm::pad(size, padAlignment);
|
||||||
expect(a, offset + paddedSize < memory.count);
|
expect(a, offset + paddedSize < memory.count);
|
||||||
|
|
||||||
void* p = memory.begin() + offset;
|
void* p = memory.begin() + offset;
|
||||||
@ -35,12 +35,12 @@ void* FixedAllocator::allocate(unsigned size, unsigned padAlignment)
|
|||||||
return p;
|
return p;
|
||||||
}
|
}
|
||||||
|
|
||||||
void* FixedAllocator::allocate(unsigned size)
|
void* FixedAllocator::allocate(size_t size)
|
||||||
{
|
{
|
||||||
return allocate(size, vm::BytesPerWord);
|
return allocate(size, vm::BytesPerWord);
|
||||||
}
|
}
|
||||||
|
|
||||||
void FixedAllocator::free(const void* p, unsigned size)
|
void FixedAllocator::free(const void* p, size_t size)
|
||||||
{
|
{
|
||||||
if (p >= memory.begin()
|
if (p >= memory.begin()
|
||||||
and static_cast<const uint8_t*>(p) + size == memory.begin() + offset) {
|
and static_cast<const uint8_t*>(p) + size == memory.begin() + offset) {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user