Index: Source/core/timing/PerformanceUserTiming.cpp |
diff --git a/Source/core/timing/PerformanceUserTiming.cpp b/Source/core/timing/PerformanceUserTiming.cpp |
index 351bed266eba3fae16d7156f7c1c76d92909fdfb..8ada4efd97d152f87884cbfb347ffec243adf56b 100644 |
--- a/Source/core/timing/PerformanceUserTiming.cpp |
+++ b/Source/core/timing/PerformanceUserTiming.cpp |
@@ -76,20 +76,20 @@ const RestrictedKeyMap& restrictedKeyMap() |
} // namespace anonymous |
-UserTiming::UserTiming(PerformanceBase* performance) |
- : m_performance(performance) |
+UserTiming::UserTiming(PerformanceBase& performance) |
+ : m_performance(&performance) |
{ |
} |
-static void insertPerformanceEntry(PerformanceEntryMap& performanceEntryMap, PerformanceEntry* entry) |
+static void insertPerformanceEntry(PerformanceEntryMap& performanceEntryMap, PerformanceEntry& entry) |
{ |
- PerformanceEntryMap::iterator it = performanceEntryMap.find(entry->name()); |
+ PerformanceEntryMap::iterator it = performanceEntryMap.find(entry.name()); |
if (it != performanceEntryMap.end()) { |
- it->value.append(entry); |
+ it->value.append(&entry); |
} else { |
PerformanceEntryVector vector(1); |
- vector[0] = entry; |
- performanceEntryMap.set(entry->name(), vector); |
+ vector[0] = Member<PerformanceEntry>(entry); |
+ performanceEntryMap.set(entry.name(), vector); |
} |
} |
@@ -104,17 +104,19 @@ static void clearPeformanceEntries(PerformanceEntryMap& performanceEntryMap, con |
performanceEntryMap.remove(name); |
} |
-void UserTiming::mark(const String& markName, ExceptionState& exceptionState) |
+PerformanceEntry* UserTiming::mark(const String& markName, ExceptionState& exceptionState) |
{ |
if (restrictedKeyMap().contains(markName)) { |
exceptionState.throwDOMException(SyntaxError, "'" + markName + "' is part of the PerformanceTiming interface, and cannot be used as a mark name."); |
- return; |
+ return nullptr; |
} |
TRACE_EVENT_COPY_MARK("blink.user_timing", markName.utf8().data()); |
double startTime = m_performance->now(); |
- insertPerformanceEntry(m_marksMap, PerformanceMark::create(markName, startTime)); |
+ PerformanceEntry* entry = PerformanceMark::create(markName, startTime); |
+ insertPerformanceEntry(m_marksMap, *entry); |
Platform::current()->histogramCustomCounts("PLT.UserTiming_Mark", static_cast<int>(startTime), 0, 600000, 100); |
+ return entry; |
} |
void UserTiming::clearMarks(const String& markName) |
@@ -140,7 +142,7 @@ double UserTiming::findExistingMarkStartTime(const String& markName, ExceptionSt |
return 0.0; |
} |
-void UserTiming::measure(const String& measureName, const String& startMark, const String& endMark, ExceptionState& exceptionState) |
+PerformanceEntry* UserTiming::measure(const String& measureName, const String& startMark, const String& endMark, ExceptionState& exceptionState) |
{ |
double startTime = 0.0; |
double endTime = 0.0; |
@@ -151,14 +153,14 @@ void UserTiming::measure(const String& measureName, const String& startMark, con |
endTime = m_performance->now(); |
startTime = findExistingMarkStartTime(startMark, exceptionState); |
if (exceptionState.hadException()) |
- return; |
+ return nullptr; |
} else { |
endTime = findExistingMarkStartTime(endMark, exceptionState); |
if (exceptionState.hadException()) |
- return; |
+ return nullptr; |
startTime = findExistingMarkStartTime(startMark, exceptionState); |
if (exceptionState.hadException()) |
- return; |
+ return nullptr; |
} |
// User timing events are stored as integer milliseconds from the start of |
@@ -170,9 +172,11 @@ void UserTiming::measure(const String& measureName, const String& startMark, con |
TRACE_EVENT_COPY_NESTABLE_ASYNC_BEGIN_WITH_TIMESTAMP0("blink.user_timing", measureName.utf8().data(), WTF::StringHash::hash(measureName), startTimeMonotonic); |
TRACE_EVENT_COPY_NESTABLE_ASYNC_END_WITH_TIMESTAMP0("blink.user_timing", measureName.utf8().data(), WTF::StringHash::hash(measureName), endTimeMonotonic); |
- insertPerformanceEntry(m_measuresMap, PerformanceMeasure::create(measureName, startTime, endTime)); |
+ PerformanceEntry* entry = PerformanceMeasure::create(measureName, startTime, endTime); |
+ insertPerformanceEntry(m_measuresMap, *entry); |
if (endTime >= startTime) |
Platform::current()->histogramCustomCounts("PLT.UserTiming_MeasureDuration", static_cast<int>(endTime - startTime), 0, 600000, 100); |
+ return entry; |
} |
void UserTiming::clearMeasures(const String& measureName) |