diff --git a/js/src/vm/TraceLogging.cpp b/js/src/vm/TraceLogging.cpp index adee34b5e806..64f971ef6d2f 100644 --- a/js/src/vm/TraceLogging.cpp +++ b/js/src/vm/TraceLogging.cpp @@ -130,7 +130,7 @@ TraceLoggerThread::init() } enabled = 1; - logTimestamp(TraceLogger_Enable); + graph.enable(); return true; } @@ -157,8 +157,12 @@ TraceLoggerThread::enable() if (failed) return false; + // TODO: Remove this. This is so the refactor works with mimimal changes, + // It is the intention to remove this by logging TraceLogger_Enable/TraceLogger_Disable. + events.clear(); + enabled = 1; - logTimestamp(TraceLogger_Enable); + graph.enable(); return true; } @@ -229,7 +233,12 @@ TraceLoggerThread::disable() return true; } - logTimestamp(TraceLogger_Disable); + graph.log(events); + events.clear(); + + uint64_t time = rdtsc() - traceLoggers.startupTime; + graph.disable(time); + enabled = 0; return true; diff --git a/js/src/vm/TraceLoggingGraph.cpp b/js/src/vm/TraceLoggingGraph.cpp index 57712b231e0f..5049e69f7052 100644 --- a/js/src/vm/TraceLoggingGraph.cpp +++ b/js/src/vm/TraceLoggingGraph.cpp @@ -377,7 +377,7 @@ TraceLoggerGraph::stopEvent(uint64_t timestamp) return; // Forcefully disable logging. We have no stack information anymore. - logTimestamp(TraceLogger_Disable, timestamp); + disable(timestamp); return; } stack.pop(); @@ -386,9 +386,6 @@ TraceLoggerGraph::stopEvent(uint64_t timestamp) void TraceLoggerGraph::logTimestamp(uint32_t id, uint64_t timestamp) { - if (id == TraceLogger_Enable) - enabled = true; - if (!enabled) return; @@ -398,9 +395,6 @@ TraceLoggerGraph::logTimestamp(uint32_t id, uint64_t timestamp) return; } - if (id == TraceLogger_Disable) - disable(timestamp); - EventEntry &entry = events.pushUninitialized(); entry.time = timestamp; entry.textId = id; @@ -494,6 +488,12 @@ TraceLoggerGraph::updateStop(uint32_t treeId, uint64_t timestamp) return true; } +void +TraceLoggerGraph::enable() +{ + enabled = true; +} + void TraceLoggerGraph::disable(uint64_t timestamp) { diff --git a/js/src/vm/TraceLoggingGraph.h b/js/src/vm/TraceLoggingGraph.h index 101ab6f018b2..394d801eb8eb 100644 --- a/js/src/vm/TraceLoggingGraph.h +++ b/js/src/vm/TraceLoggingGraph.h @@ -199,6 +199,10 @@ class TraceLoggerGraph // Create a tree out of all the given events. void log(ContinuousSpace &events); + // Disable/enable the logger. + void disable(uint64_t timestamp); + void enable(); + private: bool failed; bool enabled; @@ -246,10 +250,6 @@ class TraceLoggerGraph // Log an (non-tree) event. void logTimestamp(uint32_t id, uint64_t timestamp); - - // Disable logging and forcefully report all not yet stopped tree events - // as stopped. - void disable(uint64_t timestamp); }; #endif /* TraceLoggingGraph_h */ diff --git a/js/src/vm/TraceLoggingTypes.h b/js/src/vm/TraceLoggingTypes.h index 4c8ac0ed9208..87b488d8a3b1 100644 --- a/js/src/vm/TraceLoggingTypes.h +++ b/js/src/vm/TraceLoggingTypes.h @@ -57,8 +57,6 @@ #define TRACELOGGER_LOG_ITEMS(_) \ _(Bailout) \ - _(Disable) \ - _(Enable) \ _(Stop) // Predefined IDs for common operations. These IDs can be used