Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(403)

Unified Diff: src/heap/heap-inl.h

Issue 2316513002: [heap] Cleanup heap.h (Closed)
Patch Set: Created 4 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « src/heap/heap.cc ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: src/heap/heap-inl.h
diff --git a/src/heap/heap-inl.h b/src/heap/heap-inl.h
index aacc94c1b873d9c8f8783afda5518e39a73e14ce..f7e1e4fb6ea7983eb92ef535f33e2b2af8ea9b4c 100644
--- a/src/heap/heap-inl.h
+++ b/src/heap/heap-inl.h
@@ -145,6 +145,67 @@ WELL_KNOWN_SYMBOL_LIST(SYMBOL_ACCESSOR)
ROOT_LIST(ROOT_ACCESSOR)
#undef ROOT_ACCESSOR
+PagedSpace* Heap::paged_space(int idx) {
+ switch (idx) {
+ case OLD_SPACE:
+ return old_space();
+ case MAP_SPACE:
+ return map_space();
+ case CODE_SPACE:
+ return code_space();
+ case NEW_SPACE:
+ case LO_SPACE:
+ UNREACHABLE();
+ }
+ return NULL;
+}
+
+Space* Heap::space(int idx) {
+ switch (idx) {
+ case NEW_SPACE:
+ return new_space();
+ case LO_SPACE:
+ return lo_space();
+ default:
+ return paged_space(idx);
+ }
+}
+
+Address* Heap::NewSpaceAllocationTopAddress() {
+ return new_space_.allocation_top_address();
+}
+
+Address* Heap::NewSpaceAllocationLimitAddress() {
+ return new_space_.allocation_limit_address();
+}
+
+Address* Heap::OldSpaceAllocationTopAddress() {
+ return old_space_->allocation_top_address();
+}
+
+Address* Heap::OldSpaceAllocationLimitAddress() {
+ return old_space_->allocation_limit_address();
+}
+
+bool Heap::HeapIsFullEnoughToStartIncrementalMarking(intptr_t limit) {
+ if (FLAG_stress_compaction && (gc_count_ & 1) != 0) return true;
+
+ intptr_t adjusted_allocation_limit = limit - new_space_.Capacity();
+
+ if (PromotedTotalSize() >= adjusted_allocation_limit) return true;
+
+ if (HighMemoryPressure()) return true;
+
+ return false;
+}
+
+void Heap::UpdateNewSpaceAllocationCounter() {
+ new_space_allocation_counter_ = NewSpaceAllocationCounter();
+}
+
+size_t Heap::NewSpaceAllocationCounter() {
+ return new_space_allocation_counter_ + new_space()->AllocatedSinceLastGC();
+}
template <>
bool inline Heap::IsOneByte(Vector<const char> str, int chars) {
@@ -413,7 +474,10 @@ void Heap::FinalizeExternalString(String* string) {
bool Heap::InNewSpace(Object* object) {
- bool result = new_space_.Contains(object);
+ // Inlined check from NewSpace::Contains.
+ bool result =
+ object->IsHeapObject() &&
+ Page::FromAddress(HeapObject::cast(object)->address())->InNewSpace();
DCHECK(!result || // Either not in new space
gc_state_ != NOT_IN_GC || // ... or in the middle of GC
InToSpace(object)); // ... or in to-space (where we allocate).
@@ -421,12 +485,16 @@ bool Heap::InNewSpace(Object* object) {
}
bool Heap::InFromSpace(Object* object) {
- return new_space_.FromSpaceContains(object);
+ return object->IsHeapObject() &&
+ MemoryChunk::FromAddress(HeapObject::cast(object)->address())
+ ->IsFlagSet(Page::IN_FROM_SPACE);
}
bool Heap::InToSpace(Object* object) {
- return new_space_.ToSpaceContains(object);
+ return object->IsHeapObject() &&
+ MemoryChunk::FromAddress(HeapObject::cast(object)->address())
+ ->IsFlagSet(Page::IN_TO_SPACE);
}
bool Heap::InOldSpace(Object* object) { return old_space_->Contains(object); }
« no previous file with comments | « src/heap/heap.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698