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

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

Issue 747463002: Fix allocation stats bug on ARM; add unit test. (Closed) Base URL: http://dart.googlecode.com/svn/branches/bleeding_edge/dart/
Patch Set: Created 6 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 | Annotate | Revision Log
« no previous file with comments | « no previous file | 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 VM_CLASS_TABLE_H_ 5 #ifndef VM_CLASS_TABLE_H_
6 #define VM_CLASS_TABLE_H_ 6 #define VM_CLASS_TABLE_H_
7 7
8 #include "platform/assert.h" 8 #include "platform/assert.h"
9 #include "vm/globals.h" 9 #include "vm/globals.h"
10 10
(...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after
53 old_size = 0; 53 old_size = 0;
54 } 54 }
55 55
56 // For classes with fixed instance size we do not emit code to update 56 // For classes with fixed instance size we do not emit code to update
57 // the size statistics. Update them by calling this method. 57 // the size statistics. Update them by calling this method.
58 void UpdateSize(intptr_t instance_size) { 58 void UpdateSize(intptr_t instance_size) {
59 ASSERT(instance_size > 0); 59 ASSERT(instance_size > 0);
60 old_size = old_count * instance_size; 60 old_size = old_count * instance_size;
61 new_size = new_count * instance_size; 61 new_size = new_count * instance_size;
62 } 62 }
63
64 void Verify() {
65 ASSERT(new_count >= 0);
66 ASSERT(new_size >= 0);
67 ASSERT(old_count >= 0);
68 ASSERT(old_size >= 0);
69 }
63 }; 70 };
64 71
65 class ClassHeapStats { 72 class ClassHeapStats {
66 public: 73 public:
67 // Snapshot before GC. 74 // Snapshot before GC.
68 AllocStats<intptr_t> pre_gc; 75 AllocStats<intptr_t> pre_gc;
69 // Live after GC. 76 // Live after GC.
70 AllocStats<intptr_t> post_gc; 77 AllocStats<intptr_t> post_gc;
71 // Allocations since the last GC. 78 // Allocations since the last GC.
72 AllocStats<intptr_t> recent; 79 AllocStats<intptr_t> recent;
(...skipping 27 matching lines...) Expand all
100 void ResetAtOldGC(); 107 void ResetAtOldGC();
101 void ResetAccumulator(); 108 void ResetAccumulator();
102 void UpdatePromotedAfterNewGC(); 109 void UpdatePromotedAfterNewGC();
103 void UpdateSize(intptr_t instance_size); 110 void UpdateSize(intptr_t instance_size);
104 void PrintToJSONObject(const Class& cls, JSONObject* obj) const; 111 void PrintToJSONObject(const Class& cls, JSONObject* obj) const;
105 112
106 private: 113 private:
107 // Recent old at start of last new GC (used to compute promoted_*). 114 // Recent old at start of last new GC (used to compute promoted_*).
108 intptr_t old_pre_new_gc_count_; 115 intptr_t old_pre_new_gc_count_;
109 intptr_t old_pre_new_gc_size_; 116 intptr_t old_pre_new_gc_size_;
117
118 void Verify();
110 }; 119 };
111 120
112 121
113 class ClassTable { 122 class ClassTable {
114 public: 123 public:
115 ClassTable(); 124 ClassTable();
116 // Create a copy of the original class table only, without copying any of the 125 // Create a copy of the original class table only, without copying any of the
117 // stats data. 126 // stats data.
118 explicit ClassTable(ClassTable* original); 127 explicit ClassTable(ClassTable* original);
119 ~ClassTable(); 128 ~ClassTable();
(...skipping 82 matching lines...) Expand 10 before | Expand all | Expand 10 after
202 ClassHeapStats* PreliminaryStatsAt(intptr_t cid); 211 ClassHeapStats* PreliminaryStatsAt(intptr_t cid);
203 void UpdateLiveOld(intptr_t cid, intptr_t size); 212 void UpdateLiveOld(intptr_t cid, intptr_t size);
204 void UpdateLiveNew(intptr_t cid, intptr_t size); 213 void UpdateLiveNew(intptr_t cid, intptr_t size);
205 214
206 DISALLOW_COPY_AND_ASSIGN(ClassTable); 215 DISALLOW_COPY_AND_ASSIGN(ClassTable);
207 }; 216 };
208 217
209 } // namespace dart 218 } // namespace dart
210 219
211 #endif // VM_CLASS_TABLE_H_ 220 #endif // VM_CLASS_TABLE_H_
OLDNEW
« no previous file with comments | « no previous file | runtime/vm/class_table.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698