Index: src/heap/spaces-inl.h |
diff --git a/src/heap/spaces-inl.h b/src/heap/spaces-inl.h |
index 3023fbf51ead410fba6a14aaab99dff05e5acf61..7ff4d5f261e433276979a9a1ddbc8c1c62b6f05e 100644 |
--- a/src/heap/spaces-inl.h |
+++ b/src/heap/spaces-inl.h |
@@ -178,6 +178,52 @@ void MemoryAllocator::UnprotectChunkFromPage(Page* page) { |
#endif |
+// ----------------------------------------------------------------------------- |
+// SemiSpace |
+ |
+bool SemiSpace::Contains(HeapObject* o) { |
+ return id_ == kToSpace |
+ ? MemoryChunk::FromAddress(o->address())->InToSpace() |
+ : MemoryChunk::FromAddress(o->address())->InFromSpace(); |
+} |
+ |
+bool SemiSpace::Contains(Object* o) { |
+ return o->IsHeapObject() && Contains(HeapObject::cast(o)); |
+} |
+ |
+bool SemiSpace::ContainsSlow(Address a) { |
Hannes Payer (out of office)
2016/02/08 16:05:40
This one is really slow and should be just used fo
Michael Lippautz
2016/02/08 18:00:38
Acknowledged.
|
+ NewSpacePageIterator it(this); |
+ while (it.has_next()) { |
+ if (it.next() == MemoryChunk::FromAddress(a)) return true; |
+ } |
+ return false; |
+} |
+ |
+// -------------------------------------------------------------------------- |
+// NewSpace |
+ |
+bool NewSpace::Contains(HeapObject* o) { |
+ return MemoryChunk::FromAddress(o->address())->InNewSpace(); |
+} |
+ |
+bool NewSpace::Contains(Object* o) { |
+ return o->IsHeapObject() && Contains(HeapObject::cast(o)); |
+} |
+ |
+bool NewSpace::ContainsSlow(Address a) { |
+ return from_space_.ContainsSlow(a) || to_space_.ContainsSlow(a); |
+} |
+ |
+bool NewSpace::ToSpaceContainsSlow(Address a) { |
+ return to_space_.ContainsSlow(a); |
+} |
+ |
+bool NewSpace::FromSpaceContainsSlow(Address a) { |
+ return from_space_.ContainsSlow(a); |
+} |
+ |
+bool NewSpace::ToSpaceContains(Object* o) { return to_space_.Contains(o); } |
+bool NewSpace::FromSpaceContains(Object* o) { return from_space_.Contains(o); } |
// -------------------------------------------------------------------------- |
// AllocationResult |