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

Unified Diff: runtime/vm/isolate_reload.cc

Issue 2196723002: Refactor how we report reload results (Closed) Base URL: git@github.com:dart-lang/sdk.git@master
Patch Set: tweak Created 4 years, 5 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/isolate_reload.h ('k') | runtime/vm/object_reload.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: runtime/vm/isolate_reload.cc
diff --git a/runtime/vm/isolate_reload.cc b/runtime/vm/isolate_reload.cc
index 60ab54fb5062d120a011d8ae57791303ff580f24..9a67be9f5369bfc3a842bc4857c033dc03e9fc69 100644
--- a/runtime/vm/isolate_reload.cc
+++ b/runtime/vm/isolate_reload.cc
@@ -167,10 +167,10 @@ void InstanceMorpher::Dump() const {
void InstanceMorpher::AppendTo(JSONArray* array) {
JSONObject jsobj(array);
- jsobj.AddProperty("type", "Morpher");
+ jsobj.AddProperty("type", "ShapeChangeMapping");
jsobj.AddProperty("class", to_);
- jsobj.AddProperty("instances", before()->length());
- JSONArray map(&jsobj, "mapping");
+ jsobj.AddProperty("instanceCount", before()->length());
+ JSONArray map(&jsobj, "fieldOffsetMappings");
for (int i = 0; i < mapping_.length(); i += 2) {
JSONArray pair(&map);
pair.AddValue(mapping_.At(i));
@@ -214,12 +214,12 @@ void ClassReasonForCancelling::AppendTo(JSONArray* array) {
jsobj.AddProperty("message", message);
}
+
RawError* IsolateReloadContext::error() const {
ASSERT(has_error());
// Report the first error to the surroundings.
const Error& error =
Error::Handle(reasons_to_cancel_reload_.At(0)->ToError());
- OS::Print("[[%s]]\n", error.ToCString());
return error.raw();
}
@@ -357,11 +357,13 @@ bool IsolateReloadContext::IsSameLibrary(
}
-IsolateReloadContext::IsolateReloadContext(Isolate* isolate)
+IsolateReloadContext::IsolateReloadContext(Isolate* isolate,
+ JSONStream* js)
: start_time_micros_(OS::GetCurrentMonotonicMicros()),
reload_timestamp_(OS::GetCurrentTimeMillis()),
isolate_(isolate),
reload_skipped_(false),
+ js_(js),
saved_num_cids_(-1),
saved_class_table_(NULL),
num_saved_libs_(-1),
@@ -541,28 +543,37 @@ void IsolateReloadContext::FinishReload() {
BackgroundCompiler::Enable();
- if (FLAG_trace_reload) {
- JSONStream stream;
- ReportOnJSON(&stream);
- OS::Print("\nJSON report:\n %s\n", stream.ToCString());
- }
+ ReportOnJSON(js_);
}
void IsolateReloadContext::ReportOnJSON(JSONStream* stream) {
JSONObject jsobj(stream);
- jsobj.AddProperty("type", "Reload");
- jsobj.AddProperty("succeeded", !HasReasonsForCancelling());
- if (HasReasonsForCancelling()) {
- JSONArray array(&jsobj, "reasons");
- for (intptr_t i = 0; i < reasons_to_cancel_reload_.length(); i++) {
- ReasonForCancelling* reason = reasons_to_cancel_reload_.At(i);
- reason->AppendTo(&array);
- }
- } else {
- JSONArray array(&jsobj, "changes");
- for (intptr_t i = 0; i < instance_morphers_.length(); i++) {
- instance_morphers_.At(i)->AppendTo(&array);
+ jsobj.AddProperty("type", "ReloadReport");
+ jsobj.AddProperty("success", !HasReasonsForCancelling());
+ {
+ JSONObject details(&jsobj, "details");
+ if (HasReasonsForCancelling()) {
+ // Reload was rejected.
+ JSONArray array(&jsobj, "notices");
+ for (intptr_t i = 0; i < reasons_to_cancel_reload_.length(); i++) {
+ ReasonForCancelling* reason = reasons_to_cancel_reload_.At(i);
+ reason->AppendTo(&array);
+ }
+ } else {
+ // Reload was successful.
+ const GrowableObjectArray& libs =
+ GrowableObjectArray::Handle(object_store()->libraries());
+ const intptr_t final_library_count = libs.Length();
+ const intptr_t loaded_library_count =
+ final_library_count - num_saved_libs_;
+ details.AddProperty("savedLibraryCount", num_saved_libs_);
+ details.AddProperty("loadedLibraryCount", loaded_library_count);
+ details.AddProperty("finalLibraryCount", final_library_count);
+ JSONArray array(&jsobj, "shapeChangeMappings");
+ for (intptr_t i = 0; i < instance_morphers_.length(); i++) {
+ instance_morphers_.At(i)->AppendTo(&array);
+ }
}
}
}
« no previous file with comments | « runtime/vm/isolate_reload.h ('k') | runtime/vm/object_reload.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698