| OLD | NEW |
| 1 // Copyright 2012 the V8 project authors. All rights reserved. | 1 // Copyright 2012 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_HEAP_H_ | 5 #ifndef V8_HEAP_HEAP_H_ |
| 6 #define V8_HEAP_HEAP_H_ | 6 #define V8_HEAP_HEAP_H_ |
| 7 | 7 |
| 8 #include <cmath> | 8 #include <cmath> |
| 9 | 9 |
| 10 #include "src/allocation.h" | 10 #include "src/allocation.h" |
| (...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 45 V(Map, meta_map, MetaMap) \ | 45 V(Map, meta_map, MetaMap) \ |
| 46 V(Map, heap_number_map, HeapNumberMap) \ | 46 V(Map, heap_number_map, HeapNumberMap) \ |
| 47 V(Map, mutable_heap_number_map, MutableHeapNumberMap) \ | 47 V(Map, mutable_heap_number_map, MutableHeapNumberMap) \ |
| 48 V(Map, native_context_map, NativeContextMap) \ | 48 V(Map, native_context_map, NativeContextMap) \ |
| 49 V(Map, fixed_array_map, FixedArrayMap) \ | 49 V(Map, fixed_array_map, FixedArrayMap) \ |
| 50 V(Map, code_map, CodeMap) \ | 50 V(Map, code_map, CodeMap) \ |
| 51 V(Map, scope_info_map, ScopeInfoMap) \ | 51 V(Map, scope_info_map, ScopeInfoMap) \ |
| 52 V(Map, fixed_cow_array_map, FixedCOWArrayMap) \ | 52 V(Map, fixed_cow_array_map, FixedCOWArrayMap) \ |
| 53 V(Map, fixed_double_array_map, FixedDoubleArrayMap) \ | 53 V(Map, fixed_double_array_map, FixedDoubleArrayMap) \ |
| 54 V(Map, constant_pool_array_map, ConstantPoolArrayMap) \ | 54 V(Map, constant_pool_array_map, ConstantPoolArrayMap) \ |
| 55 V(Map, weak_cell_map, WeakCellMap) \ |
| 55 V(Oddball, no_interceptor_result_sentinel, NoInterceptorResultSentinel) \ | 56 V(Oddball, no_interceptor_result_sentinel, NoInterceptorResultSentinel) \ |
| 56 V(Map, hash_table_map, HashTableMap) \ | 57 V(Map, hash_table_map, HashTableMap) \ |
| 57 V(Map, ordered_hash_table_map, OrderedHashTableMap) \ | 58 V(Map, ordered_hash_table_map, OrderedHashTableMap) \ |
| 58 V(FixedArray, empty_fixed_array, EmptyFixedArray) \ | 59 V(FixedArray, empty_fixed_array, EmptyFixedArray) \ |
| 59 V(ByteArray, empty_byte_array, EmptyByteArray) \ | 60 V(ByteArray, empty_byte_array, EmptyByteArray) \ |
| 60 V(DescriptorArray, empty_descriptor_array, EmptyDescriptorArray) \ | 61 V(DescriptorArray, empty_descriptor_array, EmptyDescriptorArray) \ |
| 61 V(ConstantPoolArray, empty_constant_pool_array, EmptyConstantPoolArray) \ | 62 V(ConstantPoolArray, empty_constant_pool_array, EmptyConstantPoolArray) \ |
| 62 V(Oddball, arguments_marker, ArgumentsMarker) \ | 63 V(Oddball, arguments_marker, ArgumentsMarker) \ |
| 63 /* The roots above this line should be boring from a GC point of view. */ \ | 64 /* The roots above this line should be boring from a GC point of view. */ \ |
| 64 /* This means they are never in new space and never on a page that is */ \ | 65 /* This means they are never in new space and never on a page that is */ \ |
| (...skipping 151 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 216 V(meta_map) \ | 217 V(meta_map) \ |
| 217 V(heap_number_map) \ | 218 V(heap_number_map) \ |
| 218 V(mutable_heap_number_map) \ | 219 V(mutable_heap_number_map) \ |
| 219 V(native_context_map) \ | 220 V(native_context_map) \ |
| 220 V(fixed_array_map) \ | 221 V(fixed_array_map) \ |
| 221 V(code_map) \ | 222 V(code_map) \ |
| 222 V(scope_info_map) \ | 223 V(scope_info_map) \ |
| 223 V(fixed_cow_array_map) \ | 224 V(fixed_cow_array_map) \ |
| 224 V(fixed_double_array_map) \ | 225 V(fixed_double_array_map) \ |
| 225 V(constant_pool_array_map) \ | 226 V(constant_pool_array_map) \ |
| 227 V(weak_cell_map) \ |
| 226 V(no_interceptor_result_sentinel) \ | 228 V(no_interceptor_result_sentinel) \ |
| 227 V(hash_table_map) \ | 229 V(hash_table_map) \ |
| 228 V(ordered_hash_table_map) \ | 230 V(ordered_hash_table_map) \ |
| 229 V(empty_fixed_array) \ | 231 V(empty_fixed_array) \ |
| 230 V(empty_byte_array) \ | 232 V(empty_byte_array) \ |
| 231 V(empty_descriptor_array) \ | 233 V(empty_descriptor_array) \ |
| 232 V(empty_constant_pool_array) \ | 234 V(empty_constant_pool_array) \ |
| 233 V(arguments_marker) \ | 235 V(arguments_marker) \ |
| 234 V(symbol_map) \ | 236 V(symbol_map) \ |
| 235 V(sloppy_arguments_elements_map) \ | 237 V(sloppy_arguments_elements_map) \ |
| (...skipping 586 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 822 | 824 |
| 823 Object* weak_object_to_code_table() { return weak_object_to_code_table_; } | 825 Object* weak_object_to_code_table() { return weak_object_to_code_table_; } |
| 824 | 826 |
| 825 void set_encountered_weak_collections(Object* weak_collection) { | 827 void set_encountered_weak_collections(Object* weak_collection) { |
| 826 encountered_weak_collections_ = weak_collection; | 828 encountered_weak_collections_ = weak_collection; |
| 827 } | 829 } |
| 828 Object* encountered_weak_collections() const { | 830 Object* encountered_weak_collections() const { |
| 829 return encountered_weak_collections_; | 831 return encountered_weak_collections_; |
| 830 } | 832 } |
| 831 | 833 |
| 834 void set_encountered_weak_cells(Object* weak_cell) { |
| 835 encountered_weak_cells_ = weak_cell; |
| 836 } |
| 837 Object* encountered_weak_cells() const { return encountered_weak_cells_; } |
| 838 |
| 832 // Number of mark-sweeps. | 839 // Number of mark-sweeps. |
| 833 unsigned int ms_count() { return ms_count_; } | 840 unsigned int ms_count() { return ms_count_; } |
| 834 | 841 |
| 835 // Iterates over all roots in the heap. | 842 // Iterates over all roots in the heap. |
| 836 void IterateRoots(ObjectVisitor* v, VisitMode mode); | 843 void IterateRoots(ObjectVisitor* v, VisitMode mode); |
| 837 // Iterates over all strong roots in the heap. | 844 // Iterates over all strong roots in the heap. |
| 838 void IterateStrongRoots(ObjectVisitor* v, VisitMode mode); | 845 void IterateStrongRoots(ObjectVisitor* v, VisitMode mode); |
| 839 // Iterates over entries in the smi roots list. Only interesting to the | 846 // Iterates over entries in the smi roots list. Only interesting to the |
| 840 // serializer/deserializer, since GC does not care about smis. | 847 // serializer/deserializer, since GC does not care about smis. |
| 841 void IterateSmiRoots(ObjectVisitor* v); | 848 void IterateSmiRoots(ObjectVisitor* v); |
| (...skipping 710 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1552 // WeakHashTable that maps objects embedded in optimized code to dependent | 1559 // WeakHashTable that maps objects embedded in optimized code to dependent |
| 1553 // code list. It is initilized lazily and contains the undefined_value at | 1560 // code list. It is initilized lazily and contains the undefined_value at |
| 1554 // start. | 1561 // start. |
| 1555 Object* weak_object_to_code_table_; | 1562 Object* weak_object_to_code_table_; |
| 1556 | 1563 |
| 1557 // List of encountered weak collections (JSWeakMap and JSWeakSet) during | 1564 // List of encountered weak collections (JSWeakMap and JSWeakSet) during |
| 1558 // marking. It is initialized during marking, destroyed after marking and | 1565 // marking. It is initialized during marking, destroyed after marking and |
| 1559 // contains Smi(0) while marking is not active. | 1566 // contains Smi(0) while marking is not active. |
| 1560 Object* encountered_weak_collections_; | 1567 Object* encountered_weak_collections_; |
| 1561 | 1568 |
| 1569 Object* encountered_weak_cells_; |
| 1570 |
| 1562 StoreBufferRebuilder store_buffer_rebuilder_; | 1571 StoreBufferRebuilder store_buffer_rebuilder_; |
| 1563 | 1572 |
| 1564 struct StringTypeTable { | 1573 struct StringTypeTable { |
| 1565 InstanceType type; | 1574 InstanceType type; |
| 1566 int size; | 1575 int size; |
| 1567 RootListIndex index; | 1576 RootListIndex index; |
| 1568 }; | 1577 }; |
| 1569 | 1578 |
| 1570 struct ConstantStringTable { | 1579 struct ConstantStringTable { |
| 1571 const char* contents; | 1580 const char* contents; |
| (...skipping 260 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1832 | 1841 |
| 1833 // Allocate empty constant pool array. | 1842 // Allocate empty constant pool array. |
| 1834 MUST_USE_RESULT AllocationResult AllocateEmptyConstantPoolArray(); | 1843 MUST_USE_RESULT AllocationResult AllocateEmptyConstantPoolArray(); |
| 1835 | 1844 |
| 1836 // Allocate a tenured simple cell. | 1845 // Allocate a tenured simple cell. |
| 1837 MUST_USE_RESULT AllocationResult AllocateCell(Object* value); | 1846 MUST_USE_RESULT AllocationResult AllocateCell(Object* value); |
| 1838 | 1847 |
| 1839 // Allocate a tenured JS global property cell initialized with the hole. | 1848 // Allocate a tenured JS global property cell initialized with the hole. |
| 1840 MUST_USE_RESULT AllocationResult AllocatePropertyCell(); | 1849 MUST_USE_RESULT AllocationResult AllocatePropertyCell(); |
| 1841 | 1850 |
| 1851 MUST_USE_RESULT AllocationResult AllocateWeakCell(HeapObject* value); |
| 1852 |
| 1842 // Allocates a new utility object in the old generation. | 1853 // Allocates a new utility object in the old generation. |
| 1843 MUST_USE_RESULT AllocationResult AllocateStruct(InstanceType type); | 1854 MUST_USE_RESULT AllocationResult AllocateStruct(InstanceType type); |
| 1844 | 1855 |
| 1845 // Allocates a new foreign object. | 1856 // Allocates a new foreign object. |
| 1846 MUST_USE_RESULT AllocationResult | 1857 MUST_USE_RESULT AllocationResult |
| 1847 AllocateForeign(Address address, PretenureFlag pretenure = NOT_TENURED); | 1858 AllocateForeign(Address address, PretenureFlag pretenure = NOT_TENURED); |
| 1848 | 1859 |
| 1849 MUST_USE_RESULT AllocationResult | 1860 MUST_USE_RESULT AllocationResult |
| 1850 AllocateCode(int object_size, bool immovable); | 1861 AllocateCode(int object_size, bool immovable); |
| 1851 | 1862 |
| (...skipping 668 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2520 DisallowHeapAllocation no_allocation; // i.e. no gc allowed. | 2531 DisallowHeapAllocation no_allocation; // i.e. no gc allowed. |
| 2521 | 2532 |
| 2522 private: | 2533 private: |
| 2523 DISALLOW_IMPLICIT_CONSTRUCTORS(PathTracer); | 2534 DISALLOW_IMPLICIT_CONSTRUCTORS(PathTracer); |
| 2524 }; | 2535 }; |
| 2525 #endif // DEBUG | 2536 #endif // DEBUG |
| 2526 } | 2537 } |
| 2527 } // namespace v8::internal | 2538 } // namespace v8::internal |
| 2528 | 2539 |
| 2529 #endif // V8_HEAP_HEAP_H_ | 2540 #endif // V8_HEAP_HEAP_H_ |
| OLD | NEW |