Chromium Code Reviews| Index: src/spaces.h |
| =================================================================== |
| --- src/spaces.h (revision 2676) |
| +++ src/spaces.h (working copy) |
| @@ -367,6 +367,13 @@ |
| // and false otherwise. |
| static bool CommitBlock(Address start, size_t size, Executability executable); |
| + |
| + // Uncommit a contiguous block of memory [start..(start+size)[. |
| + // start is not NULL, the size is greater than zero, and that the |
|
Mads Ager (chromium)
2009/08/13 12:00:56
and that the -> and the
|
| + // block is contained in the initial chunk. Returns true if it succeeded |
| + // and false otherwise. |
| + static bool UncommitBlock(Address start, size_t size); |
| + |
| // Attempts to allocate the requested (non-zero) number of pages from the |
| // OS. Fewer pages might be allocated than requested. If it fails to |
| // allocate memory for the OS or cannot allocate a single page, this |
| @@ -1035,6 +1042,10 @@ |
| return 0; |
| } |
| + bool is_committed() { return committed_; } |
| + bool Commit(); |
| + bool Uncommit(); |
| + |
| #ifdef DEBUG |
| virtual void Print(); |
| virtual void Verify(); |
| @@ -1058,6 +1069,8 @@ |
| uintptr_t object_mask_; |
| uintptr_t object_expected_; |
| + bool committed_; |
| + |
| public: |
| TRACK_MEMORY("SemiSpace") |
| }; |
| @@ -1250,6 +1263,17 @@ |
| void RecordPromotion(HeapObject* obj); |
| #endif |
| + // Return whether the operation succeded. |
| + bool CommitFromSpaceIfNeeded() { |
| + if (from_space_.is_committed()) return true; |
| + return from_space_.Commit(); |
| + } |
| + |
| + bool UncommitFromSpace() { |
| + if (!from_space_.is_committed()) return true; |
| + return from_space_.Uncommit(); |
| + } |
| + |
| private: |
| // The current and maximum capacities of a semispace. |
| int capacity_; |