Index: src/heap/spaces.h |
diff --git a/src/heap/spaces.h b/src/heap/spaces.h |
index 6f470e1f71d1c40dd24ebaef62753971fbdcade3..932222fa8cb7db80c1842ccd2ee67f6b08954aec 100644 |
--- a/src/heap/spaces.h |
+++ b/src/heap/spaces.h |
@@ -19,8 +19,8 @@ |
namespace v8 { |
namespace internal { |
+class AllocationObserver; |
class CompactionSpaceCollection; |
-class InlineAllocationObserver; |
class Isolate; |
// ----------------------------------------------------------------------------- |
@@ -2043,6 +2043,16 @@ class PagedSpace : public Space { |
MUST_USE_RESULT inline AllocationResult AllocateRaw( |
int size_in_bytes, AllocationAlignment alignment); |
+ void AddAllocationObserver(AllocationObserver* observer) { |
+ allocation_observers_.Add(observer); |
+ } |
+ |
+ void RemoveAllocationObserver(AllocationObserver* observer) { |
+ bool removed = allocation_observers_.RemoveElement(observer); |
+ static_cast<void>(removed); |
+ DCHECK(removed); |
+ } |
+ |
ofrobots
2016/01/23 16:16:31
Suggestion: These seem almost like a copy of the A
mattloring
2016/01/26 00:42:48
Done.
|
// Give a block of memory to the space's free list. It might be added to |
// the free list or accounted as waste. |
// If add_to_freelist is false then just accounting stats are updated and |
@@ -2197,6 +2207,9 @@ class PagedSpace : public Space { |
// The space's free list. |
FreeList free_list_; |
+ // Allocation observers |
+ List<AllocationObserver*> allocation_observers_; |
+ |
// Normal allocation information. |
AllocationInfo allocation_info_; |
@@ -2756,10 +2769,10 @@ class NewSpace : public Space { |
// called after every step_size bytes have been allocated (approximately). |
// This works by adjusting the allocation limit to a lower value and adjusting |
// it after each step. |
- void AddInlineAllocationObserver(InlineAllocationObserver* observer); |
+ void AddInlineAllocationObserver(AllocationObserver* observer); |
// Removes a previously installed observer. |
- void RemoveInlineAllocationObserver(InlineAllocationObserver* observer); |
+ void RemoveInlineAllocationObserver(AllocationObserver* observer); |
void DisableInlineAllocationSteps() { |
top_on_previous_step_ = 0; |
@@ -2866,7 +2879,7 @@ class NewSpace : public Space { |
// once in a while. This is done by setting allocation_info_.limit to be lower |
// than the actual limit and and increasing it in steps to guarantee that the |
// observers are notified periodically. |
- List<InlineAllocationObserver*> inline_allocation_observers_; |
+ List<AllocationObserver*> inline_allocation_observers_; |
Address top_on_previous_step_; |
bool inline_allocation_observers_paused_; |
@@ -3060,6 +3073,16 @@ class LargeObjectSpace : public Space { |
MUST_USE_RESULT AllocationResult |
AllocateRaw(int object_size, Executability executable); |
+ void AddAllocationObserver(AllocationObserver* observer) { |
+ allocation_observers_.Add(observer); |
+ } |
+ |
+ void RemoveAllocationObserver(AllocationObserver* observer) { |
+ bool removed = allocation_observers_.RemoveElement(observer); |
+ static_cast<void>(removed); |
+ DCHECK(removed); |
+ } |
+ |
// Available bytes for objects in this space. |
inline intptr_t Available() override; |
@@ -3117,6 +3140,9 @@ class LargeObjectSpace : public Space { |
// Map MemoryChunk::kAlignment-aligned chunks to large pages covering them |
HashMap chunk_map_; |
+ // Allocation observers |
+ List<AllocationObserver*> allocation_observers_; |
+ |
friend class LargeObjectIterator; |
}; |