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

Unified Diff: runtime/vm/class_table.h

Issue 51653006: Track live instance and allocation counts for classes (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Created 6 years, 11 months 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « runtime/vm/assembler_x64.cc ('k') | runtime/vm/class_table.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: runtime/vm/class_table.h
diff --git a/runtime/vm/class_table.h b/runtime/vm/class_table.h
index 6ea4dfa7034b94199d53dd94381ad803e3af19c8..c20e1b70665b6ca71fe444fb99bfffcdacecbddc 100644
--- a/runtime/vm/class_table.h
+++ b/runtime/vm/class_table.h
@@ -11,9 +11,53 @@
namespace dart {
class Class;
+class ClassStats;
+class JSONArray;
+class JSONStream;
class ObjectPointerVisitor;
class RawClass;
-class JSONStream;
+
+
+class ClassHeapStats {
+ public:
+ // Total allocated before GC.
+ intptr_t allocated_before_gc_old_space;
+ intptr_t allocated_before_gc_new_space;
+ intptr_t allocated_size_before_gc_old_space;
+ intptr_t allocated_size_before_gc_new_space;
+
+ // Live after GC.
+ intptr_t live_after_gc_old_space;
+ intptr_t live_after_gc_new_space;
+ intptr_t live_size_after_gc_old_space;
+ intptr_t live_size_after_gc_new_space;
+
+ // Allocated since GC.
+ intptr_t allocated_since_gc_new_space;
+ intptr_t allocated_since_gc_old_space;
+ intptr_t allocated_size_since_gc_new_space;
+ intptr_t allocated_size_since_gc_old_space;
+
+ static intptr_t allocated_since_gc_new_space_offset() {
+ return OFFSET_OF(ClassHeapStats, allocated_since_gc_new_space);
+ }
+ static intptr_t allocated_since_gc_old_space_offset() {
+ return OFFSET_OF(ClassHeapStats, allocated_since_gc_old_space);
+ }
+ static intptr_t allocated_size_since_gc_new_space_offset() {
+ return OFFSET_OF(ClassHeapStats, allocated_size_since_gc_new_space);
+ }
+ static intptr_t allocated_size_since_gc_old_space_offset() {
+ return OFFSET_OF(ClassHeapStats, allocated_size_since_gc_old_space);
+ }
+
+ void Initialize();
+ void ResetAtNewGC();
+ void ResetAtOldGC();
+ void UpdateSize(intptr_t instance_size);
+ void PrintTOJSONArray(const Class& cls, JSONArray* array);
+};
+
class ClassTable {
public:
@@ -48,14 +92,48 @@ class ClassTable {
return OFFSET_OF(ClassTable, table_);
}
+ // Called whenever a class is allocated in the runtime.
+ void UpdateAllocatedNew(intptr_t cid, intptr_t size);
+ void UpdateAllocatedOld(intptr_t cid, intptr_t size);
+
+ // Called whenever a old GC occurs.
+ void ResetCountersOld();
+ // Called whenever a new GC occurs.
+ void ResetCountersNew();
+
+ // Used by the generated code.
+ uword PredefinedClassHeapStatsTableAddress() {
+ return reinterpret_cast<uword>(predefined_class_heap_stats_table_);
+ }
+
+ // Used by generated code.
+ uword ClassStatsTableAddress() {
+ return reinterpret_cast<uword>(&class_heap_stats_table_);
+ }
+
+
+ void AllocationProfilePrintToJSONStream(JSONStream* stream);
+
private:
+ friend class MarkingVisitor;
+ friend class ScavengerVisitor;
+ friend class ClassHeapStatsTestHelper;
static const int initial_capacity_ = 512;
static const int capacity_increment_ = 256;
+ static bool ShouldUpdateSizeForClassId(intptr_t cid);
+
intptr_t top_;
intptr_t capacity_;
RawClass** table_;
+ ClassHeapStats* class_heap_stats_table_;
+
+ ClassHeapStats* predefined_class_heap_stats_table_;
+
+ ClassHeapStats* StatsAt(intptr_t cid);
+ void UpdateLiveOld(intptr_t cid, intptr_t size);
+ void UpdateLiveNew(intptr_t cid, intptr_t size);
DISALLOW_COPY_AND_ASSIGN(ClassTable);
};
« no previous file with comments | « runtime/vm/assembler_x64.cc ('k') | runtime/vm/class_table.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698