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

Side by Side Diff: runtime/vm/class_table.h

Issue 2481873005: clang-format runtime/vm (Closed)
Patch Set: Merge 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 | « runtime/vm/class_finalizer_test.cc ('k') | runtime/vm/class_table.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 (c) 2012, the Dart project authors. Please see the AUTHORS file 1 // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
2 // for details. All rights reserved. Use of this source code is governed by a 2 // for details. All rights reserved. Use of this source code is governed by a
3 // BSD-style license that can be found in the LICENSE file. 3 // BSD-style license that can be found in the LICENSE file.
4 4
5 #ifndef RUNTIME_VM_CLASS_TABLE_H_ 5 #ifndef RUNTIME_VM_CLASS_TABLE_H_
6 #define RUNTIME_VM_CLASS_TABLE_H_ 6 #define RUNTIME_VM_CLASS_TABLE_H_
7 7
8 #include "platform/assert.h" 8 #include "platform/assert.h"
9 #include "vm/bitfield.h" 9 #include "vm/bitfield.h"
10 #include "vm/globals.h" 10 #include "vm/globals.h"
11 11
12 namespace dart { 12 namespace dart {
13 13
14 class Class; 14 class Class;
15 class ClassStats; 15 class ClassStats;
16 class JSONArray; 16 class JSONArray;
17 class JSONObject; 17 class JSONObject;
18 class JSONStream; 18 class JSONStream;
19 template<typename T> class MallocGrowableArray; 19 template <typename T>
20 class MallocGrowableArray;
20 class ObjectPointerVisitor; 21 class ObjectPointerVisitor;
21 class RawClass; 22 class RawClass;
22 23
23 #ifndef PRODUCT 24 #ifndef PRODUCT
24 template<typename T> 25 template <typename T>
25 class AllocStats { 26 class AllocStats {
26 public: 27 public:
27 T new_count; 28 T new_count;
28 T new_size; 29 T new_size;
29 T old_count; 30 T old_count;
30 T old_size; 31 T old_size;
31 32
32 void ResetNew() { 33 void ResetNew() {
33 new_count = 0; 34 new_count = 0;
34 new_size = 0; 35 new_size = 0;
(...skipping 62 matching lines...) Expand 10 before | Expand all | Expand 10 after
97 OFFSET_OF(AllocStats<intptr_t>, old_count); 98 OFFSET_OF(AllocStats<intptr_t>, old_count);
98 } 99 }
99 static intptr_t allocated_size_since_gc_new_space_offset() { 100 static intptr_t allocated_size_since_gc_new_space_offset() {
100 return OFFSET_OF(ClassHeapStats, recent) + 101 return OFFSET_OF(ClassHeapStats, recent) +
101 OFFSET_OF(AllocStats<intptr_t>, new_size); 102 OFFSET_OF(AllocStats<intptr_t>, new_size);
102 } 103 }
103 static intptr_t allocated_size_since_gc_old_space_offset() { 104 static intptr_t allocated_size_since_gc_old_space_offset() {
104 return OFFSET_OF(ClassHeapStats, recent) + 105 return OFFSET_OF(ClassHeapStats, recent) +
105 OFFSET_OF(AllocStats<intptr_t>, old_size); 106 OFFSET_OF(AllocStats<intptr_t>, old_size);
106 } 107 }
107 static intptr_t state_offset() { 108 static intptr_t state_offset() { return OFFSET_OF(ClassHeapStats, state_); }
108 return OFFSET_OF(ClassHeapStats, state_); 109 static intptr_t TraceAllocationMask() { return (1 << kTraceAllocationBit); }
109 }
110 static intptr_t TraceAllocationMask() {
111 return (1 << kTraceAllocationBit);
112 }
113 110
114 void Initialize(); 111 void Initialize();
115 void ResetAtNewGC(); 112 void ResetAtNewGC();
116 void ResetAtOldGC(); 113 void ResetAtOldGC();
117 void ResetAccumulator(); 114 void ResetAccumulator();
118 void UpdatePromotedAfterNewGC(); 115 void UpdatePromotedAfterNewGC();
119 void UpdateSize(intptr_t instance_size); 116 void UpdateSize(intptr_t instance_size);
120 #ifndef PRODUCT 117 #ifndef PRODUCT
121 void PrintToJSONObject(const Class& cls, JSONObject* obj) const; 118 void PrintToJSONObject(const Class& cls, JSONObject* obj) const;
122 #endif 119 #endif
123 void Verify(); 120 void Verify();
124 121
125 bool trace_allocation() const { 122 bool trace_allocation() const { return TraceAllocationBit::decode(state_); }
126 return TraceAllocationBit::decode(state_);
127 }
128 123
129 void set_trace_allocation(bool trace_allocation) { 124 void set_trace_allocation(bool trace_allocation) {
130 state_ = TraceAllocationBit::update(trace_allocation, state_); 125 state_ = TraceAllocationBit::update(trace_allocation, state_);
131 } 126 }
132 127
133 private: 128 private:
134 enum StateBits { 129 enum StateBits {
135 kTraceAllocationBit = 0, 130 kTraceAllocationBit = 0,
136 }; 131 };
137 132
138 class TraceAllocationBit : 133 class TraceAllocationBit
139 public BitField<intptr_t, bool, kTraceAllocationBit, 1> {}; 134 : public BitField<intptr_t, bool, kTraceAllocationBit, 1> {};
140 135
141 // Recent old at start of last new GC (used to compute promoted_*). 136 // Recent old at start of last new GC (used to compute promoted_*).
142 intptr_t old_pre_new_gc_count_; 137 intptr_t old_pre_new_gc_count_;
143 intptr_t old_pre_new_gc_size_; 138 intptr_t old_pre_new_gc_size_;
144 intptr_t state_; 139 intptr_t state_;
145 intptr_t align_; // Make SIMARM and ARM agree on the size of ClassHeapStats. 140 intptr_t align_; // Make SIMARM and ARM agree on the size of ClassHeapStats.
146 }; 141 };
147 #endif // !PRODUCT 142 #endif // !PRODUCT
148 143
149 class ClassTable { 144 class ClassTable {
150 public: 145 public:
151 ClassTable(); 146 ClassTable();
152 // Creates a shallow copy of the original class table for some read-only 147 // Creates a shallow copy of the original class table for some read-only
153 // access, without support for stats data. 148 // access, without support for stats data.
154 explicit ClassTable(ClassTable* original); 149 explicit ClassTable(ClassTable* original);
155 ~ClassTable(); 150 ~ClassTable();
156 151
157 // Thread-safe. 152 // Thread-safe.
158 RawClass* At(intptr_t index) const { 153 RawClass* At(intptr_t index) const {
159 ASSERT(IsValidIndex(index)); 154 ASSERT(IsValidIndex(index));
160 return table_[index]; 155 return table_[index];
161 } 156 }
162 157
163 void SetAt(intptr_t index, RawClass* raw_cls) { 158 void SetAt(intptr_t index, RawClass* raw_cls) { table_[index] = raw_cls; }
164 table_[index] = raw_cls;
165 }
166 159
167 bool IsValidIndex(intptr_t index) const { 160 bool IsValidIndex(intptr_t index) const {
168 return (index > 0) && (index < top_); 161 return (index > 0) && (index < top_);
169 } 162 }
170 163
171 bool HasValidClassAt(intptr_t index) const { 164 bool HasValidClassAt(intptr_t index) const {
172 ASSERT(IsValidIndex(index)); 165 ASSERT(IsValidIndex(index));
173 return table_[index] != NULL; 166 return table_[index] != NULL;
174 } 167 }
175 168
(...skipping 19 matching lines...) Expand all
195 void Remap(intptr_t* old_to_new_cids); 188 void Remap(intptr_t* old_to_new_cids);
196 #endif 189 #endif
197 190
198 void VisitObjectPointers(ObjectPointerVisitor* visitor); 191 void VisitObjectPointers(ObjectPointerVisitor* visitor);
199 192
200 void Validate(); 193 void Validate();
201 194
202 void Print(); 195 void Print();
203 196
204 // Used by the generated code. 197 // Used by the generated code.
205 static intptr_t table_offset() { 198 static intptr_t table_offset() { return OFFSET_OF(ClassTable, table_); }
206 return OFFSET_OF(ClassTable, table_);
207 }
208 199
209 // Used by the generated code. 200 // Used by the generated code.
210 static intptr_t ClassOffsetFor(intptr_t cid); 201 static intptr_t ClassOffsetFor(intptr_t cid);
211 202
212 #ifndef PRODUCT 203 #ifndef PRODUCT
213 // Called whenever a class is allocated in the runtime. 204 // Called whenever a class is allocated in the runtime.
214 void UpdateAllocatedNew(intptr_t cid, intptr_t size); 205 void UpdateAllocatedNew(intptr_t cid, intptr_t size);
215 void UpdateAllocatedOld(intptr_t cid, intptr_t size); 206 void UpdateAllocatedOld(intptr_t cid, intptr_t size);
216 207
217 // Called whenever a old GC occurs. 208 // Called whenever a old GC occurs.
(...skipping 56 matching lines...) Expand 10 before | Expand all | Expand 10 after
274 void UpdateLiveOld(intptr_t cid, intptr_t size, intptr_t count = 1); 265 void UpdateLiveOld(intptr_t cid, intptr_t size, intptr_t count = 1);
275 void UpdateLiveNew(intptr_t cid, intptr_t size); 266 void UpdateLiveNew(intptr_t cid, intptr_t size);
276 #endif // !PRODUCT 267 #endif // !PRODUCT
277 268
278 DISALLOW_COPY_AND_ASSIGN(ClassTable); 269 DISALLOW_COPY_AND_ASSIGN(ClassTable);
279 }; 270 };
280 271
281 } // namespace dart 272 } // namespace dart
282 273
283 #endif // RUNTIME_VM_CLASS_TABLE_H_ 274 #endif // RUNTIME_VM_CLASS_TABLE_H_
OLDNEW
« no previous file with comments | « runtime/vm/class_finalizer_test.cc ('k') | runtime/vm/class_table.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698