Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(302)

Unified Diff: Source/bindings/dart/DartUtilities.cpp

Issue 466243002: Support merged Dart-JS callstacks (Closed) Base URL: svn://svn.chromium.org/blink/branches/dart/dartium
Patch Set: Created 6 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: Source/bindings/dart/DartUtilities.cpp
diff --git a/Source/bindings/dart/DartUtilities.cpp b/Source/bindings/dart/DartUtilities.cpp
index 25a3b2e7c28680a5fd7475307edcdea1a7352d15..3cacfc7d6c683c235282318650ef53962a4fcfcc 100644
--- a/Source/bindings/dart/DartUtilities.cpp
+++ b/Source/bindings/dart/DartUtilities.cpp
@@ -56,6 +56,7 @@
#include "core/frame/LocalDOMWindow.h"
#include "core/frame/LocalFrame.h"
#include "core/html/canvas/DataView.h"
+#include "core/inspector/InspectorInstrumentation.h"
#include "core/inspector/ScriptArguments.h"
#include "core/inspector/ScriptCallStack.h"
#include "core/loader/FrameLoader.h"
@@ -85,10 +86,9 @@ V8Scope::V8Scope(DartDOMData* dartDOMData, v8::Handle<v8::Context> context)
, m_dartDOMData(dartDOMData)
, m_handleScope(m_v8Isolate)
, m_contextScope(context)
- , m_recursionScope(m_v8Isolate, DartUtilities::scriptExecutionContext())
+ , m_recursionScope(m_v8Isolate, DartUtilities::scriptExecutionContext(), false)
{
- if (m_dartDOMData)
- (*m_dartDOMData->recursion())++;
+ incrementRecursionLevel();
}
V8Scope::V8Scope(DartDOMData* dartDOMData)
@@ -96,16 +96,24 @@ V8Scope::V8Scope(DartDOMData* dartDOMData)
, m_dartDOMData(dartDOMData)
, m_handleScope(m_v8Isolate)
, m_contextScope(DartUtilities::currentV8Context())
- , m_recursionScope(m_v8Isolate, DartUtilities::scriptExecutionContext())
+ , m_recursionScope(m_v8Isolate, DartUtilities::scriptExecutionContext(), false)
{
- if (m_dartDOMData)
- (*m_dartDOMData->recursion())++;
+ incrementRecursionLevel();
}
V8Scope::~V8Scope()
{
if (m_dartDOMData)
- (*m_dartDOMData->recursion())--;
+ m_dartDOMData->stackTraceTimestampTracker()->decrementRecursionLevel();
+}
+
+void V8Scope::incrementRecursionLevel()
+{
+ if (!m_dartDOMData)
+ return;
+ StackTraceTimestampTracker* tracker = m_dartDOMData->stackTraceTimestampTracker();
+ tracker->incrementRecursionLevel(InspectorInstrumentation::hasFrontends() && tracker->recursionLevel() > 0 ?
+ DartUtilities::currentStackDepth() : 0);
}
DartStringPeer* DartStringPeer::emptyString()
@@ -1071,6 +1079,18 @@ ScriptCallFrame DartUtilities::toScriptCallFrame(Dart_ActivationFrame frame, Dar
return ScriptCallFrame(DartUtilities::toString(functionName), "undefined", DartUtilities::toString(scriptUrl), lineNumber, columnNumber);
}
+size_t DartUtilities::currentStackDepth()
+{
+ intptr_t stackDepth = 0;
+ Dart_StackTrace trace = 0;
+ Dart_Handle ALLOW_UNUSED result = Dart_GetStackTrace(&trace);
+ ASSERT(!Dart_IsError(result));
+ ASSERT(!Dart_IsNull(result));
+ result = Dart_StackTraceLength(trace, &stackDepth);
+ ASSERT(!Dart_IsError(result));
+ return stackDepth;
+}
+
PassRefPtr<ScriptCallStack> DartUtilities::createScriptCallStack()
{
Dart_StackTrace trace = 0;

Powered by Google App Engine
This is Rietveld 408576698