/*
- * Copyright 2015 Facebook, Inc.
+ * Copyright 2017 Facebook, Inc.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* limitations under the License.
*/
-#ifndef FOLLY_ARENA_H_
+#pragma once
#define FOLLY_ARENA_H_
#include <cassert>
return r;
}
- void deallocate(void* p) {
+ void deallocate(void* /* p */) {
// Deallocate? Never!
}
return bytesUsed_;
}
- private:
// not copyable
Arena(const Arena&) = delete;
Arena& operator=(const Arena&) = delete;
Arena(Arena&&) = default;
Arena& operator=(Arena&&) = default;
+ private:
struct Block;
typedef boost::intrusive::slist_member_hook<
boost::intrusive::tag<Arena>> BlockLink;
- struct Block {
+ struct FOLLY_ALIGNED_MAX Block {
BlockLink link;
// Allocate a block with at least size bytes of storage.
private:
Block() = default;
~Block() = default;
- } __attribute__((__aligned__));
- // This should be alignas(std::max_align_t) but neither alignas nor
- // max_align_t are supported by gcc 4.6.2.
+ };
public:
static constexpr size_t kDefaultMinBlockSize = 4096 - sizeof(Block);
*/
template <class Alloc>
struct ArenaAllocatorTraits {
- static size_t goodSize(const Alloc& alloc, size_t size) {
- return size;
- }
+ static size_t goodSize(const Alloc& /* alloc */, size_t size) { return size; }
};
template <>
struct ArenaAllocatorTraits<SysAlloc> {
- static size_t goodSize(const SysAlloc& alloc, size_t size) {
+ static size_t goodSize(const SysAlloc& /* alloc */, size_t size) {
return goodMallocSize(size);
}
};
} // namespace folly
#include <folly/Arena-inl.h>
-
-#endif /* FOLLY_ARENA_H_ */