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_SPACES_H_ | 5 #ifndef V8_SPACES_H_ |
6 #define V8_SPACES_H_ | 6 #define V8_SPACES_H_ |
7 | 7 |
8 #include "src/allocation.h" | 8 #include "src/allocation.h" |
9 #include "src/base/atomicops.h" | 9 #include "src/base/atomicops.h" |
10 #include "src/base/platform/mutex.h" | 10 #include "src/base/platform/mutex.h" |
(...skipping 1439 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1450 } | 1450 } |
1451 | 1451 |
1452 // Free allocated bytes, making them available (size -> available). | 1452 // Free allocated bytes, making them available (size -> available). |
1453 void DeallocateBytes(intptr_t size_in_bytes) { | 1453 void DeallocateBytes(intptr_t size_in_bytes) { |
1454 size_ -= size_in_bytes; | 1454 size_ -= size_in_bytes; |
1455 ASSERT(size_ >= 0); | 1455 ASSERT(size_ >= 0); |
1456 } | 1456 } |
1457 | 1457 |
1458 // Waste free bytes (available -> waste). | 1458 // Waste free bytes (available -> waste). |
1459 void WasteBytes(int size_in_bytes) { | 1459 void WasteBytes(int size_in_bytes) { |
1460 size_ -= size_in_bytes; | 1460 ASSERT(size_in_bytes >= 0); |
1461 waste_ += size_in_bytes; | 1461 waste_ += size_in_bytes; |
1462 ASSERT(size_ >= 0); | |
1463 } | 1462 } |
1464 | 1463 |
1465 private: | 1464 private: |
1466 intptr_t capacity_; | 1465 intptr_t capacity_; |
1467 intptr_t max_capacity_; | 1466 intptr_t max_capacity_; |
1468 intptr_t size_; | 1467 intptr_t size_; |
1469 intptr_t waste_; | 1468 intptr_t waste_; |
1470 }; | 1469 }; |
1471 | 1470 |
1472 | 1471 |
(...skipping 377 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1850 // Allocate the requested number of bytes in the space if possible, return a | 1849 // Allocate the requested number of bytes in the space if possible, return a |
1851 // failure object if not. | 1850 // failure object if not. |
1852 MUST_USE_RESULT inline AllocationResult AllocateRaw(int size_in_bytes); | 1851 MUST_USE_RESULT inline AllocationResult AllocateRaw(int size_in_bytes); |
1853 | 1852 |
1854 // Give a block of memory to the space's free list. It might be added to | 1853 // Give a block of memory to the space's free list. It might be added to |
1855 // the free list or accounted as waste. | 1854 // the free list or accounted as waste. |
1856 // If add_to_freelist is false then just accounting stats are updated and | 1855 // If add_to_freelist is false then just accounting stats are updated and |
1857 // no attempt to add area to free list is made. | 1856 // no attempt to add area to free list is made. |
1858 int Free(Address start, int size_in_bytes) { | 1857 int Free(Address start, int size_in_bytes) { |
1859 int wasted = free_list_.Free(start, size_in_bytes); | 1858 int wasted = free_list_.Free(start, size_in_bytes); |
1860 accounting_stats_.DeallocateBytes(size_in_bytes - wasted); | 1859 accounting_stats_.DeallocateBytes(size_in_bytes); |
| 1860 accounting_stats_.WasteBytes(wasted); |
1861 return size_in_bytes - wasted; | 1861 return size_in_bytes - wasted; |
1862 } | 1862 } |
1863 | 1863 |
1864 void ResetFreeList() { | 1864 void ResetFreeList() { |
1865 free_list_.Reset(); | 1865 free_list_.Reset(); |
1866 } | 1866 } |
1867 | 1867 |
1868 // Set space allocation info. | 1868 // Set space allocation info. |
1869 void SetTopAndLimit(Address top, Address limit) { | 1869 void SetTopAndLimit(Address top, Address limit) { |
1870 ASSERT(top == limit || | 1870 ASSERT(top == limit || |
(...skipping 1155 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
3026 } | 3026 } |
3027 // Must be small, since an iteration is used for lookup. | 3027 // Must be small, since an iteration is used for lookup. |
3028 static const int kMaxComments = 64; | 3028 static const int kMaxComments = 64; |
3029 }; | 3029 }; |
3030 #endif | 3030 #endif |
3031 | 3031 |
3032 | 3032 |
3033 } } // namespace v8::internal | 3033 } } // namespace v8::internal |
3034 | 3034 |
3035 #endif // V8_SPACES_H_ | 3035 #endif // V8_SPACES_H_ |
OLD | NEW |