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 1626 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1637 intptr_t Available() { return free_list_.available(); } | 1637 intptr_t Available() { return free_list_.available(); } |
1638 | 1638 |
1639 // Allocated bytes in this space. Garbage bytes that were not found due to | 1639 // Allocated bytes in this space. Garbage bytes that were not found due to |
1640 // lazy sweeping are counted as being allocated! The bytes in the current | 1640 // lazy sweeping are counted as being allocated! The bytes in the current |
1641 // linear allocation area (between top and limit) are also counted here. | 1641 // linear allocation area (between top and limit) are also counted here. |
1642 virtual intptr_t Size() { return accounting_stats_.Size(); } | 1642 virtual intptr_t Size() { return accounting_stats_.Size(); } |
1643 | 1643 |
1644 // As size, but the bytes in lazily swept pages are estimated and the bytes | 1644 // As size, but the bytes in lazily swept pages are estimated and the bytes |
1645 // in the current linear allocation area are not included. | 1645 // in the current linear allocation area are not included. |
1646 virtual intptr_t SizeOfObjects() { | 1646 virtual intptr_t SizeOfObjects() { |
1647 ASSERT(!IsSweepingComplete() || (unswept_free_bytes_ == 0)); | 1647 // TODO(hpayer): broken when concurrent sweeping turned on |
| 1648 ASSERT(!IsLazySweepingComplete() || (unswept_free_bytes_ == 0)); |
1648 return Size() - unswept_free_bytes_ - (limit() - top()); | 1649 return Size() - unswept_free_bytes_ - (limit() - top()); |
1649 } | 1650 } |
1650 | 1651 |
1651 // Wasted bytes in this space. These are just the bytes that were thrown away | 1652 // Wasted bytes in this space. These are just the bytes that were thrown away |
1652 // due to being too small to use for allocation. They do not include the | 1653 // due to being too small to use for allocation. They do not include the |
1653 // free bytes that were not found at all due to lazy sweeping. | 1654 // free bytes that were not found at all due to lazy sweeping. |
1654 virtual intptr_t Waste() { return accounting_stats_.Waste(); } | 1655 virtual intptr_t Waste() { return accounting_stats_.Waste(); } |
1655 | 1656 |
1656 // Returns the allocation pointer in this space. | 1657 // Returns the allocation pointer in this space. |
1657 Address top() { return allocation_info_.top; } | 1658 Address top() { return allocation_info_.top; } |
(...skipping 98 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1756 unswept_free_bytes_ -= (p->area_size() - p->LiveBytes()); | 1757 unswept_free_bytes_ -= (p->area_size() - p->LiveBytes()); |
1757 } | 1758 } |
1758 | 1759 |
1759 bool AdvanceSweeper(intptr_t bytes_to_sweep); | 1760 bool AdvanceSweeper(intptr_t bytes_to_sweep); |
1760 | 1761 |
1761 // When parallel sweeper threads are active this function waits | 1762 // When parallel sweeper threads are active this function waits |
1762 // for them to complete, otherwise AdvanceSweeper with size_in_bytes | 1763 // for them to complete, otherwise AdvanceSweeper with size_in_bytes |
1763 // is called. | 1764 // is called. |
1764 bool EnsureSweeperProgress(intptr_t size_in_bytes); | 1765 bool EnsureSweeperProgress(intptr_t size_in_bytes); |
1765 | 1766 |
1766 bool IsSweepingComplete() { | 1767 bool IsLazySweepingComplete() { |
1767 return !first_unswept_page_->is_valid(); | 1768 return !first_unswept_page_->is_valid(); |
1768 } | 1769 } |
1769 | 1770 |
1770 Page* FirstPage() { return anchor_.next_page(); } | 1771 Page* FirstPage() { return anchor_.next_page(); } |
1771 Page* LastPage() { return anchor_.prev_page(); } | 1772 Page* LastPage() { return anchor_.prev_page(); } |
1772 | 1773 |
1773 void CountFreeListItems(Page* p, FreeList::SizeStats* sizes) { | 1774 void CountFreeListItems(Page* p, FreeList::SizeStats* sizes) { |
1774 free_list_.CountFreeListItems(p, sizes); | 1775 free_list_.CountFreeListItems(p, sizes); |
1775 } | 1776 } |
1776 | 1777 |
(...skipping 1043 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2820 } | 2821 } |
2821 // Must be small, since an iteration is used for lookup. | 2822 // Must be small, since an iteration is used for lookup. |
2822 static const int kMaxComments = 64; | 2823 static const int kMaxComments = 64; |
2823 }; | 2824 }; |
2824 #endif | 2825 #endif |
2825 | 2826 |
2826 | 2827 |
2827 } } // namespace v8::internal | 2828 } } // namespace v8::internal |
2828 | 2829 |
2829 #endif // V8_SPACES_H_ | 2830 #endif // V8_SPACES_H_ |
OLD | NEW |