Index: src/heap/heap.h |
diff --git a/src/heap/heap.h b/src/heap/heap.h |
index 624744f7ee02e495a9fb8ea281005cce0765911b..101c25fd180b3fc68ebb6f8b09e381070464c3d1 100644 |
--- a/src/heap/heap.h |
+++ b/src/heap/heap.h |
@@ -1352,6 +1352,16 @@ |
survived_since_last_expansion_ += survived; |
} |
+ inline intptr_t PromotedTotalSize() { |
+ int64_t total = PromotedSpaceSizeOfObjects() + PromotedExternalMemorySize(); |
+ if (total > std::numeric_limits<intptr_t>::max()) { |
+ // TODO(erikcorry): Use uintptr_t everywhere we do heap size calculations. |
+ return std::numeric_limits<intptr_t>::max(); |
+ } |
+ if (total < 0) return 0; |
+ return static_cast<intptr_t>(total); |
+ } |
+ |
inline void UpdateNewSpaceAllocationCounter(); |
inline size_t NewSpaceAllocationCounter(); |
@@ -1794,7 +1804,7 @@ |
// =========================================================================== |
inline intptr_t OldGenerationSpaceAvailable() { |
- return old_generation_allocation_limit_ - PromotedSpaceSizeOfObjects(); |
+ return old_generation_allocation_limit_ - PromotedTotalSize(); |
} |
// Returns maximum GC pause. |