Chromium Code Reviews| Index: src/heap/spaces.h |
| diff --git a/src/heap/spaces.h b/src/heap/spaces.h |
| index 494d05c9c792e144fcce1849533fca4a27138826..20aed774d1515fc35cd78004875472b2870df0e2 100644 |
| --- a/src/heap/spaces.h |
| +++ b/src/heap/spaces.h |
| @@ -2435,6 +2435,25 @@ class NewSpace : public Space { |
| // Return the available bytes without growing. |
| intptr_t Available() override { return Capacity() - Size(); } |
| + intptr_t PagesFromStart(Address addr) { |
| + return static_cast<int>(addr - bottom()) / Page::kPageSize; |
|
Hannes Payer (out of office)
2015/05/12 17:04:17
cast to intptr_t
ulan
2015/05/18 12:45:51
Done.
|
| + } |
| + |
| + size_t AllocatedSinceLastGC() { |
| + intptr_t allocated = top() - to_space_.age_mark(); |
| + if (allocated < 0) { |
| + // Runtime has lowered the top below the age mark. |
| + return 0; |
| + } |
| + // Correctly account for non-allocatable regions at the beginning of |
| + // each page from the age_mark() to the top(). |
| + intptr_t pages = |
| + PagesFromStart(top()) - PagesFromStart(to_space_.age_mark()); |
| + allocated -= pages * (NewSpacePage::kObjectStartOffset); |
| + DCHECK(0 <= allocated && allocated <= Size()); |
| + return static_cast<size_t>(allocated); |
| + } |
| + |
| // Return the maximum capacity of a semispace. |
| int MaximumCapacity() { |
| DCHECK(to_space_.MaximumTotalCapacity() == |