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

Side by Side Diff: src/heap/spaces-inl.h

Issue 2504193002: [heap] Simplify adjusting of live bytes. (Closed)
Patch Set: fix test Created 4 years, 1 month 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 unified diff | Download patch
« no previous file with comments | « src/heap/spaces.cc ('k') | src/ia32/deoptimizer-ia32.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2011 the V8 project authors. All rights reserved. 1 // Copyright 2011 the V8 project authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #ifndef V8_HEAP_SPACES_INL_H_ 5 #ifndef V8_HEAP_SPACES_INL_H_
6 #define V8_HEAP_SPACES_INL_H_ 6 #define V8_HEAP_SPACES_INL_H_
7 7
8 #include "src/heap/incremental-marking.h" 8 #include "src/heap/incremental-marking.h"
9 #include "src/heap/spaces.h" 9 #include "src/heap/spaces.h"
10 #include "src/isolate.h" 10 #include "src/isolate.h"
(...skipping 203 matching lines...) Expand 10 before | Expand all | Expand 10 after
214 new_page->InsertAfter(old_space->anchor()->prev_page()); 214 new_page->InsertAfter(old_space->anchor()->prev_page());
215 return new_page; 215 return new_page;
216 } 216 }
217 217
218 void Page::InitializeFreeListCategories() { 218 void Page::InitializeFreeListCategories() {
219 for (int i = kFirstCategory; i < kNumberOfCategories; i++) { 219 for (int i = kFirstCategory; i < kNumberOfCategories; i++) {
220 categories_[i].Initialize(static_cast<FreeListCategoryType>(i)); 220 categories_[i].Initialize(static_cast<FreeListCategoryType>(i));
221 } 221 }
222 } 222 }
223 223
224 void MemoryChunk::IncrementLiveBytesFromGC(HeapObject* object, int by) { 224 void MemoryChunk::IncrementLiveBytes(HeapObject* object, int by) {
225 MemoryChunk::FromAddress(object->address())->IncrementLiveBytes(by); 225 MemoryChunk::FromAddress(object->address())->IncrementLiveBytes(by);
226 } 226 }
227 227
228 void MemoryChunk::ResetLiveBytes() { 228 void MemoryChunk::ResetLiveBytes() {
229 if (FLAG_trace_live_bytes) { 229 if (FLAG_trace_live_bytes) {
230 PrintIsolate(heap()->isolate(), "live-bytes: reset page=%p %d->0\n", 230 PrintIsolate(heap()->isolate(), "live-bytes: reset page=%p %d->0\n",
231 static_cast<void*>(this), live_byte_count_); 231 static_cast<void*>(this), live_byte_count_);
232 } 232 }
233 live_byte_count_ = 0; 233 live_byte_count_ = 0;
234 } 234 }
235 235
236 void MemoryChunk::IncrementLiveBytes(int by) { 236 void MemoryChunk::IncrementLiveBytes(int by) {
237 if (FLAG_trace_live_bytes) { 237 if (FLAG_trace_live_bytes) {
238 PrintIsolate( 238 PrintIsolate(
239 heap()->isolate(), "live-bytes: update page=%p delta=%d %d->%d\n", 239 heap()->isolate(), "live-bytes: update page=%p delta=%d %d->%d\n",
240 static_cast<void*>(this), by, live_byte_count_, live_byte_count_ + by); 240 static_cast<void*>(this), by, live_byte_count_, live_byte_count_ + by);
241 } 241 }
242 live_byte_count_ += by; 242 live_byte_count_ += by;
243 DCHECK_GE(live_byte_count_, 0); 243 DCHECK_GE(live_byte_count_, 0);
244 DCHECK_LE(static_cast<size_t>(live_byte_count_), size_); 244 DCHECK_LE(static_cast<size_t>(live_byte_count_), size_);
245 } 245 }
246 246
247 void MemoryChunk::IncrementLiveBytesFromMutator(HeapObject* object, int by) {
248 MemoryChunk* chunk = MemoryChunk::FromAddress(object->address());
249 if (!chunk->InNewSpace() && !static_cast<Page*>(chunk)->SweepingDone()) {
250 static_cast<PagedSpace*>(chunk->owner())->Allocate(by);
251 }
252 chunk->IncrementLiveBytes(by);
253 }
254
255 bool PagedSpace::Contains(Address addr) { 247 bool PagedSpace::Contains(Address addr) {
256 Page* p = Page::FromAddress(addr); 248 Page* p = Page::FromAddress(addr);
257 if (!Page::IsValid(p)) return false; 249 if (!Page::IsValid(p)) return false;
258 return p->owner() == this; 250 return p->owner() == this;
259 } 251 }
260 252
261 bool PagedSpace::Contains(Object* o) { 253 bool PagedSpace::Contains(Object* o) {
262 if (!o->IsHeapObject()) return false; 254 if (!o->IsHeapObject()) return false;
263 Page* p = Page::FromAddress(HeapObject::cast(o)->address()); 255 Page* p = Page::FromAddress(HeapObject::cast(o)->address());
264 if (!Page::IsValid(p)) return false; 256 if (!Page::IsValid(p)) return false;
(...skipping 167 matching lines...) Expand 10 before | Expand all | Expand 10 after
432 HeapObject* object = AllocateLinearly(size_in_bytes); 424 HeapObject* object = AllocateLinearly(size_in_bytes);
433 425
434 if (object == NULL) { 426 if (object == NULL) {
435 object = free_list_.Allocate(size_in_bytes); 427 object = free_list_.Allocate(size_in_bytes);
436 if (object == NULL) { 428 if (object == NULL) {
437 object = SlowAllocateRaw(size_in_bytes); 429 object = SlowAllocateRaw(size_in_bytes);
438 } 430 }
439 if (object != NULL) { 431 if (object != NULL) {
440 if (heap()->incremental_marking()->black_allocation()) { 432 if (heap()->incremental_marking()->black_allocation()) {
441 Marking::MarkBlack(ObjectMarking::MarkBitFrom(object)); 433 Marking::MarkBlack(ObjectMarking::MarkBitFrom(object));
442 MemoryChunk::IncrementLiveBytesFromGC(object, size_in_bytes); 434 MemoryChunk::IncrementLiveBytes(object, size_in_bytes);
443 } 435 }
444 } 436 }
445 } 437 }
446 438
447 if (object != NULL) { 439 if (object != NULL) {
448 if (update_skip_list == UPDATE_SKIP_LIST && identity() == CODE_SPACE) { 440 if (update_skip_list == UPDATE_SKIP_LIST && identity() == CODE_SPACE) {
449 SkipList::Update(object->address(), size_in_bytes); 441 SkipList::Update(object->address(), size_in_bytes);
450 } 442 }
451 MSAN_ALLOCATED_UNINITIALIZED_MEMORY(object->address(), size_in_bytes); 443 MSAN_ALLOCATED_UNINITIALIZED_MEMORY(object->address(), size_in_bytes);
452 return object; 444 return object;
(...skipping 175 matching lines...) Expand 10 before | Expand all | Expand 10 after
628 other->allocation_info_.Reset(nullptr, nullptr); 620 other->allocation_info_.Reset(nullptr, nullptr);
629 return true; 621 return true;
630 } 622 }
631 return false; 623 return false;
632 } 624 }
633 625
634 } // namespace internal 626 } // namespace internal
635 } // namespace v8 627 } // namespace v8
636 628
637 #endif // V8_HEAP_SPACES_INL_H_ 629 #endif // V8_HEAP_SPACES_INL_H_
OLDNEW
« no previous file with comments | « src/heap/spaces.cc ('k') | src/ia32/deoptimizer-ia32.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698