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

Side by Side 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 unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 // Copyright 2011, Google Inc. 1 // Copyright 2011, Google Inc.
2 // All rights reserved. 2 // All rights reserved.
3 // 3 //
4 // Redistribution and use in source and binary forms, with or without 4 // Redistribution and use in source and binary forms, with or without
5 // modification, are permitted provided that the following conditions are 5 // modification, are permitted provided that the following conditions are
6 // met: 6 // met:
7 // 7 //
8 // * Redistributions of source code must retain the above copyright 8 // * Redistributions of source code must retain the above copyright
9 // notice, this list of conditions and the following disclaimer. 9 // notice, this list of conditions and the following disclaimer.
10 // * Redistributions in binary form must reproduce the above 10 // * Redistributions in binary form must reproduce the above
(...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after
49 #include "bindings/v8/ScriptController.h" 49 #include "bindings/v8/ScriptController.h"
50 #include "bindings/v8/SerializedScriptValue.h" 50 #include "bindings/v8/SerializedScriptValue.h"
51 #include "bindings/v8/V8Binding.h" 51 #include "bindings/v8/V8Binding.h"
52 #include "bindings/v8/V8ExceptionState.h" 52 #include "bindings/v8/V8ExceptionState.h"
53 #include "bindings/v8/V8PerIsolateData.h" 53 #include "bindings/v8/V8PerIsolateData.h"
54 #include "core/dom/Document.h" 54 #include "core/dom/Document.h"
55 #include "core/fetch/ResourceFetcher.h" 55 #include "core/fetch/ResourceFetcher.h"
56 #include "core/frame/LocalDOMWindow.h" 56 #include "core/frame/LocalDOMWindow.h"
57 #include "core/frame/LocalFrame.h" 57 #include "core/frame/LocalFrame.h"
58 #include "core/html/canvas/DataView.h" 58 #include "core/html/canvas/DataView.h"
59 #include "core/inspector/InspectorInstrumentation.h"
59 #include "core/inspector/ScriptArguments.h" 60 #include "core/inspector/ScriptArguments.h"
60 #include "core/inspector/ScriptCallStack.h" 61 #include "core/inspector/ScriptCallStack.h"
61 #include "core/loader/FrameLoader.h" 62 #include "core/loader/FrameLoader.h"
62 #include "modules/webdatabase/sqlite/SQLValue.h" 63 #include "modules/webdatabase/sqlite/SQLValue.h"
63 #include "platform/SharedBuffer.h" 64 #include "platform/SharedBuffer.h"
64 #include "platform/network/ResourceRequest.h" 65 #include "platform/network/ResourceRequest.h"
65 66
66 #include "wtf/ArrayBufferView.h" 67 #include "wtf/ArrayBufferView.h"
67 #include "wtf/Float32Array.h" 68 #include "wtf/Float32Array.h"
68 #include "wtf/Float64Array.h" 69 #include "wtf/Float64Array.h"
69 #include "wtf/Int16Array.h" 70 #include "wtf/Int16Array.h"
70 #include "wtf/Int32Array.h" 71 #include "wtf/Int32Array.h"
71 #include "wtf/Int8Array.h" 72 #include "wtf/Int8Array.h"
72 #include "wtf/RefCounted.h" 73 #include "wtf/RefCounted.h"
73 #include "wtf/Uint16Array.h" 74 #include "wtf/Uint16Array.h"
74 #include "wtf/Uint32Array.h" 75 #include "wtf/Uint32Array.h"
75 #include "wtf/Uint8Array.h" 76 #include "wtf/Uint8Array.h"
76 #include "wtf/Uint8ClampedArray.h" 77 #include "wtf/Uint8ClampedArray.h"
77 #include "wtf/text/AtomicString.h" 78 #include "wtf/text/AtomicString.h"
78 #include "wtf/text/CString.h" 79 #include "wtf/text/CString.h"
79 #include "wtf/text/WTFString.h" 80 #include "wtf/text/WTFString.h"
80 81
81 namespace WebCore { 82 namespace WebCore {
82 83
83 V8Scope::V8Scope(DartDOMData* dartDOMData, v8::Handle<v8::Context> context) 84 V8Scope::V8Scope(DartDOMData* dartDOMData, v8::Handle<v8::Context> context)
84 : m_v8Isolate(v8::Isolate::GetCurrent()) 85 : m_v8Isolate(v8::Isolate::GetCurrent())
85 , m_dartDOMData(dartDOMData) 86 , m_dartDOMData(dartDOMData)
86 , m_handleScope(m_v8Isolate) 87 , m_handleScope(m_v8Isolate)
87 , m_contextScope(context) 88 , m_contextScope(context)
88 , m_recursionScope(m_v8Isolate, DartUtilities::scriptExecutionContext()) 89 , m_recursionScope(m_v8Isolate, DartUtilities::scriptExecutionContext(), fal se)
89 { 90 {
90 if (m_dartDOMData) 91 incrementRecursionLevel();
91 (*m_dartDOMData->recursion())++;
92 } 92 }
93 93
94 V8Scope::V8Scope(DartDOMData* dartDOMData) 94 V8Scope::V8Scope(DartDOMData* dartDOMData)
95 : m_v8Isolate(v8::Isolate::GetCurrent()) 95 : m_v8Isolate(v8::Isolate::GetCurrent())
96 , m_dartDOMData(dartDOMData) 96 , m_dartDOMData(dartDOMData)
97 , m_handleScope(m_v8Isolate) 97 , m_handleScope(m_v8Isolate)
98 , m_contextScope(DartUtilities::currentV8Context()) 98 , m_contextScope(DartUtilities::currentV8Context())
99 , m_recursionScope(m_v8Isolate, DartUtilities::scriptExecutionContext()) 99 , m_recursionScope(m_v8Isolate, DartUtilities::scriptExecutionContext(), fal se)
100 { 100 {
101 if (m_dartDOMData) 101 incrementRecursionLevel();
102 (*m_dartDOMData->recursion())++;
103 } 102 }
104 103
105 V8Scope::~V8Scope() 104 V8Scope::~V8Scope()
106 { 105 {
107 if (m_dartDOMData) 106 if (m_dartDOMData)
108 (*m_dartDOMData->recursion())--; 107 m_dartDOMData->stackTraceTimestampTracker()->decrementRecursionLevel();
108 }
109
110 void V8Scope::incrementRecursionLevel()
111 {
112 if (!m_dartDOMData)
113 return;
114 StackTraceTimestampTracker* tracker = m_dartDOMData->stackTraceTimestampTrac ker();
115 tracker->incrementRecursionLevel(InspectorInstrumentation::hasFrontends() && tracker->recursionLevel() > 0 ?
116 DartUtilities::currentStackDepth() : 0);
109 } 117 }
110 118
111 DartStringPeer* DartStringPeer::emptyString() 119 DartStringPeer* DartStringPeer::emptyString()
112 { 120 {
113 DEFINE_STATIC_LOCAL(DartStringPeer, empty, ()); 121 DEFINE_STATIC_LOCAL(DartStringPeer, empty, ());
114 return &empty; 122 return &empty;
115 } 123 }
116 124
117 125
118 static void stringFinalizer(void* peer) 126 static void stringFinalizer(void* peer)
(...skipping 945 matching lines...) Expand 10 before | Expand all | Expand 10 after
1064 intptr_t lineNumber = 0; 1072 intptr_t lineNumber = 0;
1065 intptr_t columnNumber = 0; 1073 intptr_t columnNumber = 0;
1066 Dart_Handle result = Dart_ActivationFrameInfo(frame, &functionName, &scriptU rl, &lineNumber, &columnNumber); 1074 Dart_Handle result = Dart_ActivationFrameInfo(frame, &functionName, &scriptU rl, &lineNumber, &columnNumber);
1067 if (Dart_IsError(result)) { 1075 if (Dart_IsError(result)) {
1068 exception = result; 1076 exception = result;
1069 return ScriptCallFrame("undefined", "undefined", "undefined", 0, 0); 1077 return ScriptCallFrame("undefined", "undefined", "undefined", 0, 0);
1070 } 1078 }
1071 return ScriptCallFrame(DartUtilities::toString(functionName), "undefined", D artUtilities::toString(scriptUrl), lineNumber, columnNumber); 1079 return ScriptCallFrame(DartUtilities::toString(functionName), "undefined", D artUtilities::toString(scriptUrl), lineNumber, columnNumber);
1072 } 1080 }
1073 1081
1082 size_t DartUtilities::currentStackDepth()
1083 {
1084 intptr_t stackDepth = 0;
1085 Dart_StackTrace trace = 0;
1086 Dart_Handle ALLOW_UNUSED result = Dart_GetStackTrace(&trace);
1087 ASSERT(!Dart_IsError(result));
1088 ASSERT(!Dart_IsNull(result));
1089 result = Dart_StackTraceLength(trace, &stackDepth);
1090 ASSERT(!Dart_IsError(result));
1091 return stackDepth;
1092 }
1093
1074 PassRefPtr<ScriptCallStack> DartUtilities::createScriptCallStack() 1094 PassRefPtr<ScriptCallStack> DartUtilities::createScriptCallStack()
1075 { 1095 {
1076 Dart_StackTrace trace = 0; 1096 Dart_StackTrace trace = 0;
1077 Dart_Handle ALLOW_UNUSED result = Dart_GetStackTrace(&trace); 1097 Dart_Handle ALLOW_UNUSED result = Dart_GetStackTrace(&trace);
1078 ASSERT(!Dart_IsError(result)); 1098 ASSERT(!Dart_IsError(result));
1079 ASSERT(!Dart_IsNull(result)); 1099 ASSERT(!Dart_IsNull(result));
1080 ASSERT(trace); 1100 ASSERT(trace);
1081 return createScriptCallStackFromStackTrace(trace); 1101 return createScriptCallStackFromStackTrace(trace);
1082 } 1102 }
1083 1103
(...skipping 123 matching lines...) Expand 10 before | Expand all | Expand 10 after
1207 if (!v) { 1227 if (!v) {
1208 return 0; 1228 return 0;
1209 } 1229 }
1210 ASSERT(valueLen > 0 && static_cast<size_t>(valueLen) > strlen(v)); 1230 ASSERT(valueLen > 0 && static_cast<size_t>(valueLen) > strlen(v));
1211 strncpy(value, v, valueLen); 1231 strncpy(value, v, valueLen);
1212 value[valueLen - 1] = '\0'; 1232 value[valueLen - 1] = '\0';
1213 return strlen(value); 1233 return strlen(value);
1214 #endif 1234 #endif
1215 } 1235 }
1216 } 1236 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698