12345678910111213141516171819202122232425262728293031323334353637383940414243 |
- /* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 4 -*-
- *
- * This Source Code Form is subject to the terms of the Mozilla Public
- * License, v. 2.0. If a copy of the MPL was not distributed with this
- * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
- #include "jsfriendapi.h"
- #include "nsContentUtils.h"
- #include "CPOWTimer.h"
- #include "jsapi.h"
- CPOWTimer::CPOWTimer(JSContext* cx MOZ_GUARD_OBJECT_NOTIFIER_PARAM_IN_IMPL)
- : cx_(nullptr)
- , startInterval_(0)
- {
- MOZ_GUARD_OBJECT_NOTIFIER_INIT;
- if (!js::GetStopwatchIsMonitoringCPOW(cx))
- return;
- cx_ = cx;
- startInterval_ = JS_Now();
- }
- CPOWTimer::~CPOWTimer()
- {
- if (!cx_) {
- // Monitoring was off when we started the timer.
- return;
- }
- if (!js::GetStopwatchIsMonitoringCPOW(cx_)) {
- // Monitoring has been deactivated while we were in the timer.
- return;
- }
- const int64_t endInterval = JS_Now();
- if (endInterval <= startInterval_) {
- // Do not assume monotonicity.
- return;
- }
- js::AddCPOWPerformanceDelta(cx_, endInterval - startInterval_);
- }
|