OLD | NEW |
1 /* | 1 /* |
2 * Copyright (c) 2010-2011 Google Inc. All rights reserved. | 2 * Copyright (c) 2010-2011 Google Inc. 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 947 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
958 m_maxAsyncCallStackDepthMap[agent] = depth; | 958 m_maxAsyncCallStackDepthMap[agent] = depth; |
959 | 959 |
960 int maxAsyncCallStackDepth = 0; | 960 int maxAsyncCallStackDepth = 0; |
961 for (const auto& pair : m_maxAsyncCallStackDepthMap) { | 961 for (const auto& pair : m_maxAsyncCallStackDepthMap) { |
962 if (pair.second > maxAsyncCallStackDepth) | 962 if (pair.second > maxAsyncCallStackDepth) |
963 maxAsyncCallStackDepth = pair.second; | 963 maxAsyncCallStackDepth = pair.second; |
964 } | 964 } |
965 | 965 |
966 if (m_maxAsyncCallStackDepth == maxAsyncCallStackDepth) | 966 if (m_maxAsyncCallStackDepth == maxAsyncCallStackDepth) |
967 return; | 967 return; |
968 | |
969 if (maxAsyncCallStackDepth && !m_maxAsyncCallStackDepth) | |
970 m_client->enableAsyncInstrumentation(); | |
971 else if (!maxAsyncCallStackDepth && m_maxAsyncCallStackDepth) | |
972 m_client->disableAsyncInstrumentation(); | |
973 | |
974 m_maxAsyncCallStackDepth = maxAsyncCallStackDepth; | 968 m_maxAsyncCallStackDepth = maxAsyncCallStackDepth; |
975 if (!maxAsyncCallStackDepth) | 969 if (!maxAsyncCallStackDepth) |
976 allAsyncTasksCanceled(); | 970 allAsyncTasksCanceled(); |
977 } | 971 } |
978 | 972 |
979 void V8DebuggerImpl::asyncTaskScheduled(const String16& taskName, void* task, bo
ol recurring) | 973 void V8DebuggerImpl::asyncTaskScheduled(const String16& taskName, void* task, bo
ol recurring) |
980 { | 974 { |
981 if (!m_maxAsyncCallStackDepth) | 975 if (!m_maxAsyncCallStackDepth) |
982 return; | 976 return; |
983 v8::HandleScope scope(m_isolate); | 977 v8::HandleScope scope(m_isolate); |
984 int contextGroupId = m_isolate->InContext() ? getGroupId(m_isolate->GetCurre
ntContext()) : 0; | 978 int contextGroupId = m_isolate->InContext() ? getGroupId(m_isolate->GetCurre
ntContext()) : 0; |
985 std::unique_ptr<V8StackTraceImpl> chain = V8StackTraceImpl::capture(this, co
ntextGroupId, V8StackTraceImpl::maxCallStackSizeToCapture, taskName); | 979 std::unique_ptr<V8StackTraceImpl> chain = V8StackTraceImpl::capture(this, co
ntextGroupId, V8StackTraceImpl::maxCallStackSizeToCapture, taskName); |
986 if (chain) { | 980 if (chain) { |
987 m_asyncTaskStacks[task] = std::move(chain); | 981 m_asyncTaskStacks[task] = std::move(chain); |
988 if (recurring) | 982 if (recurring) |
989 m_recurringTasks.insert(task); | 983 m_recurringTasks.insert(task); |
990 } | 984 } |
991 } | 985 } |
992 | 986 |
993 void V8DebuggerImpl::asyncTaskCanceled(void* task) | 987 void V8DebuggerImpl::asyncTaskCanceled(void* task) |
994 { | 988 { |
995 if (!m_maxAsyncCallStackDepth) | 989 if (!m_maxAsyncCallStackDepth) |
996 return; | 990 return; |
997 m_asyncTaskStacks.erase(task); | 991 m_asyncTaskStacks.erase(task); |
998 m_recurringTasks.erase(task); | 992 m_recurringTasks.erase(task); |
999 } | 993 } |
1000 | 994 |
1001 void V8DebuggerImpl::asyncTaskStarted(void* task) | 995 void V8DebuggerImpl::asyncTaskStarted(void* task) |
1002 { | 996 { |
1003 // Not enabled, return. | |
1004 if (!m_maxAsyncCallStackDepth) | 997 if (!m_maxAsyncCallStackDepth) |
1005 return; | 998 return; |
1006 | |
1007 m_currentTasks.push_back(task); | 999 m_currentTasks.push_back(task); |
1008 AsyncTaskToStackTrace::iterator stackIt = m_asyncTaskStacks.find(task); | 1000 AsyncTaskToStackTrace::iterator stackIt = m_asyncTaskStacks.find(task); |
1009 // Needs to support following order of events: | 1001 // Needs to support following order of events: |
1010 // - asyncTaskScheduled | 1002 // - asyncTaskScheduled |
1011 // <-- attached here --> | 1003 // <-- attached here --> |
1012 // - asyncTaskStarted | 1004 // - asyncTaskStarted |
1013 // - asyncTaskCanceled <-- canceled before finished | 1005 // - asyncTaskCanceled <-- canceled before finished |
1014 // <-- async stack requested here --> | 1006 // <-- async stack requested here --> |
1015 // - asyncTaskFinished | 1007 // - asyncTaskFinished |
1016 std::unique_ptr<V8StackTraceImpl> stack; | 1008 std::unique_ptr<V8StackTraceImpl> stack; |
(...skipping 125 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1142 | 1134 |
1143 V8InspectorSessionImpl* V8DebuggerImpl::sessionForContextGroup(int contextGroupI
d) | 1135 V8InspectorSessionImpl* V8DebuggerImpl::sessionForContextGroup(int contextGroupI
d) |
1144 { | 1136 { |
1145 if (!contextGroupId) | 1137 if (!contextGroupId) |
1146 return nullptr; | 1138 return nullptr; |
1147 SessionMap::iterator iter = m_sessions.find(contextGroupId); | 1139 SessionMap::iterator iter = m_sessions.find(contextGroupId); |
1148 return iter == m_sessions.end() ? nullptr : iter->second; | 1140 return iter == m_sessions.end() ? nullptr : iter->second; |
1149 } | 1141 } |
1150 | 1142 |
1151 } // namespace blink | 1143 } // namespace blink |
OLD | NEW |