Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(3)

Side by Side Diff: src/heap/heap.h

Issue 2490523003: [heap] Use size_t for heap and space counters. (Closed)
Patch Set: more fixes Created 4 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « src/heap/gc-tracer.cc ('k') | src/heap/heap.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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 #include <map> 9 #include <map>
10 10
(...skipping 910 matching lines...) Expand 10 before | Expand all | Expand 10 after
921 inline void OnAllocationEvent(HeapObject* object, int size_in_bytes); 921 inline void OnAllocationEvent(HeapObject* object, int size_in_bytes);
922 922
923 // This event is triggered after object is moved to a new place. 923 // This event is triggered after object is moved to a new place.
924 inline void OnMoveEvent(HeapObject* target, HeapObject* source, 924 inline void OnMoveEvent(HeapObject* target, HeapObject* source,
925 int size_in_bytes); 925 int size_in_bytes);
926 926
927 bool deserialization_complete() const { return deserialization_complete_; } 927 bool deserialization_complete() const { return deserialization_complete_; }
928 928
929 bool HasLowAllocationRate(); 929 bool HasLowAllocationRate();
930 bool HasHighFragmentation(); 930 bool HasHighFragmentation();
931 bool HasHighFragmentation(intptr_t used, intptr_t committed); 931 bool HasHighFragmentation(size_t used, size_t committed);
932 932
933 void ActivateMemoryReducerIfNeeded(); 933 void ActivateMemoryReducerIfNeeded();
934 934
935 bool ShouldOptimizeForMemoryUsage(); 935 bool ShouldOptimizeForMemoryUsage();
936 936
937 bool IsLowMemoryDevice() { 937 bool IsLowMemoryDevice() {
938 return max_old_generation_size_ <= kMaxOldSpaceSizeLowMemoryDevice; 938 return max_old_generation_size_ <= kMaxOldSpaceSizeLowMemoryDevice;
939 } 939 }
940 940
941 bool IsMemoryConstrainedDevice() { 941 bool IsMemoryConstrainedDevice() {
942 return max_old_generation_size_ <= kMaxOldSpaceSizeMediumMemoryDevice; 942 return max_old_generation_size_ <= kMaxOldSpaceSizeMediumMemoryDevice;
943 } 943 }
944 944
945 bool HighMemoryPressure() { 945 bool HighMemoryPressure() {
946 return memory_pressure_level_.Value() != MemoryPressureLevel::kNone; 946 return memory_pressure_level_.Value() != MemoryPressureLevel::kNone;
947 } 947 }
948 948
949 // =========================================================================== 949 // ===========================================================================
950 // Initialization. =========================================================== 950 // Initialization. ===========================================================
951 // =========================================================================== 951 // ===========================================================================
952 952
953 // Configure heap size in MB before setup. Return false if the heap has been 953 // Configure heap size in MB before setup. Return false if the heap has been
954 // set up already. 954 // set up already.
955 bool ConfigureHeap(int max_semi_space_size, int max_old_space_size, 955 bool ConfigureHeap(size_t max_semi_space_size, size_t max_old_space_size,
956 int max_executable_size, size_t code_range_size); 956 size_t max_executable_size, size_t code_range_size);
957 bool ConfigureHeapDefault(); 957 bool ConfigureHeapDefault();
958 958
959 // Prepares the heap, setting up memory areas that are needed in the isolate 959 // Prepares the heap, setting up memory areas that are needed in the isolate
960 // without actually creating any objects. 960 // without actually creating any objects.
961 bool SetUp(); 961 bool SetUp();
962 962
963 // Bootstraps the object heap with the core set of objects required to run. 963 // Bootstraps the object heap with the core set of objects required to run.
964 // Returns whether it succeeded. 964 // Returns whether it succeeded.
965 bool CreateHeapObjects(); 965 bool CreateHeapObjects();
966 966
(...skipping 319 matching lines...) Expand 10 before | Expand all | Expand 10 after
1286 // =========================================================================== 1286 // ===========================================================================
1287 1287
1288 // Collect code (Code and BytecodeArray objects) statistics. 1288 // Collect code (Code and BytecodeArray objects) statistics.
1289 void CollectCodeStatistics(); 1289 void CollectCodeStatistics();
1290 1290
1291 // =========================================================================== 1291 // ===========================================================================
1292 // GC statistics. ============================================================ 1292 // GC statistics. ============================================================
1293 // =========================================================================== 1293 // ===========================================================================
1294 1294
1295 // Returns the maximum amount of memory reserved for the heap. 1295 // Returns the maximum amount of memory reserved for the heap.
1296 intptr_t MaxReserved() { 1296 size_t MaxReserved() {
1297 return 2 * max_semi_space_size_ + max_old_generation_size_; 1297 return 2 * max_semi_space_size_ + max_old_generation_size_;
1298 } 1298 }
1299 int MaxSemiSpaceSize() { return max_semi_space_size_; } 1299 size_t MaxSemiSpaceSize() { return max_semi_space_size_; }
1300 int InitialSemiSpaceSize() { return initial_semispace_size_; } 1300 size_t InitialSemiSpaceSize() { return initial_semispace_size_; }
1301 intptr_t MaxOldGenerationSize() { return max_old_generation_size_; } 1301 size_t MaxOldGenerationSize() { return max_old_generation_size_; }
1302 intptr_t MaxExecutableSize() { return max_executable_size_; } 1302 size_t MaxExecutableSize() { return max_executable_size_; }
1303 1303
1304 // Returns the capacity of the heap in bytes w/o growing. Heap grows when 1304 // Returns the capacity of the heap in bytes w/o growing. Heap grows when
1305 // more spaces are needed until it reaches the limit. 1305 // more spaces are needed until it reaches the limit.
1306 intptr_t Capacity(); 1306 size_t Capacity();
1307 1307
1308 // Returns the capacity of the old generation. 1308 // Returns the capacity of the old generation.
1309 intptr_t OldGenerationCapacity(); 1309 size_t OldGenerationCapacity();
1310 1310
1311 // Returns the amount of memory currently committed for the heap. 1311 // Returns the amount of memory currently committed for the heap.
1312 size_t CommittedMemory(); 1312 size_t CommittedMemory();
1313 1313
1314 // Returns the amount of memory currently committed for the old space. 1314 // Returns the amount of memory currently committed for the old space.
1315 size_t CommittedOldGenerationMemory(); 1315 size_t CommittedOldGenerationMemory();
1316 1316
1317 // Returns the amount of executable memory currently committed for the heap. 1317 // Returns the amount of executable memory currently committed for the heap.
1318 size_t CommittedMemoryExecutable(); 1318 size_t CommittedMemoryExecutable();
1319 1319
1320 // Returns the amount of phyical memory currently committed for the heap. 1320 // Returns the amount of phyical memory currently committed for the heap.
1321 size_t CommittedPhysicalMemory(); 1321 size_t CommittedPhysicalMemory();
1322 1322
1323 // Returns the maximum amount of memory ever committed for the heap. 1323 // Returns the maximum amount of memory ever committed for the heap.
1324 size_t MaximumCommittedMemory() { return maximum_committed_; } 1324 size_t MaximumCommittedMemory() { return maximum_committed_; }
1325 1325
1326 // Updates the maximum committed memory for the heap. Should be called 1326 // Updates the maximum committed memory for the heap. Should be called
1327 // whenever a space grows. 1327 // whenever a space grows.
1328 void UpdateMaximumCommitted(); 1328 void UpdateMaximumCommitted();
1329 1329
1330 // Returns the available bytes in space w/o growing. 1330 // Returns the available bytes in space w/o growing.
1331 // Heap doesn't guarantee that it can allocate an object that requires 1331 // Heap doesn't guarantee that it can allocate an object that requires
1332 // all available bytes. Check MaxHeapObjectSize() instead. 1332 // all available bytes. Check MaxHeapObjectSize() instead.
1333 intptr_t Available(); 1333 size_t Available();
1334 1334
1335 // Returns of size of all objects residing in the heap. 1335 // Returns of size of all objects residing in the heap.
1336 intptr_t SizeOfObjects(); 1336 size_t SizeOfObjects();
1337 1337
1338 void UpdateSurvivalStatistics(int start_new_space_size); 1338 void UpdateSurvivalStatistics(int start_new_space_size);
1339 1339
1340 inline void IncrementPromotedObjectsSize(intptr_t object_size) { 1340 inline void IncrementPromotedObjectsSize(size_t object_size) {
1341 DCHECK_GE(object_size, 0);
1342 promoted_objects_size_ += object_size; 1341 promoted_objects_size_ += object_size;
1343 } 1342 }
1344 inline intptr_t promoted_objects_size() { return promoted_objects_size_; } 1343 inline size_t promoted_objects_size() { return promoted_objects_size_; }
1345 1344
1346 inline void IncrementSemiSpaceCopiedObjectSize(intptr_t object_size) { 1345 inline void IncrementSemiSpaceCopiedObjectSize(size_t object_size) {
1347 DCHECK_GE(object_size, 0);
1348 semi_space_copied_object_size_ += object_size; 1346 semi_space_copied_object_size_ += object_size;
1349 } 1347 }
1350 inline intptr_t semi_space_copied_object_size() { 1348 inline size_t semi_space_copied_object_size() {
1351 return semi_space_copied_object_size_; 1349 return semi_space_copied_object_size_;
1352 } 1350 }
1353 1351
1354 inline intptr_t SurvivedNewSpaceObjectSize() { 1352 inline size_t SurvivedNewSpaceObjectSize() {
1355 return promoted_objects_size_ + semi_space_copied_object_size_; 1353 return promoted_objects_size_ + semi_space_copied_object_size_;
1356 } 1354 }
1357 1355
1358 inline void IncrementNodesDiedInNewSpace() { nodes_died_in_new_space_++; } 1356 inline void IncrementNodesDiedInNewSpace() { nodes_died_in_new_space_++; }
1359 1357
1360 inline void IncrementNodesCopiedInNewSpace() { nodes_copied_in_new_space_++; } 1358 inline void IncrementNodesCopiedInNewSpace() { nodes_copied_in_new_space_++; }
1361 1359
1362 inline void IncrementNodesPromoted() { nodes_promoted_++; } 1360 inline void IncrementNodesPromoted() { nodes_promoted_++; }
1363 1361
1364 inline void IncrementYoungSurvivorsCounter(intptr_t survived) { 1362 inline void IncrementYoungSurvivorsCounter(size_t survived) {
1365 DCHECK_GE(survived, 0);
1366 survived_last_scavenge_ = survived; 1363 survived_last_scavenge_ = survived;
1367 survived_since_last_expansion_ += survived; 1364 survived_since_last_expansion_ += survived;
1368 } 1365 }
1369 1366
1370 inline intptr_t PromotedTotalSize() { 1367 inline uint64_t PromotedTotalSize() {
1371 int64_t total = PromotedSpaceSizeOfObjects() + PromotedExternalMemorySize(); 1368 return PromotedSpaceSizeOfObjects() + PromotedExternalMemorySize();
1372 if (total > std::numeric_limits<intptr_t>::max()) {
1373 // TODO(erikcorry): Use uintptr_t everywhere we do heap size calculations.
1374 return std::numeric_limits<intptr_t>::max();
1375 }
1376 if (total < 0) return 0;
1377 return static_cast<intptr_t>(total);
1378 } 1369 }
1379 1370
1380 inline void UpdateNewSpaceAllocationCounter(); 1371 inline void UpdateNewSpaceAllocationCounter();
1381 1372
1382 inline size_t NewSpaceAllocationCounter(); 1373 inline size_t NewSpaceAllocationCounter();
1383 1374
1384 // This should be used only for testing. 1375 // This should be used only for testing.
1385 void set_new_space_allocation_counter(size_t new_value) { 1376 void set_new_space_allocation_counter(size_t new_value) {
1386 new_space_allocation_counter_ = new_value; 1377 new_space_allocation_counter_ = new_value;
1387 } 1378 }
(...skipping 13 matching lines...) Expand all
1401 old_generation_allocation_counter_at_last_gc_ = new_value; 1392 old_generation_allocation_counter_at_last_gc_ = new_value;
1402 } 1393 }
1403 1394
1404 size_t PromotedSinceLastGC() { 1395 size_t PromotedSinceLastGC() {
1405 return PromotedSpaceSizeOfObjects() - old_generation_size_at_last_gc_; 1396 return PromotedSpaceSizeOfObjects() - old_generation_size_at_last_gc_;
1406 } 1397 }
1407 1398
1408 int gc_count() const { return gc_count_; } 1399 int gc_count() const { return gc_count_; }
1409 1400
1410 // Returns the size of objects residing in non new spaces. 1401 // Returns the size of objects residing in non new spaces.
1411 intptr_t PromotedSpaceSizeOfObjects(); 1402 size_t PromotedSpaceSizeOfObjects();
1412 1403
1413 double total_regexp_code_generated() { return total_regexp_code_generated_; } 1404 double total_regexp_code_generated() { return total_regexp_code_generated_; }
1414 void IncreaseTotalRegexpCodeGenerated(int size) { 1405 void IncreaseTotalRegexpCodeGenerated(int size) {
1415 total_regexp_code_generated_ += size; 1406 total_regexp_code_generated_ += size;
1416 } 1407 }
1417 1408
1418 void IncrementCodeGeneratedBytes(bool is_crankshafted, int size) { 1409 void IncrementCodeGeneratedBytes(bool is_crankshafted, int size) {
1419 if (is_crankshafted) { 1410 if (is_crankshafted) {
1420 crankshaft_codegen_bytes_generated_ += size; 1411 crankshaft_codegen_bytes_generated_ += size;
1421 } else { 1412 } else {
(...skipping 392 matching lines...) Expand 10 before | Expand all | Expand 10 after
1814 void ProcessAllWeakReferences(WeakObjectRetainer* retainer); 1805 void ProcessAllWeakReferences(WeakObjectRetainer* retainer);
1815 void ProcessYoungWeakReferences(WeakObjectRetainer* retainer); 1806 void ProcessYoungWeakReferences(WeakObjectRetainer* retainer);
1816 void ProcessNativeContexts(WeakObjectRetainer* retainer); 1807 void ProcessNativeContexts(WeakObjectRetainer* retainer);
1817 void ProcessAllocationSites(WeakObjectRetainer* retainer); 1808 void ProcessAllocationSites(WeakObjectRetainer* retainer);
1818 void ProcessWeakListRoots(WeakObjectRetainer* retainer); 1809 void ProcessWeakListRoots(WeakObjectRetainer* retainer);
1819 1810
1820 // =========================================================================== 1811 // ===========================================================================
1821 // GC statistics. ============================================================ 1812 // GC statistics. ============================================================
1822 // =========================================================================== 1813 // ===========================================================================
1823 1814
1824 inline intptr_t OldGenerationSpaceAvailable() { 1815 inline size_t OldGenerationSpaceAvailable() {
1825 return old_generation_allocation_limit_ - PromotedTotalSize(); 1816 if (old_generation_allocation_limit_ <= PromotedTotalSize()) return 0;
1817 return old_generation_allocation_limit_ -
1818 static_cast<size_t>(PromotedTotalSize());
1826 } 1819 }
1827 1820
1828 void UpdateTotalGCTime(double duration); 1821 void UpdateTotalGCTime(double duration);
1829 1822
1830 bool MaximumSizeScavenge() { return maximum_size_scavenges_ > 0; } 1823 bool MaximumSizeScavenge() { return maximum_size_scavenges_ > 0; }
1831 1824
1832 // =========================================================================== 1825 // ===========================================================================
1833 // Growing strategy. ========================================================= 1826 // Growing strategy. =========================================================
1834 // =========================================================================== 1827 // ===========================================================================
1835 1828
1836 // Decrease the allocation limit if the new limit based on the given 1829 // Decrease the allocation limit if the new limit based on the given
1837 // parameters is lower than the current limit. 1830 // parameters is lower than the current limit.
1838 void DampenOldGenerationAllocationLimit(intptr_t old_gen_size, 1831 void DampenOldGenerationAllocationLimit(size_t old_gen_size, double gc_speed,
1839 double gc_speed,
1840 double mutator_speed); 1832 double mutator_speed);
1841 1833
1842
1843 // Calculates the allocation limit based on a given growing factor and a 1834 // Calculates the allocation limit based on a given growing factor and a
1844 // given old generation size. 1835 // given old generation size.
1845 intptr_t CalculateOldGenerationAllocationLimit(double factor, 1836 size_t CalculateOldGenerationAllocationLimit(double factor,
1846 intptr_t old_gen_size); 1837 size_t old_gen_size);
1847 1838
1848 // Sets the allocation limit to trigger the next full garbage collection. 1839 // Sets the allocation limit to trigger the next full garbage collection.
1849 void SetOldGenerationAllocationLimit(intptr_t old_gen_size, double gc_speed, 1840 void SetOldGenerationAllocationLimit(size_t old_gen_size, double gc_speed,
1850 double mutator_speed); 1841 double mutator_speed);
1851 1842
1852 intptr_t MinimumAllocationLimitGrowingStep(); 1843 size_t MinimumAllocationLimitGrowingStep();
1853 1844
1854 intptr_t old_generation_allocation_limit() const { 1845 size_t old_generation_allocation_limit() const {
1855 return old_generation_allocation_limit_; 1846 return old_generation_allocation_limit_;
1856 } 1847 }
1857 1848
1858 bool always_allocate() { return always_allocate_scope_count_.Value() != 0; } 1849 bool always_allocate() { return always_allocate_scope_count_.Value() != 0; }
1859 1850
1860 bool CanExpandOldGeneration(int size) { 1851 bool CanExpandOldGeneration(int size) {
1861 if (force_oom_) return false; 1852 if (force_oom_) return false;
1862 return (OldGenerationCapacity() + size) < MaxOldGenerationSize(); 1853 return (OldGenerationCapacity() + size) < MaxOldGenerationSize();
1863 } 1854 }
1864 1855
(...skipping 244 matching lines...) Expand 10 before | Expand all | Expand 10 after
2109 // The amount of memory that has been freed concurrently. 2100 // The amount of memory that has been freed concurrently.
2110 base::AtomicNumber<intptr_t> external_memory_concurrently_freed_; 2101 base::AtomicNumber<intptr_t> external_memory_concurrently_freed_;
2111 2102
2112 // This can be calculated directly from a pointer to the heap; however, it is 2103 // This can be calculated directly from a pointer to the heap; however, it is
2113 // more expedient to get at the isolate directly from within Heap methods. 2104 // more expedient to get at the isolate directly from within Heap methods.
2114 Isolate* isolate_; 2105 Isolate* isolate_;
2115 2106
2116 Object* roots_[kRootListLength]; 2107 Object* roots_[kRootListLength];
2117 2108
2118 size_t code_range_size_; 2109 size_t code_range_size_;
2119 int max_semi_space_size_; 2110 size_t max_semi_space_size_;
2120 int initial_semispace_size_; 2111 size_t initial_semispace_size_;
2121 intptr_t max_old_generation_size_; 2112 size_t max_old_generation_size_;
2122 intptr_t initial_old_generation_size_; 2113 size_t initial_old_generation_size_;
2123 bool old_generation_size_configured_; 2114 bool old_generation_size_configured_;
2124 intptr_t max_executable_size_; 2115 size_t max_executable_size_;
2125 size_t maximum_committed_; 2116 size_t maximum_committed_;
2126 2117
2127 // For keeping track of how much data has survived 2118 // For keeping track of how much data has survived
2128 // scavenge since last new space expansion. 2119 // scavenge since last new space expansion.
2129 intptr_t survived_since_last_expansion_; 2120 size_t survived_since_last_expansion_;
2130 2121
2131 // ... and since the last scavenge. 2122 // ... and since the last scavenge.
2132 intptr_t survived_last_scavenge_; 2123 size_t survived_last_scavenge_;
2133 2124
2134 // This is not the depth of nested AlwaysAllocateScope's but rather a single 2125 // This is not the depth of nested AlwaysAllocateScope's but rather a single
2135 // count, as scopes can be acquired from multiple tasks (read: threads). 2126 // count, as scopes can be acquired from multiple tasks (read: threads).
2136 base::AtomicNumber<size_t> always_allocate_scope_count_; 2127 base::AtomicNumber<size_t> always_allocate_scope_count_;
2137 2128
2138 // Stores the memory pressure level that set by MemoryPressureNotification 2129 // Stores the memory pressure level that set by MemoryPressureNotification
2139 // and reset by a mark-compact garbage collection. 2130 // and reset by a mark-compact garbage collection.
2140 base::AtomicValue<MemoryPressureLevel> memory_pressure_level_; 2131 base::AtomicValue<MemoryPressureLevel> memory_pressure_level_;
2141 2132
2142 // For keeping track of context disposals. 2133 // For keeping track of context disposals.
(...skipping 11 matching lines...) Expand all
2154 OldSpace* code_space_; 2145 OldSpace* code_space_;
2155 MapSpace* map_space_; 2146 MapSpace* map_space_;
2156 LargeObjectSpace* lo_space_; 2147 LargeObjectSpace* lo_space_;
2157 // Map from the space id to the space. 2148 // Map from the space id to the space.
2158 Space* space_[LAST_SPACE + 1]; 2149 Space* space_[LAST_SPACE + 1];
2159 HeapState gc_state_; 2150 HeapState gc_state_;
2160 int gc_post_processing_depth_; 2151 int gc_post_processing_depth_;
2161 Address new_space_top_after_last_gc_; 2152 Address new_space_top_after_last_gc_;
2162 2153
2163 // Returns the amount of external memory registered since last global gc. 2154 // Returns the amount of external memory registered since last global gc.
2164 int64_t PromotedExternalMemorySize(); 2155 uint64_t PromotedExternalMemorySize();
2165 2156
2166 // How many "runtime allocations" happened. 2157 // How many "runtime allocations" happened.
2167 uint32_t allocations_count_; 2158 uint32_t allocations_count_;
2168 2159
2169 // Running hash over allocations performed. 2160 // Running hash over allocations performed.
2170 uint32_t raw_allocations_hash_; 2161 uint32_t raw_allocations_hash_;
2171 2162
2172 // How many mark-sweep collections happened. 2163 // How many mark-sweep collections happened.
2173 unsigned int ms_count_; 2164 unsigned int ms_count_;
2174 2165
2175 // How many gc happened. 2166 // How many gc happened.
2176 unsigned int gc_count_; 2167 unsigned int gc_count_;
2177 2168
2178 // For post mortem debugging. 2169 // For post mortem debugging.
2179 int remembered_unmapped_pages_index_; 2170 int remembered_unmapped_pages_index_;
2180 Address remembered_unmapped_pages_[kRememberedUnmappedPages]; 2171 Address remembered_unmapped_pages_[kRememberedUnmappedPages];
2181 2172
2182 #ifdef DEBUG 2173 #ifdef DEBUG
2183 // If the --gc-interval flag is set to a positive value, this 2174 // If the --gc-interval flag is set to a positive value, this
2184 // variable holds the value indicating the number of allocations 2175 // variable holds the value indicating the number of allocations
2185 // remain until the next failure and garbage collection. 2176 // remain until the next failure and garbage collection.
2186 int allocation_timeout_; 2177 int allocation_timeout_;
2187 #endif // DEBUG 2178 #endif // DEBUG
2188 2179
2189 // Limit that triggers a global GC on the next (normally caused) GC. This 2180 // Limit that triggers a global GC on the next (normally caused) GC. This
2190 // is checked when we have already decided to do a GC to help determine 2181 // is checked when we have already decided to do a GC to help determine
2191 // which collector to invoke, before expanding a paged space in the old 2182 // which collector to invoke, before expanding a paged space in the old
2192 // generation and on every allocation in large object space. 2183 // generation and on every allocation in large object space.
2193 intptr_t old_generation_allocation_limit_; 2184 size_t old_generation_allocation_limit_;
2194 2185
2195 // Indicates that inline bump-pointer allocation has been globally disabled 2186 // Indicates that inline bump-pointer allocation has been globally disabled
2196 // for all spaces. This is used to disable allocations in generated code. 2187 // for all spaces. This is used to disable allocations in generated code.
2197 bool inline_allocation_disabled_; 2188 bool inline_allocation_disabled_;
2198 2189
2199 // Weak list heads, threaded through the objects. 2190 // Weak list heads, threaded through the objects.
2200 // List heads are initialized lazily and contain the undefined_value at start. 2191 // List heads are initialized lazily and contain the undefined_value at start.
2201 Object* native_contexts_list_; 2192 Object* native_contexts_list_;
2202 Object* allocation_sites_list_; 2193 Object* allocation_sites_list_;
2203 2194
2204 // List of encountered weak collections (JSWeakMap and JSWeakSet) during 2195 // List of encountered weak collections (JSWeakMap and JSWeakSet) during
2205 // marking. It is initialized during marking, destroyed after marking and 2196 // marking. It is initialized during marking, destroyed after marking and
2206 // contains Smi(0) while marking is not active. 2197 // contains Smi(0) while marking is not active.
2207 Object* encountered_weak_collections_; 2198 Object* encountered_weak_collections_;
2208 2199
2209 Object* encountered_weak_cells_; 2200 Object* encountered_weak_cells_;
2210 2201
2211 Object* encountered_transition_arrays_; 2202 Object* encountered_transition_arrays_;
2212 2203
2213 List<GCCallbackPair> gc_epilogue_callbacks_; 2204 List<GCCallbackPair> gc_epilogue_callbacks_;
2214 List<GCCallbackPair> gc_prologue_callbacks_; 2205 List<GCCallbackPair> gc_prologue_callbacks_;
2215 2206
2216 // Total RegExp code ever generated 2207 // Total RegExp code ever generated
2217 double total_regexp_code_generated_; 2208 double total_regexp_code_generated_;
2218 2209
2219 int deferred_counters_[v8::Isolate::kUseCounterFeatureCount]; 2210 int deferred_counters_[v8::Isolate::kUseCounterFeatureCount];
2220 2211
2221 GCTracer* tracer_; 2212 GCTracer* tracer_;
2222 2213
2223 intptr_t promoted_objects_size_; 2214 size_t promoted_objects_size_;
2224 double promotion_ratio_; 2215 double promotion_ratio_;
2225 double promotion_rate_; 2216 double promotion_rate_;
2226 intptr_t semi_space_copied_object_size_; 2217 size_t semi_space_copied_object_size_;
2227 intptr_t previous_semi_space_copied_object_size_; 2218 size_t previous_semi_space_copied_object_size_;
2228 double semi_space_copied_rate_; 2219 double semi_space_copied_rate_;
2229 int nodes_died_in_new_space_; 2220 int nodes_died_in_new_space_;
2230 int nodes_copied_in_new_space_; 2221 int nodes_copied_in_new_space_;
2231 int nodes_promoted_; 2222 int nodes_promoted_;
2232 2223
2233 // This is the pretenuring trigger for allocation sites that are in maybe 2224 // This is the pretenuring trigger for allocation sites that are in maybe
2234 // tenure state. When we switched to the maximum new space size we deoptimize 2225 // tenure state. When we switched to the maximum new space size we deoptimize
2235 // the code that belongs to the allocation site and derive the lifetime 2226 // the code that belongs to the allocation site and derive the lifetime
2236 // of the allocation site. 2227 // of the allocation site.
2237 unsigned int maximum_size_scavenges_; 2228 unsigned int maximum_size_scavenges_;
(...skipping 412 matching lines...) Expand 10 before | Expand all | Expand 10 after
2650 friend class LargeObjectSpace; 2641 friend class LargeObjectSpace;
2651 friend class NewSpace; 2642 friend class NewSpace;
2652 friend class PagedSpace; 2643 friend class PagedSpace;
2653 DISALLOW_COPY_AND_ASSIGN(AllocationObserver); 2644 DISALLOW_COPY_AND_ASSIGN(AllocationObserver);
2654 }; 2645 };
2655 2646
2656 } // namespace internal 2647 } // namespace internal
2657 } // namespace v8 2648 } // namespace v8
2658 2649
2659 #endif // V8_HEAP_HEAP_H_ 2650 #endif // V8_HEAP_HEAP_H_
OLDNEW
« no previous file with comments | « src/heap/gc-tracer.cc ('k') | src/heap/heap.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698