Files
sdk/runtime/vm/timer.cc
T
turnidge@google.com b891e78325 Post-meetup feature extravaganza.
Remodel the top-level isolate summary page.

Add variables to stack frames in the stack trace.

Stop putting small integers and bools in the object id ring.

Rework how we pass down null references (and null-like references like
uninitialized values).

Collect all isolate timers by default.

Change the lifetime of IsolateSpawnState so that we can refer to it
later to know how an isolate started up.  Stop pretending that
IsolateSpawnState is a void*.  Clean up vestigial IsolateStartData.

R=johnmccutchan@google.com

Review URL: https://codereview.chromium.org//145323002

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@32128 260f80e4-7a28-3924-810f-c04153c831b5
2014-01-29 18:40:12 +00:00

55 lines
2.0 KiB
C++

// Copyright (c) 2011, the Dart project authors. Please see the AUTHORS file
// for details. All rights reserved. Use of this source code is governed by a
// BSD-style license that can be found in the LICENSE file.
#include "vm/timer.h"
#include "vm/json_stream.h"
namespace dart {
// Define timer command line flags.
#define DEFINE_TIMER_FLAG(name, msg) \
DEFINE_FLAG(bool, name, false, ""#name);
TIMER_LIST(DEFINE_TIMER_FLAG)
#undef DEFINE_TIMER_FLAG
DEFINE_FLAG(bool, time_all, false, "Time all functionality");
// Maintains a list of timers per isolate.
#define INIT_TIMERS(name, msg) \
name##_((FLAG_##name || FLAG_time_all), msg),
TimerList::TimerList()
: TIMER_LIST(INIT_TIMERS)
padding_(false) {
}
#undef INIT_TIMERS
#define TIMER_FIELD_REPORT(name, msg) \
if (name().report() && name().message() != NULL) { \
OS::Print("%s : %" Pd64 " micros.\n", \
name().message(), \
name().TotalElapsedTime()); \
}
void TimerList::ReportTimers() {
TIMER_LIST(TIMER_FIELD_REPORT);
}
#undef TIMER_FIELD_REPORT
#define JSON_TIMER(name, msg) \
{ \
JSONObject jsobj(&jsarr); \
jsobj.AddProperty("name", #name); \
double seconds = static_cast<double>(name().TotalElapsedTime()) / \
static_cast<double>(kMicrosecondsPerSecond); \
jsobj.AddProperty("time", seconds); \
}
void TimerList::PrintTimersToJSONProperty(JSONObject* jsobj) {
JSONArray jsarr(jsobj, "timers");
TIMER_LIST(JSON_TIMER);
}
#undef JSON_TIMER
} // namespace dart