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

Unified Diff: runtime/vm/zone_test.cc

Issue 2554983002: Created methods to surface zone memory information for each isolate and thread in JSON. (Closed)
Patch Set: Created methods to surface zone memory information for each isolate and thread in JSON. Created 4 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « runtime/vm/zone.cc ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: runtime/vm/zone_test.cc
diff --git a/runtime/vm/zone_test.cc b/runtime/vm/zone_test.cc
index 4cb9231c74d539bd6486eff29c5adafbd536c833..cc53ebb658336b5bc7ceb52f02ec4c664633b0ee 100644
--- a/runtime/vm/zone_test.cc
+++ b/runtime/vm/zone_test.cc
@@ -169,4 +169,59 @@ TEST_CASE(PrintToString) {
EXPECT_STREQ("Hello World!", result);
}
+
+#ifndef PRODUCT
+UNIT_TEST_CASE(PrintZoneMemoryInfoToJSON) {
+#if defined(DEBUG)
+ FLAG_trace_zones = true;
+#endif
+ Dart_CreateIsolate(NULL, NULL, bin::isolate_snapshot_buffer, NULL, NULL,
+ NULL);
+ Thread* thread = Thread::Current();
+ EXPECT(thread->zone() == NULL);
+ {
+ StackZone zone(thread);
+ StackZone string_stack_zone(thread);
+ EXPECT(thread->zone() != NULL);
+
+ intptr_t allocated_size = 0;
+ const intptr_t kNumElements = 1000;
+
+ zone.GetZone()->Alloc<uint32_t>(kNumElements);
+ allocated_size += sizeof(uint32_t) * kNumElements;
+
+ EXPECT_LE(allocated_size, zone.SizeInBytes());
+ {
+ JSONStream stream;
+ // Get the JSON formated zone information.
+ zone.GetZone()->PrintJSON(&stream);
+ const char* json = stream.ToCString();
+ // Ensure that matches actual values.
+ char* size_buf = OS::SCreate(string_stack_zone.GetZone(),
+ "\"capacity\":%ld,"
+ "\"used\":%ld",
+ zone.SizeInBytes(), zone.UsedSizeInBytes());
+ EXPECT_SUBSTRING(size_buf, json);
+ }
+
+ // Expand the zone to ensure that JSON is updated accordingly.
+ zone.GetZone()->Alloc<uint32_t>(kNumElements);
+ allocated_size += sizeof(uint32_t) * kNumElements;
+ EXPECT_LE(allocated_size, zone.SizeInBytes());
+ {
+ JSONStream stream;
+ zone.GetZone()->PrintJSON(&stream);
+ const char* json = stream.ToCString();
+ char* size_buf = OS::SCreate(string_stack_zone.GetZone(),
+ "\"capacity\":%ld,"
+ "\"used\":%ld",
+ zone.SizeInBytes(), zone.UsedSizeInBytes());
+ EXPECT_SUBSTRING(size_buf, json);
+ }
+ }
+ EXPECT(thread->zone() == NULL);
+ Dart_ShutdownIsolate();
+}
+#endif
+
} // namespace dart
« no previous file with comments | « runtime/vm/zone.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698