OLD | NEW |
1 /* | 1 /* |
2 * Copyright (C) 2009 Google Inc. All rights reserved. | 2 * Copyright (C) 2009 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 | 5 * modification, are permitted provided that the following conditions |
6 * are met: | 6 * are met: |
7 * 1. Redistributions of source code must retain the above copyright | 7 * 1. Redistributions of source code must retain the above copyright |
8 * notice, this list of conditions and the following disclaimer. | 8 * notice, this list of conditions and the following disclaimer. |
9 * 2. Redistributions in binary form must reproduce the above copyright | 9 * 2. Redistributions in binary form must reproduce the above copyright |
10 * notice, this list of conditions and the following disclaimer in the | 10 * notice, this list of conditions and the following disclaimer in the |
(...skipping 30 matching lines...) Expand all Loading... |
41 | 41 |
42 namespace blink { | 42 namespace blink { |
43 | 43 |
44 static V8PerIsolateData* mainThreadPerIsolateData = 0; | 44 static V8PerIsolateData* mainThreadPerIsolateData = 0; |
45 | 45 |
46 static void beforeCallEnteredCallback(v8::Isolate* isolate) | 46 static void beforeCallEnteredCallback(v8::Isolate* isolate) |
47 { | 47 { |
48 RELEASE_ASSERT(!ScriptForbiddenScope::isScriptForbidden()); | 48 RELEASE_ASSERT(!ScriptForbiddenScope::isScriptForbidden()); |
49 } | 49 } |
50 | 50 |
51 static void microtasksCompletedCallback(v8::Isolate* isolate) | |
52 { | |
53 V8PerIsolateData::from(isolate)->runEndOfScopeTasks(); | |
54 } | |
55 | |
56 #if ENABLE(ASSERT) | 51 #if ENABLE(ASSERT) |
57 static void assertV8RecursionScope(v8::Isolate* isolate) | 52 static void assertV8RecursionScope(v8::Isolate* isolate) |
58 { | 53 { |
59 ASSERT(V8RecursionScope::properlyUsed(isolate)); | 54 ASSERT(V8RecursionScope::properlyUsed(isolate)); |
60 } | 55 } |
61 | 56 |
62 static bool runningUnitTest() | 57 static bool runningUnitTest() |
63 { | 58 { |
64 return Platform::current()->unitTestSupport(); | 59 return Platform::current()->unitTestSupport(); |
65 } | 60 } |
(...skipping 90 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
156 #endif | 151 #endif |
157 , m_performingMicrotaskCheckpoint(false) | 152 , m_performingMicrotaskCheckpoint(false) |
158 { | 153 { |
159 // FIXME: Remove once all v8::Isolate::GetCurrent() calls are gone. | 154 // FIXME: Remove once all v8::Isolate::GetCurrent() calls are gone. |
160 isolate()->Enter(); | 155 isolate()->Enter(); |
161 #if ENABLE(ASSERT) | 156 #if ENABLE(ASSERT) |
162 if (!runningUnitTest()) | 157 if (!runningUnitTest()) |
163 isolate()->AddCallCompletedCallback(&assertV8RecursionScope); | 158 isolate()->AddCallCompletedCallback(&assertV8RecursionScope); |
164 #endif | 159 #endif |
165 isolate()->AddBeforeCallEnteredCallback(&beforeCallEnteredCallback); | 160 isolate()->AddBeforeCallEnteredCallback(&beforeCallEnteredCallback); |
166 isolate()->AddMicrotasksCompletedCallback(µtasksCompletedCallback); | |
167 if (isMainThread()) | 161 if (isMainThread()) |
168 mainThreadPerIsolateData = this; | 162 mainThreadPerIsolateData = this; |
169 isolate()->SetUseCounterCallback(&useCounterCallback); | 163 isolate()->SetUseCounterCallback(&useCounterCallback); |
170 } | 164 } |
171 | 165 |
172 V8PerIsolateData::~V8PerIsolateData() | 166 V8PerIsolateData::~V8PerIsolateData() |
173 { | 167 { |
174 } | 168 } |
175 | 169 |
176 v8::Isolate* V8PerIsolateData::mainThreadIsolate() | 170 v8::Isolate* V8PerIsolateData::mainThreadIsolate() |
(...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
217 | 211 |
218 // destroy() clear things that should be cleared after ThreadState::detach() | 212 // destroy() clear things that should be cleared after ThreadState::detach() |
219 // gets called but before the Isolate exits. | 213 // gets called but before the Isolate exits. |
220 void V8PerIsolateData::destroy(v8::Isolate* isolate) | 214 void V8PerIsolateData::destroy(v8::Isolate* isolate) |
221 { | 215 { |
222 #if ENABLE(ASSERT) | 216 #if ENABLE(ASSERT) |
223 if (!runningUnitTest()) | 217 if (!runningUnitTest()) |
224 isolate->RemoveCallCompletedCallback(&assertV8RecursionScope); | 218 isolate->RemoveCallCompletedCallback(&assertV8RecursionScope); |
225 #endif | 219 #endif |
226 isolate->RemoveBeforeCallEnteredCallback(&beforeCallEnteredCallback); | 220 isolate->RemoveBeforeCallEnteredCallback(&beforeCallEnteredCallback); |
227 isolate->RemoveMicrotasksCompletedCallback(µtasksCompletedCallback); | |
228 V8PerIsolateData* data = from(isolate); | 221 V8PerIsolateData* data = from(isolate); |
229 | 222 |
230 // Clear everything before exiting the Isolate. | 223 // Clear everything before exiting the Isolate. |
231 if (data->m_scriptRegexpScriptState) | 224 if (data->m_scriptRegexpScriptState) |
232 data->m_scriptRegexpScriptState->disposePerContextData(); | 225 data->m_scriptRegexpScriptState->disposePerContextData(); |
233 data->m_liveRoot.clear(); | 226 data->m_liveRoot.clear(); |
234 data->m_hiddenValue.clear(); | 227 data->m_hiddenValue.clear(); |
235 data->m_stringCache->dispose(); | 228 data->m_stringCache->dispose(); |
236 data->m_stringCache.clear(); | 229 data->m_stringCache.clear(); |
237 data->m_domTemplateMapForNonMainWorld.clear(); | 230 data->m_domTemplateMapForNonMainWorld.clear(); |
(...skipping 114 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
352 ASSERT(!m_threadDebugger); | 345 ASSERT(!m_threadDebugger); |
353 m_threadDebugger = std::move(threadDebugger); | 346 m_threadDebugger = std::move(threadDebugger); |
354 } | 347 } |
355 | 348 |
356 ThreadDebugger* V8PerIsolateData::threadDebugger() | 349 ThreadDebugger* V8PerIsolateData::threadDebugger() |
357 { | 350 { |
358 return m_threadDebugger.get(); | 351 return m_threadDebugger.get(); |
359 } | 352 } |
360 | 353 |
361 } // namespace blink | 354 } // namespace blink |
OLD | NEW |