| Index: third_party/WebKit/Source/core/inspector/InspectorTraceEvents.cpp
|
| diff --git a/third_party/WebKit/Source/core/inspector/InspectorTraceEvents.cpp b/third_party/WebKit/Source/core/inspector/InspectorTraceEvents.cpp
|
| index 7c62a7c7b38e2403a71e9ee3113f3bda2bdf2a91..a37f85b006e72270cccbdcbcfbf4350c38286bb9 100644
|
| --- a/third_party/WebKit/Source/core/inspector/InspectorTraceEvents.cpp
|
| +++ b/third_party/WebKit/Source/core/inspector/InspectorTraceEvents.cpp
|
| @@ -33,6 +33,7 @@
|
| #include "wtf/Vector.h"
|
| #include "wtf/text/TextPosition.h"
|
| #include <inttypes.h>
|
| +#include <v8-profiler.h>
|
| #include <v8.h>
|
|
|
| namespace blink {
|
| @@ -44,17 +45,9 @@ String toHexString(const void* p)
|
| return String::format("0x%" PRIx64, static_cast<uint64_t>(reinterpret_cast<intptr_t>(p)));
|
| }
|
|
|
| -void setCallStack(TracedValue* value)
|
| +void requestCallStackSample()
|
| {
|
| - static const unsigned char* traceCategoryEnabled = 0;
|
| - WTF_ANNOTATE_BENIGN_RACE(&traceCategoryEnabled, "trace_event category");
|
| - if (!traceCategoryEnabled)
|
| - traceCategoryEnabled = TRACE_EVENT_API_GET_CATEGORY_GROUP_ENABLED(TRACE_DISABLED_BY_DEFAULT("devtools.timeline.stack"));
|
| - if (!*traceCategoryEnabled)
|
| - return;
|
| - RefPtr<ScriptCallStack> scriptCallStack = currentScriptCallStack(ScriptCallStack::maxCallStackSizeToCapture);
|
| - if (scriptCallStack)
|
| - scriptCallStack->toTracedValue(value, "stackTrace");
|
| + v8::Isolate::GetCurrent()->GetCpuProfiler()->CollectSample();
|
| }
|
|
|
| namespace {
|
| @@ -284,7 +277,7 @@ PassRefPtr<TraceEvent::ConvertableToTraceFormat> InspectorLayoutEvent::beginData
|
| value->setInteger("totalObjects", totalObjects);
|
| value->setBoolean("partialLayout", isPartial);
|
| value->setString("frame", toHexString(&frame));
|
| - setCallStack(value.get());
|
| + requestCallStackSample();
|
| return value.release();
|
| }
|
|
|
| @@ -418,7 +411,7 @@ PassRefPtr<TraceEvent::ConvertableToTraceFormat> InspectorSendRequestEvent::data
|
| }
|
| if (priority)
|
| value->setString("priority", priority);
|
| - setCallStack(value.get());
|
| + requestCallStackSample();
|
| return value.release();
|
| }
|
|
|
| @@ -471,7 +464,7 @@ static PassRefPtr<TracedValue> genericTimerData(ExecutionContext* context, int t
|
| value->setInteger("timerId", timerId);
|
| if (LocalFrame* frame = frameForExecutionContext(context))
|
| value->setString("frame", toHexString(frame));
|
| - setCallStack(value.get());
|
| + requestCallStackSample();
|
| return value.release();
|
| }
|
|
|
| @@ -501,7 +494,7 @@ PassRefPtr<TraceEvent::ConvertableToTraceFormat> InspectorAnimationFrameEvent::d
|
| value->setString("frame", toHexString(toDocument(context)->frame()));
|
| else if (context->isWorkerGlobalScope())
|
| value->setString("worker", toHexString(toWorkerGlobalScope(context)));
|
| - setCallStack(value.get());
|
| + requestCallStackSample();
|
| return value.release();
|
| }
|
|
|
| @@ -511,7 +504,7 @@ PassRefPtr<TracedValue> genericIdleCallbackEvent(ExecutionContext* context, int
|
| value->setInteger("id", id);
|
| if (LocalFrame* frame = frameForExecutionContext(context))
|
| value->setString("frame", toHexString(frame));
|
| - setCallStack(value.get());
|
| + requestCallStackSample();
|
| return value.release();
|
| }
|
|
|
| @@ -541,7 +534,7 @@ PassRefPtr<TraceEvent::ConvertableToTraceFormat> InspectorParseHtmlEvent::beginD
|
| value->setInteger("startLine", startLine);
|
| value->setString("frame", toHexString(document->frame()));
|
| value->setString("url", document->url().string());
|
| - setCallStack(value.get());
|
| + requestCallStackSample();
|
| return value.release();
|
| }
|
|
|
| @@ -566,7 +559,7 @@ PassRefPtr<TraceEvent::ConvertableToTraceFormat> InspectorXhrReadyStateChangeEve
|
| value->setInteger("readyState", request->readyState());
|
| if (LocalFrame* frame = frameForExecutionContext(context))
|
| value->setString("frame", toHexString(frame));
|
| - setCallStack(value.get());
|
| + requestCallStackSample();
|
| return value.release();
|
| }
|
|
|
| @@ -576,7 +569,7 @@ PassRefPtr<TraceEvent::ConvertableToTraceFormat> InspectorXhrLoadEvent::data(Exe
|
| value->setString("url", request->url().string());
|
| if (LocalFrame* frame = frameForExecutionContext(context))
|
| value->setString("frame", toHexString(frame));
|
| - setCallStack(value.get());
|
| + requestCallStackSample();
|
| return value.release();
|
| }
|
|
|
| @@ -618,7 +611,7 @@ PassRefPtr<TraceEvent::ConvertableToTraceFormat> InspectorPaintEvent::data(Layou
|
| setGeneratingNodeInfo(value.get(), layoutObject, "nodeId");
|
| int graphicsLayerId = graphicsLayer ? graphicsLayer->platformLayer()->id() : 0;
|
| value->setInteger("layerId", graphicsLayerId);
|
| - setCallStack(value.get());
|
| + requestCallStackSample();
|
| return value.release();
|
| }
|
|
|
| @@ -673,7 +666,7 @@ PassRefPtr<TraceEvent::ConvertableToTraceFormat> InspectorEvaluateScriptEvent::d
|
| {
|
| RefPtr<TracedValue> value = fillLocation(url, textPosition);
|
| value->setString("frame", toHexString(frame));
|
| - setCallStack(value.get());
|
| + requestCallStackSample();
|
| return value.release();
|
| }
|
|
|
| @@ -690,7 +683,7 @@ PassRefPtr<TraceEvent::ConvertableToTraceFormat> InspectorFunctionCallEvent::dat
|
| value->setInteger("scriptLine", scriptLine);
|
| if (LocalFrame* frame = frameForExecutionContext(context))
|
| value->setString("frame", toHexString(frame));
|
| - setCallStack(value.get());
|
| + requestCallStackSample();
|
| return value.release();
|
| }
|
|
|
| @@ -743,7 +736,7 @@ PassRefPtr<TraceEvent::ConvertableToTraceFormat> InspectorInvalidateLayoutEvent:
|
| {
|
| RefPtr<TracedValue> value = TracedValue::create();
|
| value->setString("frame", toHexString(frame));
|
| - setCallStack(value.get());
|
| + requestCallStackSample();
|
| return value.release();
|
| }
|
|
|
| @@ -751,7 +744,7 @@ PassRefPtr<TraceEvent::ConvertableToTraceFormat> InspectorRecalculateStylesEvent
|
| {
|
| RefPtr<TracedValue> value = TracedValue::create();
|
| value->setString("frame", toHexString(frame));
|
| - setCallStack(value.get());
|
| + requestCallStackSample();
|
| return value.release();
|
| }
|
|
|
| @@ -759,7 +752,7 @@ PassRefPtr<TraceEvent::ConvertableToTraceFormat> InspectorEventDispatchEvent::da
|
| {
|
| RefPtr<TracedValue> value = TracedValue::create();
|
| value->setString("type", event.type());
|
| - setCallStack(value.get());
|
| + requestCallStackSample();
|
| return value.release();
|
| }
|
|
|
|
|