OLD | NEW |
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 Loading... |
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 ∅ | 122 return ∅ |
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 Loading... |
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 Loading... |
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 } |
OLD | NEW |