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

Side by Side Diff: src/heap.h

Issue 462019: Added recording of heap and global handle stats in a stack-allocated (Closed)
Patch Set: Created 11 years 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/global-handles.cc ('k') | src/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 2006-2008 the V8 project authors. All rights reserved. 1 // Copyright 2006-2008 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 171 matching lines...) Expand 10 before | Expand all | Expand 10 after
182 V(space_symbol, " ") \ 182 V(space_symbol, " ") \
183 V(exec_symbol, "exec") \ 183 V(exec_symbol, "exec") \
184 V(zero_symbol, "0") \ 184 V(zero_symbol, "0") \
185 V(global_eval_symbol, "GlobalEval") \ 185 V(global_eval_symbol, "GlobalEval") \
186 V(identity_hash_symbol, "v8::IdentityHash") \ 186 V(identity_hash_symbol, "v8::IdentityHash") \
187 V(closure_symbol, "(closure)") 187 V(closure_symbol, "(closure)")
188 188
189 189
190 // Forward declaration of the GCTracer class. 190 // Forward declaration of the GCTracer class.
191 class GCTracer; 191 class GCTracer;
192 class HeapStats;
192 193
193 194
194 // The all static Heap captures the interface to the global object heap. 195 // The all static Heap captures the interface to the global object heap.
195 // All JavaScript contexts by this process share the same object heap. 196 // All JavaScript contexts by this process share the same object heap.
196 197
197 class Heap : public AllStatic { 198 class Heap : public AllStatic {
198 public: 199 public:
199 // Configure heap size before setup. Return false if the heap has been 200 // Configure heap size before setup. Return false if the heap has been
200 // setup already. 201 // setup already.
201 static bool ConfigureHeap(int max_semispace_size, int max_old_gen_size); 202 static bool ConfigureHeap(int max_semispace_size, int max_old_gen_size);
(...skipping 656 matching lines...) Expand 10 before | Expand all | Expand 10 after
858 kStrongRootListLength = kSymbolTableRootIndex, 859 kStrongRootListLength = kSymbolTableRootIndex,
859 kRootListLength 860 kRootListLength
860 }; 861 };
861 862
862 static Object* NumberToString(Object* number); 863 static Object* NumberToString(Object* number);
863 864
864 static Map* MapForExternalArrayType(ExternalArrayType array_type); 865 static Map* MapForExternalArrayType(ExternalArrayType array_type);
865 static RootListIndex RootIndexForExternalArrayType( 866 static RootListIndex RootIndexForExternalArrayType(
866 ExternalArrayType array_type); 867 ExternalArrayType array_type);
867 868
869 static void RecordStats(HeapStats* stats);
870
868 private: 871 private:
869 static int reserved_semispace_size_; 872 static int reserved_semispace_size_;
870 static int max_semispace_size_; 873 static int max_semispace_size_;
871 static int initial_semispace_size_; 874 static int initial_semispace_size_;
872 static int max_old_generation_size_; 875 static int max_old_generation_size_;
873 static size_t code_range_size_; 876 static size_t code_range_size_;
874 877
875 // For keeping track of how much data has survived 878 // For keeping track of how much data has survived
876 // scavenge since last new space expansion. 879 // scavenge since last new space expansion.
877 static int survived_since_last_expansion_; 880 static int survived_since_last_expansion_;
(...skipping 215 matching lines...) Expand 10 before | Expand all | Expand 10 after
1093 static const int kInitialSymbolTableSize = 2048; 1096 static const int kInitialSymbolTableSize = 2048;
1094 static const int kInitialEvalCacheSize = 64; 1097 static const int kInitialEvalCacheSize = 64;
1095 1098
1096 friend class Factory; 1099 friend class Factory;
1097 friend class DisallowAllocationFailure; 1100 friend class DisallowAllocationFailure;
1098 friend class AlwaysAllocateScope; 1101 friend class AlwaysAllocateScope;
1099 friend class LinearAllocationScope; 1102 friend class LinearAllocationScope;
1100 }; 1103 };
1101 1104
1102 1105
1106 struct HeapStats {
1107 int new_space_size;
1108 int new_space_capacity;
1109 int old_pointer_space_size;
1110 int old_pointer_space_capacity;
1111 int old_data_space_size;
1112 int old_data_space_capacity;
1113 int code_space_size;
1114 int code_space_capacity;
1115 int map_space_size;
1116 int map_space_capacity;
1117 int cell_space_size;
1118 int cell_space_capacity;
1119 int lo_space_size;
1120 int global_handle_count;
1121 int weak_global_handle_count;
1122 int pending_global_handle_count;
1123 int near_death_global_handle_count;
1124 int destroyed_global_handle_count;
1125 };
1126
1127
1103 class AlwaysAllocateScope { 1128 class AlwaysAllocateScope {
1104 public: 1129 public:
1105 AlwaysAllocateScope() { 1130 AlwaysAllocateScope() {
1106 // We shouldn't hit any nested scopes, because that requires 1131 // We shouldn't hit any nested scopes, because that requires
1107 // non-handle code to call handle code. The code still works but 1132 // non-handle code to call handle code. The code still works but
1108 // performance will degrade, so we want to catch this situation 1133 // performance will degrade, so we want to catch this situation
1109 // in debug mode. 1134 // in debug mode.
1110 ASSERT(Heap::always_allocate_scope_depth_ == 0); 1135 ASSERT(Heap::always_allocate_scope_depth_ == 0);
1111 Heap::always_allocate_scope_depth_++; 1136 Heap::always_allocate_scope_depth_++;
1112 } 1137 }
(...skipping 478 matching lines...) Expand 10 before | Expand all | Expand 10 after
1591 } 1616 }
1592 static TranscendentalCache* caches_[kNumberOfCaches]; 1617 static TranscendentalCache* caches_[kNumberOfCaches];
1593 Element elements_[kCacheSize]; 1618 Element elements_[kCacheSize];
1594 Type type_; 1619 Type type_;
1595 }; 1620 };
1596 1621
1597 1622
1598 } } // namespace v8::internal 1623 } } // namespace v8::internal
1599 1624
1600 #endif // V8_HEAP_H_ 1625 #endif // V8_HEAP_H_
OLDNEW
« no previous file with comments | « src/global-handles.cc ('k') | src/heap.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698