OLD | NEW |
1 // Copyright 2011 the V8 project authors. All rights reserved. | 1 // Copyright 2011 the V8 project authors. All rights reserved. |
2 // Redistribution and use in source and binary forms, with or without | 2 // Redistribution and use in source and binary forms, with or without |
3 // modification, are permitted provided that the following conditions are | 3 // modification, are permitted provided that the following conditions are |
4 // met: | 4 // met: |
5 // | 5 // |
6 // * Redistributions of source code must retain the above copyright | 6 // * Redistributions of source code must retain the above copyright |
7 // notice, this list of conditions and the following disclaimer. | 7 // notice, this list of conditions and the following disclaimer. |
8 // * Redistributions in binary form must reproduce the above | 8 // * Redistributions in binary form must reproduce the above |
9 // copyright notice, this list of conditions and the following | 9 // copyright notice, this list of conditions and the following |
10 // disclaimer in the documentation and/or other materials provided | 10 // disclaimer in the documentation and/or other materials provided |
(...skipping 863 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
874 first_unswept_page_ = page->next_page(); | 874 first_unswept_page_ = page->next_page(); |
875 if (first_unswept_page_ == anchor()) { | 875 if (first_unswept_page_ == anchor()) { |
876 first_unswept_page_ = Page::FromAddress(NULL); | 876 first_unswept_page_ = Page::FromAddress(NULL); |
877 } | 877 } |
878 } | 878 } |
879 | 879 |
880 if (page->WasSwept()) { | 880 if (page->WasSwept()) { |
881 intptr_t size = free_list_.EvictFreeListItems(page); | 881 intptr_t size = free_list_.EvictFreeListItems(page); |
882 accounting_stats_.AllocateBytes(size); | 882 accounting_stats_.AllocateBytes(size); |
883 ASSERT_EQ(Page::kObjectAreaSize, static_cast<int>(size)); | 883 ASSERT_EQ(Page::kObjectAreaSize, static_cast<int>(size)); |
| 884 } else { |
| 885 DecreaseUnsweptFreeBytes(page); |
884 } | 886 } |
885 | 887 |
886 if (Page::FromAllocationTop(allocation_info_.top) == page) { | 888 if (Page::FromAllocationTop(allocation_info_.top) == page) { |
887 allocation_info_.top = allocation_info_.limit = NULL; | 889 allocation_info_.top = allocation_info_.limit = NULL; |
888 } | 890 } |
889 | 891 |
890 intptr_t size = page->ObjectAreaEnd() - page->ObjectAreaStart(); | 892 intptr_t size = page->ObjectAreaEnd() - page->ObjectAreaStart(); |
891 | 893 |
892 page->Unlink(); | 894 page->Unlink(); |
893 if (page->IsFlagSet(MemoryChunk::CONTAINS_ONLY_DATA)) { | 895 if (page->IsFlagSet(MemoryChunk::CONTAINS_ONLY_DATA)) { |
(...skipping 1379 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2273 | 2275 |
2274 intptr_t freed_bytes = 0; | 2276 intptr_t freed_bytes = 0; |
2275 Page* p = first_unswept_page_; | 2277 Page* p = first_unswept_page_; |
2276 do { | 2278 do { |
2277 Page* next_page = p->next_page(); | 2279 Page* next_page = p->next_page(); |
2278 if (ShouldBeSweptLazily(p)) { | 2280 if (ShouldBeSweptLazily(p)) { |
2279 if (FLAG_gc_verbose) { | 2281 if (FLAG_gc_verbose) { |
2280 PrintF("Sweeping 0x%" V8PRIxPTR " lazily advanced.\n", | 2282 PrintF("Sweeping 0x%" V8PRIxPTR " lazily advanced.\n", |
2281 reinterpret_cast<intptr_t>(p)); | 2283 reinterpret_cast<intptr_t>(p)); |
2282 } | 2284 } |
2283 unswept_free_bytes_ -= (Page::kObjectAreaSize - p->LiveBytes()); | 2285 DecreaseUnsweptFreeBytes(p); |
2284 freed_bytes += MarkCompactCollector::SweepConservatively(this, p); | 2286 freed_bytes += MarkCompactCollector::SweepConservatively(this, p); |
2285 } | 2287 } |
2286 p = next_page; | 2288 p = next_page; |
2287 } while (p != anchor() && freed_bytes < bytes_to_sweep); | 2289 } while (p != anchor() && freed_bytes < bytes_to_sweep); |
2288 | 2290 |
2289 if (p == anchor()) { | 2291 if (p == anchor()) { |
2290 first_unswept_page_ = Page::FromAddress(NULL); | 2292 first_unswept_page_ = Page::FromAddress(NULL); |
2291 } else { | 2293 } else { |
2292 first_unswept_page_ = p; | 2294 first_unswept_page_ = p; |
2293 } | 2295 } |
(...skipping 536 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2830 object->ShortPrint(); | 2832 object->ShortPrint(); |
2831 PrintF("\n"); | 2833 PrintF("\n"); |
2832 } | 2834 } |
2833 printf(" --------------------------------------\n"); | 2835 printf(" --------------------------------------\n"); |
2834 printf(" Marked: %x, LiveCount: %x\n", mark_size, LiveBytes()); | 2836 printf(" Marked: %x, LiveCount: %x\n", mark_size, LiveBytes()); |
2835 } | 2837 } |
2836 | 2838 |
2837 #endif // DEBUG | 2839 #endif // DEBUG |
2838 | 2840 |
2839 } } // namespace v8::internal | 2841 } } // namespace v8::internal |
OLD | NEW |