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

Unified Diff: src/heap/object-stats.cc

Issue 2422143002: Do not inline object-stats functions to reduce binary size. (Closed)
Patch Set: remove debugging code Created 4 years, 2 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 | « src/heap/object-stats.h ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: src/heap/object-stats.cc
diff --git a/src/heap/object-stats.cc b/src/heap/object-stats.cc
index 6e4b50ec249aca90dbab76cc43307892067b6cf2..ef5f65734e8c53e3288f5c551a848a16b46ce410 100644
--- a/src/heap/object-stats.cc
+++ b/src/heap/object-stats.cc
@@ -52,55 +52,59 @@ V8_NOINLINE static void DumpJSONArray(std::stringstream& stream, size_t* array,
stream << "]";
}
+void ObjectStats::PrintKeyAndId(const char* key, int gc_count) {
+ PrintF("\"isolate\": \"%p\", \"id\": %d, \"key\": \"%s\", ",
+ reinterpret_cast<void*>(isolate()), gc_count, key);
+}
+
+void ObjectStats::PrintInstanceTypeJSON(const char* key, int gc_count,
+ const char* name, int index) {
+ PrintF("{ ");
+ PrintKeyAndId(key, gc_count);
+ PrintF("\"type\": \"instance_type_data\", ");
+ PrintF("\"instance_type\": %d, ", index);
+ PrintF("\"instance_type_name\": \"%s\", ", name);
+ PrintF("\"overall\": %zu, ", object_sizes_[index]);
+ PrintF("\"count\": %zu, ", object_counts_[index]);
+ PrintF("\"over_allocated\": %zu, ", over_allocated_[index]);
+ PrintF("\"histogram\": ");
+ PrintJSONArray(size_histogram_[index], kNumberOfBuckets);
+ PrintF(",");
+ PrintF("\"over_allocated_histogram\": ");
+ PrintJSONArray(over_allocated_histogram_[index], kNumberOfBuckets);
+ PrintF(" }\n");
+}
+
void ObjectStats::PrintJSON(const char* key) {
double time = isolate()->time_millis_since_init();
int gc_count = heap()->gc_count();
-#define PRINT_KEY_AND_ID() \
- PrintF("\"isolate\": \"%p\", \"id\": %d, \"key\": \"%s\", ", \
- reinterpret_cast<void*>(isolate()), gc_count, key);
-
// gc_descriptor
PrintF("{ ");
- PRINT_KEY_AND_ID();
+ PrintKeyAndId(key, gc_count);
PrintF("\"type\": \"gc_descriptor\", \"time\": %f }\n", time);
// bucket_sizes
PrintF("{ ");
- PRINT_KEY_AND_ID();
+ PrintKeyAndId(key, gc_count);
PrintF("\"type\": \"bucket_sizes\", \"sizes\": [ ");
for (int i = 0; i < kNumberOfBuckets; i++) {
PrintF("%d", 1 << (kFirstBucketShift + i));
if (i != (kNumberOfBuckets - 1)) PrintF(", ");
}
PrintF(" ] }\n");
-// instance_type_data
-#define PRINT_INSTANCE_TYPE_DATA(name, index) \
- PrintF("{ "); \
- PRINT_KEY_AND_ID(); \
- PrintF("\"type\": \"instance_type_data\", "); \
- PrintF("\"instance_type\": %d, ", index); \
- PrintF("\"instance_type_name\": \"%s\", ", name); \
- PrintF("\"overall\": %zu, ", object_sizes_[index]); \
- PrintF("\"count\": %zu, ", object_counts_[index]); \
- PrintF("\"over_allocated\": %zu, ", over_allocated_[index]); \
- PrintF("\"histogram\": "); \
- PrintJSONArray(size_histogram_[index], kNumberOfBuckets); \
- PrintF(","); \
- PrintF("\"over_allocated_histogram\": "); \
- PrintJSONArray(over_allocated_histogram_[index], kNumberOfBuckets); \
- PrintF(" }\n");
-#define INSTANCE_TYPE_WRAPPER(name) PRINT_INSTANCE_TYPE_DATA(#name, name)
-#define CODE_KIND_WRAPPER(name) \
- PRINT_INSTANCE_TYPE_DATA("*CODE_" #name, \
- FIRST_CODE_KIND_SUB_TYPE + Code::name)
-#define FIXED_ARRAY_SUB_INSTANCE_TYPE_WRAPPER(name) \
- PRINT_INSTANCE_TYPE_DATA("*FIXED_ARRAY_" #name, \
- FIRST_FIXED_ARRAY_SUB_TYPE + name)
-#define CODE_AGE_WRAPPER(name) \
- PRINT_INSTANCE_TYPE_DATA( \
- "*CODE_AGE_" #name, \
- FIRST_CODE_AGE_SUB_TYPE + Code::k##name##CodeAge - Code::kFirstCodeAge)
+#define INSTANCE_TYPE_WRAPPER(name) \
+ PrintInstanceTypeJSON(key, gc_count, #name, name);
+#define CODE_KIND_WRAPPER(name) \
+ PrintInstanceTypeJSON(key, gc_count, "*CODE_" #name, \
+ FIRST_CODE_KIND_SUB_TYPE + Code::name);
+#define FIXED_ARRAY_SUB_INSTANCE_TYPE_WRAPPER(name) \
+ PrintInstanceTypeJSON(key, gc_count, "*FIXED_ARRAY_" #name, \
+ FIRST_FIXED_ARRAY_SUB_TYPE + name);
+#define CODE_AGE_WRAPPER(name) \
+ PrintInstanceTypeJSON( \
+ key, gc_count, "*CODE_AGE_" #name, \
+ FIRST_CODE_AGE_SUB_TYPE + Code::k##name##CodeAge - Code::kFirstCodeAge);
INSTANCE_TYPE_LIST(INSTANCE_TYPE_WRAPPER)
CODE_KIND_LIST(CODE_KIND_WRAPPER)
@@ -115,6 +119,20 @@ void ObjectStats::PrintJSON(const char* key) {
#undef PRINT_KEY_AND_ID
}
+void ObjectStats::DumpInstanceTypeData(std::stringstream& stream,
+ const char* name, int index) {
+ stream << "\"" << name << "\":{";
+ stream << "\"type\":" << static_cast<int>(index) << ",";
+ stream << "\"overall\":" << object_sizes_[index] << ",";
+ stream << "\"count\":" << object_counts_[index] << ",";
+ stream << "\"over_allocated\":" << over_allocated_[index] << ",";
+ stream << "\"histogram\":";
+ DumpJSONArray(stream, size_histogram_[index], kNumberOfBuckets);
+ stream << ",\"over_allocated_histogram\":";
+ DumpJSONArray(stream, over_allocated_histogram_[index], kNumberOfBuckets);
+ stream << "},";
+}
+
void ObjectStats::Dump(std::stringstream& stream) {
double time = isolate()->time_millis_since_init();
int gc_count = heap()->gc_count();
@@ -131,29 +149,19 @@ void ObjectStats::Dump(std::stringstream& stream) {
stream << "],";
stream << "\"type_data\":{";
-#define PRINT_INSTANCE_TYPE_DATA(name, index) \
- stream << "\"" << name << "\":{"; \
- stream << "\"type\":" << static_cast<int>(index) << ","; \
- stream << "\"overall\":" << object_sizes_[index] << ","; \
- stream << "\"count\":" << object_counts_[index] << ","; \
- stream << "\"over_allocated\":" << over_allocated_[index] << ","; \
- stream << "\"histogram\":"; \
- DumpJSONArray(stream, size_histogram_[index], kNumberOfBuckets); \
- stream << ",\"over_allocated_histogram\":"; \
- DumpJSONArray(stream, over_allocated_histogram_[index], kNumberOfBuckets); \
- stream << "},";
+#define INSTANCE_TYPE_WRAPPER(name) DumpInstanceTypeData(stream, #name, name);
+#define CODE_KIND_WRAPPER(name) \
+ DumpInstanceTypeData(stream, "*CODE_" #name, \
+ FIRST_CODE_KIND_SUB_TYPE + Code::name);
+
+#define FIXED_ARRAY_SUB_INSTANCE_TYPE_WRAPPER(name) \
+ DumpInstanceTypeData(stream, "*FIXED_ARRAY_" #name, \
+ FIRST_FIXED_ARRAY_SUB_TYPE + name);
-#define INSTANCE_TYPE_WRAPPER(name) PRINT_INSTANCE_TYPE_DATA(#name, name)
-#define CODE_KIND_WRAPPER(name) \
- PRINT_INSTANCE_TYPE_DATA("*CODE_" #name, \
- FIRST_CODE_KIND_SUB_TYPE + Code::name)
-#define FIXED_ARRAY_SUB_INSTANCE_TYPE_WRAPPER(name) \
- PRINT_INSTANCE_TYPE_DATA("*FIXED_ARRAY_" #name, \
- FIRST_FIXED_ARRAY_SUB_TYPE + name)
-#define CODE_AGE_WRAPPER(name) \
- PRINT_INSTANCE_TYPE_DATA( \
- "*CODE_AGE_" #name, \
- FIRST_CODE_AGE_SUB_TYPE + Code::k##name##CodeAge - Code::kFirstCodeAge)
+#define CODE_AGE_WRAPPER(name) \
+ DumpInstanceTypeData( \
+ stream, "*CODE_AGE_" #name, \
+ FIRST_CODE_AGE_SUB_TYPE + Code::k##name##CodeAge - Code::kFirstCodeAge);
INSTANCE_TYPE_LIST(INSTANCE_TYPE_WRAPPER);
CODE_KIND_LIST(CODE_KIND_WRAPPER);
« no previous file with comments | « src/heap/object-stats.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698