Chromium Code Reviews| Index: src/zone/zone.h |
| diff --git a/src/zone.h b/src/zone/zone.h |
| similarity index 91% |
| rename from src/zone.h |
| rename to src/zone/zone.h |
| index 29055cb70d053547d44091cdfaf420e0f6736e2d..f9a861a459320c633b1ebcc3cd6509d015130ae5 100644 |
| --- a/src/zone.h |
| +++ b/src/zone/zone.h |
| @@ -2,25 +2,21 @@ |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| -#ifndef V8_ZONE_H_ |
| -#define V8_ZONE_H_ |
| +#ifndef V8_SRC_ZONE_ZONE_H_ |
|
marja
2016/09/19 08:05:11
Ditto
heimbuef
2016/09/19 10:47:52
Done.
|
| +#define V8_SRC_ZONE_ZONE_H_ |
| #include <limits> |
| -#include "src/base/accounting-allocator.h" |
| #include "src/base/hashmap.h" |
| #include "src/base/logging.h" |
| #include "src/globals.h" |
| #include "src/list.h" |
| #include "src/splay-tree.h" |
| +#include "src/zone/accounting-allocator.h" |
| namespace v8 { |
| namespace internal { |
| -// Forward declarations. |
| -class Segment; |
| - |
| - |
| // The Zone supports very fast allocation of small chunks of |
| // memory. The chunks cannot be deallocated individually, but instead |
| // the Zone supports deallocating all chunks in one fast |
| @@ -35,7 +31,7 @@ class Segment; |
| // from multi-threaded code. |
| class Zone final { |
| public: |
| - explicit Zone(base::AccountingAllocator* allocator); |
| + explicit Zone(AccountingAllocator* allocator); |
| ~Zone(); |
| // Allocate 'size' bytes of memory in the Zone; expands the Zone by |
| @@ -64,12 +60,13 @@ class Zone final { |
| size_t allocation_size() const { return allocation_size_; } |
| - base::AccountingAllocator* allocator() const { return allocator_; } |
| + AccountingAllocator* allocator() const { return allocator_; } |
| private: |
| - // All pointers returned from New() have this alignment. In addition, if the |
| - // object being allocated has a size that is divisible by 8 then its alignment |
| - // will be 8. ASan requires 8-byte alignment. |
| + friend class SegmentPool; |
|
marja
2016/09/19 08:05:11
Hmm, what? Is this CL based on some other CL and c
heimbuef
2016/09/19 10:47:52
Removed.
|
| +// All pointers returned from New() have this alignment. In addition, if the |
| +// object being allocated has a size that is divisible by 8 then its alignment |
| +// will be 8. ASan requires 8-byte alignment. |
| #ifdef V8_USE_ADDRESS_SANITIZER |
| static const size_t kAlignment = 8; |
| STATIC_ASSERT(kPointerSize <= 8); |
| @@ -107,21 +104,17 @@ class Zone final { |
| // of the segment chain. Returns the new segment. |
| inline Segment* NewSegment(size_t size); |
| - // Deletes the given segment. Does not touch the segment chain. |
| - inline void DeleteSegment(Segment* segment, size_t size); |
| - |
| // The free region in the current (front) segment is represented as |
| // the half-open interval [position, limit). The 'position' variable |
| // is guaranteed to be aligned as dictated by kAlignment. |
| Address position_; |
| Address limit_; |
| - base::AccountingAllocator* allocator_; |
| + AccountingAllocator* allocator_; |
| Segment* segment_head_; |
| }; |
| - |
| // ZoneObject is an abstraction that helps define classes of objects |
| // allocated in the Zone. Use it as a base class; see ast.h. |
| class ZoneObject { |
| @@ -141,12 +134,11 @@ class ZoneObject { |
| void operator delete(void* pointer, Zone* zone) { UNREACHABLE(); } |
| }; |
| - |
| // The ZoneScope is used to automatically call DeleteAll() on a |
| // Zone when the ZoneScope is destroyed (i.e. goes out of scope) |
| class ZoneScope final { |
| public: |
| - explicit ZoneScope(Zone* zone) : zone_(zone) { } |
| + explicit ZoneScope(Zone* zone) : zone_(zone) {} |
| ~ZoneScope() { zone_->DeleteAll(); } |
| Zone* zone() const { return zone_; } |
| @@ -155,12 +147,11 @@ class ZoneScope final { |
| Zone* zone_; |
| }; |
| - |
| // The ZoneAllocationPolicy is used to specialize generic data |
| // structures to allocate themselves and their elements in the Zone. |
| class ZoneAllocationPolicy final { |
| public: |
| - explicit ZoneAllocationPolicy(Zone* zone) : zone_(zone) { } |
| + explicit ZoneAllocationPolicy(Zone* zone) : zone_(zone) {} |
| void* New(size_t size) { return zone()->New(size); } |
| static void Delete(void* pointer) {} |
| Zone* zone() const { return zone_; } |
| @@ -169,7 +160,6 @@ class ZoneAllocationPolicy final { |
| Zone* zone_; |
| }; |
| - |
| // ZoneLists are growable lists with constant-time access to the |
| // elements. The list itself and all its elements are allocated in the |
| // Zone. ZoneLists cannot be deleted individually; you can delete all |
| @@ -180,7 +170,7 @@ class ZoneList final : public List<T, ZoneAllocationPolicy> { |
| // Construct a new ZoneList with the given capacity; the length is |
| // always zero. The capacity must be non-negative. |
| ZoneList(int capacity, Zone* zone) |
| - : List<T, ZoneAllocationPolicy>(capacity, ZoneAllocationPolicy(zone)) { } |
| + : List<T, ZoneAllocationPolicy>(capacity, ZoneAllocationPolicy(zone)) {} |
| void* operator new(size_t size, Zone* zone) { return zone->New(size); } |
| @@ -222,7 +212,6 @@ class ZoneList final : public List<T, ZoneAllocationPolicy> { |
| void operator delete(void* pointer, Zone* zone) { UNREACHABLE(); } |
| }; |
| - |
| // A zone splay tree. The config type parameter encapsulates the |
| // different configurations of a concrete splay tree (see splay-tree.h). |
| // The tree itself and all its elements are allocated in the Zone. |