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

Side by Side Diff: src/heap/spaces.cc

Issue 463503002: Fix precisely sweeping asserts. (Closed) Base URL: https://v8.googlecode.com/svn/branches/bleeding_edge
Patch Set: Created 6 years, 4 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 unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « no previous file | no next file » | 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 #include "src/v8.h" 5 #include "src/v8.h"
6 6
7 #include "src/base/platform/platform.h" 7 #include "src/base/platform/platform.h"
8 #include "src/full-codegen.h" 8 #include "src/full-codegen.h"
9 #include "src/heap/mark-compact.h" 9 #include "src/heap/mark-compact.h"
10 #include "src/macro-assembler.h" 10 #include "src/macro-assembler.h"
(...skipping 29 matching lines...) Expand all
40 HeapObjectCallback size_func) { 40 HeapObjectCallback size_func) {
41 Space* owner = page->owner(); 41 Space* owner = page->owner();
42 DCHECK(owner == page->heap()->old_pointer_space() || 42 DCHECK(owner == page->heap()->old_pointer_space() ||
43 owner == page->heap()->old_data_space() || 43 owner == page->heap()->old_data_space() ||
44 owner == page->heap()->map_space() || 44 owner == page->heap()->map_space() ||
45 owner == page->heap()->cell_space() || 45 owner == page->heap()->cell_space() ||
46 owner == page->heap()->property_cell_space() || 46 owner == page->heap()->property_cell_space() ||
47 owner == page->heap()->code_space()); 47 owner == page->heap()->code_space());
48 Initialize(reinterpret_cast<PagedSpace*>(owner), page->area_start(), 48 Initialize(reinterpret_cast<PagedSpace*>(owner), page->area_start(),
49 page->area_end(), kOnePageOnly, size_func); 49 page->area_end(), kOnePageOnly, size_func);
50 DCHECK(page->WasSweptPrecisely() || page->SweepingCompleted()); 50 DCHECK(page->WasSweptPrecisely() ||
51 (static_cast<PagedSpace*>(owner)->swept_precisely() &&
52 page->SweepingCompleted()));
51 } 53 }
52 54
53 55
54 void HeapObjectIterator::Initialize(PagedSpace* space, Address cur, Address end, 56 void HeapObjectIterator::Initialize(PagedSpace* space, Address cur, Address end,
55 HeapObjectIterator::PageMode mode, 57 HeapObjectIterator::PageMode mode,
56 HeapObjectCallback size_f) { 58 HeapObjectCallback size_f) {
57 // Check that we actually can iterate this space. 59 // Check that we actually can iterate this space.
58 DCHECK(space->swept_precisely()); 60 DCHECK(space->swept_precisely());
59 61
60 space_ = space; 62 space_ = space;
(...skipping 13 matching lines...) Expand all
74 if (cur_addr_ == NULL) { 76 if (cur_addr_ == NULL) {
75 cur_page = space_->anchor(); 77 cur_page = space_->anchor();
76 } else { 78 } else {
77 cur_page = Page::FromAddress(cur_addr_ - 1); 79 cur_page = Page::FromAddress(cur_addr_ - 1);
78 DCHECK(cur_addr_ == cur_page->area_end()); 80 DCHECK(cur_addr_ == cur_page->area_end());
79 } 81 }
80 cur_page = cur_page->next_page(); 82 cur_page = cur_page->next_page();
81 if (cur_page == space_->anchor()) return false; 83 if (cur_page == space_->anchor()) return false;
82 cur_addr_ = cur_page->area_start(); 84 cur_addr_ = cur_page->area_start();
83 cur_end_ = cur_page->area_end(); 85 cur_end_ = cur_page->area_end();
84 DCHECK(cur_page->WasSweptPrecisely()); 86 DCHECK(cur_page->WasSweptPrecisely() ||
87 (static_cast<PagedSpace*>(cur_page->owner())->swept_precisely() &&
88 cur_page->SweepingCompleted()));
85 return true; 89 return true;
86 } 90 }
87 91
88 92
89 // ----------------------------------------------------------------------------- 93 // -----------------------------------------------------------------------------
90 // CodeRange 94 // CodeRange
91 95
92 96
93 CodeRange::CodeRange(Isolate* isolate) 97 CodeRange::CodeRange(Isolate* isolate)
94 : isolate_(isolate), 98 : isolate_(isolate),
(...skipping 3000 matching lines...) Expand 10 before | Expand all | Expand 10 after
3095 object->ShortPrint(); 3099 object->ShortPrint();
3096 PrintF("\n"); 3100 PrintF("\n");
3097 } 3101 }
3098 printf(" --------------------------------------\n"); 3102 printf(" --------------------------------------\n");
3099 printf(" Marked: %x, LiveCount: %x\n", mark_size, LiveBytes()); 3103 printf(" Marked: %x, LiveCount: %x\n", mark_size, LiveBytes());
3100 } 3104 }
3101 3105
3102 #endif // DEBUG 3106 #endif // DEBUG
3103 } 3107 }
3104 } // namespace v8::internal 3108 } // namespace v8::internal
OLDNEW
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698