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

Side by Side Diff: dm/DM.cpp

Issue 872443003: Write dm.json periodically instead of only once at the end. (Closed) Base URL: https://skia.googlesource.com/skia.git@master
Patch Set: Created 5 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 unified diff | Download patch
« no previous file with comments | « no previous file | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 #include "CrashHandler.h" 1 #include "CrashHandler.h"
2 #include "DMJsonWriter.h" 2 #include "DMJsonWriter.h"
3 #include "DMSrcSink.h" 3 #include "DMSrcSink.h"
4 #include "OverwriteLine.h" 4 #include "OverwriteLine.h"
5 #include "ProcStats.h" 5 #include "ProcStats.h"
6 #include "SkBBHFactory.h" 6 #include "SkBBHFactory.h"
7 #include "SkCommonFlags.h" 7 #include "SkCommonFlags.h"
8 #include "SkForceLinking.h" 8 #include "SkForceLinking.h"
9 #include "SkGraphics.h" 9 #include "SkGraphics.h"
10 #include "SkMD5.h" 10 #include "SkMD5.h"
(...skipping 27 matching lines...) Expand all
38 38
39 static void fail(ImplicitString err) { 39 static void fail(ImplicitString err) {
40 SkAutoMutexAcquire lock(gFailuresMutex); 40 SkAutoMutexAcquire lock(gFailuresMutex);
41 SkDebugf("\n\nFAILURE: %s\n\n", err.c_str()); 41 SkDebugf("\n\nFAILURE: %s\n\n", err.c_str());
42 gFailures.push_back(err); 42 gFailures.push_back(err);
43 } 43 }
44 44
45 static int32_t gPending = 0; // Atomic. 45 static int32_t gPending = 0; // Atomic.
46 46
47 static void done(double ms, ImplicitString config, ImplicitString src, ImplicitS tring name) { 47 static void done(double ms, ImplicitString config, ImplicitString src, ImplicitS tring name) {
48 int32_t pending = sk_atomic_dec(&gPending)-1;
48 SkDebugf("%s(%4dMB %5d) %s\t%s %s %s ", FLAGS_verbose ? "\n" : kSkOverwrite Line 49 SkDebugf("%s(%4dMB %5d) %s\t%s %s %s ", FLAGS_verbose ? "\n" : kSkOverwrite Line
49 , sk_tools::getMaxResidentSetSizeMB() 50 , sk_tools::getMaxResidentSetSizeMB()
50 , sk_atomic_dec(&gPending)-1 51 , pending
51 , HumanizeMs(ms).c_str() 52 , HumanizeMs(ms).c_str()
52 , config.c_str() 53 , config.c_str()
53 , src.c_str() 54 , src.c_str()
54 , name.c_str()); 55 , name.c_str());
56 // We write our dm.json file every once in a while in case we crash.
57 // Notice this also handles the final dm.json when pending == 0.
58 if (pending % 500 == 0) {
59 JsonWriter::DumpJson();
60 }
55 } 61 }
56 62
57 /*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~*/ 63 /*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~*/
58 64
59 template <typename T> 65 template <typename T>
60 struct Tagged : public SkAutoTDelete<T> { const char* tag; }; 66 struct Tagged : public SkAutoTDelete<T> { const char* tag; };
61 67
62 static const bool kMemcpyOK = true; 68 static const bool kMemcpyOK = true;
63 69
64 static SkTArray<Tagged<Src>, kMemcpyOK> gSrcs; 70 static SkTArray<Tagged<Src>, kMemcpyOK> gSrcs;
(...skipping 378 matching lines...) Expand 10 before | Expand all | Expand 10 after
443 break; 449 break;
444 default: 450 default:
445 tg.add(run_enclave, &enclaves[i]); 451 tg.add(run_enclave, &enclaves[i]);
446 break; 452 break;
447 } 453 }
448 } 454 }
449 tg.wait(); 455 tg.wait();
450 // At this point we're back in single-threaded land. 456 // At this point we're back in single-threaded land.
451 457
452 SkDebugf("\n"); 458 SkDebugf("\n");
453 JsonWriter::DumpJson();
454
455 if (gFailures.count() > 0) { 459 if (gFailures.count() > 0) {
456 SkDebugf("Failures:\n"); 460 SkDebugf("Failures:\n");
457 for (int i = 0; i < gFailures.count(); i++) { 461 for (int i = 0; i < gFailures.count(); i++) {
458 SkDebugf("\t%s\n", gFailures[i].c_str()); 462 SkDebugf("\t%s\n", gFailures[i].c_str());
459 } 463 }
460 SkDebugf("%d failures\n", gFailures.count()); 464 SkDebugf("%d failures\n", gFailures.count());
461 return 1; 465 return 1;
462 } 466 }
463 if (gPending > 0) { 467 if (gPending > 0) {
464 SkDebugf("Hrm, we didn't seem to run everything we intended to! Please file a bug.\n"); 468 SkDebugf("Hrm, we didn't seem to run everything we intended to! Please file a bug.\n");
465 return 1; 469 return 1;
466 } 470 }
467 return 0; 471 return 0;
468 } 472 }
469 473
470 #if !defined(SK_BUILD_FOR_IOS) && !defined(SK_BUILD_FOR_NACL) 474 #if !defined(SK_BUILD_FOR_IOS) && !defined(SK_BUILD_FOR_NACL)
471 int main(int argc, char** argv) { 475 int main(int argc, char** argv) {
472 SkCommandLineFlags::Parse(argc, argv); 476 SkCommandLineFlags::Parse(argc, argv);
473 return dm_main(); 477 return dm_main();
474 } 478 }
475 #endif 479 #endif
OLDNEW
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698