OLD | NEW |
1 /* | 1 /* |
2 * Copyright (C) 2008, 2009, 2011 Google Inc. All rights reserved. | 2 * Copyright (C) 2008, 2009, 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 103 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
114 InspectorInstrumentation::willReleaseScriptContext(frame, m_scriptState.
get()); | 114 InspectorInstrumentation::willReleaseScriptContext(frame, m_scriptState.
get()); |
115 } | 115 } |
116 | 116 |
117 m_document.clear(); | 117 m_document.clear(); |
118 | 118 |
119 if (behavior == DetachGlobal) | 119 if (behavior == DetachGlobal) |
120 m_scriptState->detachGlobalObject(); | 120 m_scriptState->detachGlobalObject(); |
121 | 121 |
122 m_scriptState->disposePerContextData(); | 122 m_scriptState->disposePerContextData(); |
123 | 123 |
| 124 if (ThreadState::current()) |
| 125 ThreadState::current()->v8ContextDisposed(); |
| 126 |
124 // It's likely that disposing the context has created a lot of | 127 // It's likely that disposing the context has created a lot of |
125 // garbage. Notify V8 about this so it'll have a chance of cleaning | 128 // garbage. Notify V8 about this so it'll have a chance of cleaning |
126 // it up when idle. | 129 // it up when idle. |
127 V8GCForContextDispose::instance().notifyContextDisposed(m_frame->isMainFrame
()); | 130 V8GCForContextDispose::instance().notifyContextDisposed(m_frame->isMainFrame
()); |
128 } | 131 } |
129 | 132 |
130 void WindowProxy::clearForClose() | 133 void WindowProxy::clearForClose() |
131 { | 134 { |
132 if (!isContextInitialized()) | 135 if (!isContextInitialized()) |
133 return; | 136 return; |
(...skipping 187 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
321 extensionNames.append(extension->name()); | 324 extensionNames.append(extension->name()); |
322 } | 325 } |
323 } | 326 } |
324 v8::ExtensionConfiguration extensionConfiguration(extensionNames.size(), ext
ensionNames.data()); | 327 v8::ExtensionConfiguration extensionConfiguration(extensionNames.size(), ext
ensionNames.data()); |
325 | 328 |
326 v8::Local<v8::Context> context = v8::Context::New(m_isolate, &extensionConfi
guration, globalTemplate, m_global.newLocal(m_isolate)); | 329 v8::Local<v8::Context> context = v8::Context::New(m_isolate, &extensionConfi
guration, globalTemplate, m_global.newLocal(m_isolate)); |
327 if (context.IsEmpty()) | 330 if (context.IsEmpty()) |
328 return; | 331 return; |
329 m_scriptState = ScriptState::create(context, m_world); | 332 m_scriptState = ScriptState::create(context, m_world); |
330 | 333 |
| 334 if (ThreadState::current()) |
| 335 ThreadState::current()->v8ContextCreated(); |
| 336 |
331 double contextCreationDurationInMilliseconds = (currentTime() - contextCreat
ionStartInSeconds) * 1000; | 337 double contextCreationDurationInMilliseconds = (currentTime() - contextCreat
ionStartInSeconds) * 1000; |
332 const char* histogramName = "WebCore.WindowProxy.createContext.MainWorld"; | 338 const char* histogramName = "WebCore.WindowProxy.createContext.MainWorld"; |
333 if (!m_world->isMainWorld()) | 339 if (!m_world->isMainWorld()) |
334 histogramName = "WebCore.WindowProxy.createContext.IsolatedWorld"; | 340 histogramName = "WebCore.WindowProxy.createContext.IsolatedWorld"; |
335 Platform::current()->histogramCustomCounts(histogramName, contextCreationDur
ationInMilliseconds, 0, 10000, 50); | 341 Platform::current()->histogramCustomCounts(histogramName, contextCreationDur
ationInMilliseconds, 0, 10000, 50); |
336 } | 342 } |
337 | 343 |
338 static v8::Local<v8::Object> toInnerGlobalObject(v8::Local<v8::Context> context) | 344 static v8::Local<v8::Object> toInnerGlobalObject(v8::Local<v8::Context> context) |
339 { | 345 { |
340 return v8::Local<v8::Object>::Cast(context->Global()->GetPrototype()); | 346 return v8::Local<v8::Object>::Cast(context->Global()->GetPrototype()); |
(...skipping 217 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
558 } | 564 } |
559 | 565 |
560 void WindowProxy::updateSecurityOrigin(SecurityOrigin* origin) | 566 void WindowProxy::updateSecurityOrigin(SecurityOrigin* origin) |
561 { | 567 { |
562 if (!isContextInitialized()) | 568 if (!isContextInitialized()) |
563 return; | 569 return; |
564 setSecurityToken(origin); | 570 setSecurityToken(origin); |
565 } | 571 } |
566 | 572 |
567 } // namespace blink | 573 } // namespace blink |
OLD | NEW |