OLD | NEW |
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_H_ | 5 #ifndef V8_HEAP_SPACES_H_ |
6 #define V8_HEAP_SPACES_H_ | 6 #define V8_HEAP_SPACES_H_ |
7 | 7 |
8 #include <list> | 8 #include <list> |
9 #include <memory> | 9 #include <memory> |
10 #include <unordered_set> | 10 #include <unordered_set> |
(...skipping 698 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
709 static_cast<intptr_t>(MemoryChunk::POINTERS_TO_HERE_ARE_INTERESTING) | | 709 static_cast<intptr_t>(MemoryChunk::POINTERS_TO_HERE_ARE_INTERESTING) | |
710 static_cast<intptr_t>(MemoryChunk::POINTERS_FROM_HERE_ARE_INTERESTING); | 710 static_cast<intptr_t>(MemoryChunk::POINTERS_FROM_HERE_ARE_INTERESTING); |
711 | 711 |
712 // Maximum object size that gets allocated into regular pages. Objects larger | 712 // Maximum object size that gets allocated into regular pages. Objects larger |
713 // than that size are allocated in large object space and are never moved in | 713 // than that size are allocated in large object space and are never moved in |
714 // memory. This also applies to new space allocation, since objects are never | 714 // memory. This also applies to new space allocation, since objects are never |
715 // migrated from new space to large object space. Takes double alignment into | 715 // migrated from new space to large object space. Takes double alignment into |
716 // account. | 716 // account. |
717 // TODO(hpayer): This limit should be way smaller but we currently have | 717 // TODO(hpayer): This limit should be way smaller but we currently have |
718 // short living objects >256K. | 718 // short living objects >256K. |
719 static const int kMaxRegularHeapObjectSize = 600 * KB; | 719 static const int kMaxRegularHeapObjectSize = 512 * KB - Page::kHeaderSize; |
720 | 720 |
721 static inline Page* ConvertNewToOld(Page* old_page, PagedSpace* new_owner); | 721 static inline Page* ConvertNewToOld(Page* old_page, PagedSpace* new_owner); |
722 | 722 |
723 // Returns the page containing a given address. The address ranges | 723 // Returns the page containing a given address. The address ranges |
724 // from [page_addr .. page_addr + kPageSize[. This only works if the object | 724 // from [page_addr .. page_addr + kPageSize[. This only works if the object |
725 // is in fact in a page. | 725 // is in fact in a page. |
726 static Page* FromAddress(Address addr) { | 726 static Page* FromAddress(Address addr) { |
727 return reinterpret_cast<Page*>(OffsetFrom(addr) & ~kPageAlignmentMask); | 727 return reinterpret_cast<Page*>(OffsetFrom(addr) & ~kPageAlignmentMask); |
728 } | 728 } |
729 | 729 |
(...skipping 2301 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
3031 count = 0; | 3031 count = 0; |
3032 } | 3032 } |
3033 // Must be small, since an iteration is used for lookup. | 3033 // Must be small, since an iteration is used for lookup. |
3034 static const int kMaxComments = 64; | 3034 static const int kMaxComments = 64; |
3035 }; | 3035 }; |
3036 #endif | 3036 #endif |
3037 } // namespace internal | 3037 } // namespace internal |
3038 } // namespace v8 | 3038 } // namespace v8 |
3039 | 3039 |
3040 #endif // V8_HEAP_SPACES_H_ | 3040 #endif // V8_HEAP_SPACES_H_ |
OLD | NEW |