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

Side by Side Diff: Source/bindings/core/v8/ScriptController.cpp

Issue 517043003: Move Frame to the Oilpan heap. (Closed) Base URL: https://chromium.googlesource.com/chromium/blink.git@master
Patch Set: Back out non-Oilpan experiment + tidy up by adding frame() ref accessors Created 6 years, 3 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
OLDNEW
1 /* 1 /*
2 * Copyright (C) 2008, 2009 Google Inc. All rights reserved. 2 * Copyright (C) 2008, 2009 Google Inc. All rights reserved.
3 * Copyright (C) 2009 Apple Inc. All rights reserved. 3 * Copyright (C) 2009 Apple Inc. All rights reserved.
4 * Copyright (C) 2014 Opera Software ASA. All rights reserved. 4 * Copyright (C) 2014 Opera Software ASA. All rights reserved.
5 * 5 *
6 * Redistribution and use in source and binary forms, with or without 6 * Redistribution and use in source and binary forms, with or without
7 * modification, are permitted provided that the following conditions are 7 * modification, are permitted provided that the following conditions are
8 * met: 8 * met:
9 * 9 *
10 * * Redistributions of source code must retain the above copyright 10 * * Redistributions of source code must retain the above copyright
(...skipping 124 matching lines...) Expand 10 before | Expand all | Expand 10 after
135 } 135 }
136 136
137 void ScriptController::updateSecurityOrigin(SecurityOrigin* origin) 137 void ScriptController::updateSecurityOrigin(SecurityOrigin* origin)
138 { 138 {
139 m_windowProxy->updateSecurityOrigin(origin); 139 m_windowProxy->updateSecurityOrigin(origin);
140 } 140 }
141 141
142 v8::Local<v8::Value> ScriptController::callFunction(v8::Handle<v8::Function> fun ction, v8::Handle<v8::Value> receiver, int argc, v8::Handle<v8::Value> info[]) 142 v8::Local<v8::Value> ScriptController::callFunction(v8::Handle<v8::Function> fun ction, v8::Handle<v8::Value> receiver, int argc, v8::Handle<v8::Value> info[])
143 { 143 {
144 // Keep LocalFrame (and therefore ScriptController) alive. 144 // Keep LocalFrame (and therefore ScriptController) alive.
145 RefPtr<LocalFrame> protect(m_frame); 145 RefPtrWillBeRawPtr<LocalFrame> protect(m_frame);
146 return ScriptController::callFunction(m_frame->document(), function, receive r, argc, info, m_isolate); 146 return ScriptController::callFunction(m_frame->document(), function, receive r, argc, info, m_isolate);
147 } 147 }
148 148
149 v8::Local<v8::Value> ScriptController::callFunction(ExecutionContext* context, v 8::Handle<v8::Function> function, v8::Handle<v8::Value> receiver, int argc, v8:: Handle<v8::Value> info[], v8::Isolate* isolate) 149 v8::Local<v8::Value> ScriptController::callFunction(ExecutionContext* context, v 8::Handle<v8::Function> function, v8::Handle<v8::Value> receiver, int argc, v8:: Handle<v8::Value> info[], v8::Isolate* isolate)
150 { 150 {
151 TRACE_EVENT1(TRACE_DISABLED_BY_DEFAULT("devtools.timeline"), "FunctionCall", "data", devToolsTraceEventData(context, function, isolate)); 151 TRACE_EVENT1(TRACE_DISABLED_BY_DEFAULT("devtools.timeline"), "FunctionCall", "data", devToolsTraceEventData(context, function, isolate));
152 TRACE_EVENT_INSTANT1(TRACE_DISABLED_BY_DEFAULT("devtools.timeline.stack"), " CallStack", "stack", InspectorCallStackEvent::currentCallStack()); 152 TRACE_EVENT_INSTANT1(TRACE_DISABLED_BY_DEFAULT("devtools.timeline.stack"), " CallStack", "stack", InspectorCallStackEvent::currentCallStack());
153 // FIXME(361045): remove InspectorInstrumentation calls once DevTools Timeli ne migrates to tracing. 153 // FIXME(361045): remove InspectorInstrumentation calls once DevTools Timeli ne migrates to tracing.
154 InspectorInstrumentationCookie cookie; 154 InspectorInstrumentationCookie cookie;
155 if (InspectorInstrumentation::timelineAgentEnabled(context)) { 155 if (InspectorInstrumentation::timelineAgentEnabled(context)) {
(...skipping 29 matching lines...) Expand all
185 // from here. 185 // from here.
186 v8::TryCatch tryCatch; 186 v8::TryCatch tryCatch;
187 tryCatch.SetVerbose(true); 187 tryCatch.SetVerbose(true);
188 188
189 v8::Handle<v8::Script> script = V8ScriptRunner::compileScript(source, m_ isolate, corsStatus, v8CacheOptions); 189 v8::Handle<v8::Script> script = V8ScriptRunner::compileScript(source, m_ isolate, corsStatus, v8CacheOptions);
190 190
191 if (compilationFinishTime) { 191 if (compilationFinishTime) {
192 *compilationFinishTime = WTF::monotonicallyIncreasingTime(); 192 *compilationFinishTime = WTF::monotonicallyIncreasingTime();
193 } 193 }
194 // Keep LocalFrame (and therefore ScriptController) alive. 194 // Keep LocalFrame (and therefore ScriptController) alive.
195 RefPtr<LocalFrame> protect(m_frame); 195 RefPtrWillBeRawPtr<LocalFrame> protect(m_frame);
196 result = V8ScriptRunner::runCompiledScript(script, m_frame->document(), m_isolate); 196 result = V8ScriptRunner::runCompiledScript(script, m_frame->document(), m_isolate);
197 ASSERT(!tryCatch.HasCaught() || result.IsEmpty()); 197 ASSERT(!tryCatch.HasCaught() || result.IsEmpty());
198 } 198 }
199 199
200 InspectorInstrumentation::didEvaluateScript(cookie); 200 InspectorInstrumentation::didEvaluateScript(cookie);
201 TRACE_EVENT_INSTANT1(TRACE_DISABLED_BY_DEFAULT("devtools.timeline"), "Update Counters", "data", InspectorUpdateCountersEvent::data()); 201 TRACE_EVENT_INSTANT1(TRACE_DISABLED_BY_DEFAULT("devtools.timeline"), "Update Counters", "data", InspectorUpdateCountersEvent::data());
202 202
203 return result; 203 return result;
204 } 204 }
205 205
(...skipping 324 matching lines...) Expand 10 before | Expand all | Expand 10 after
530 { 530 {
531 if (!protocolIsJavaScript(url)) 531 if (!protocolIsJavaScript(url))
532 return false; 532 return false;
533 533
534 if (!m_frame->page() 534 if (!m_frame->page()
535 || !m_frame->document()->contentSecurityPolicy()->allowJavaScriptURLs(m_ frame->document()->url(), eventHandlerPosition().m_line)) 535 || !m_frame->document()->contentSecurityPolicy()->allowJavaScriptURLs(m_ frame->document()->url(), eventHandlerPosition().m_line))
536 return true; 536 return true;
537 537
538 // We need to hold onto the LocalFrame here because executing script can 538 // We need to hold onto the LocalFrame here because executing script can
539 // destroy the frame. 539 // destroy the frame.
540 RefPtr<LocalFrame> protector(m_frame); 540 RefPtrWillBeRawPtr<LocalFrame> protect(m_frame);
541 RefPtrWillBeRawPtr<Document> ownerDocument(m_frame->document()); 541 RefPtrWillBeRawPtr<Document> ownerDocument(m_frame->document());
542 542
543 const int javascriptSchemeLength = sizeof("javascript:") - 1; 543 const int javascriptSchemeLength = sizeof("javascript:") - 1;
544 544
545 bool locationChangeBefore = m_frame->navigationScheduler().locationChangePen ding(); 545 bool locationChangeBefore = m_frame->navigationScheduler().locationChangePen ding();
546 546
547 String decodedURL = decodeURLEscapeSequences(url.string()); 547 String decodedURL = decodeURLEscapeSequences(url.string());
548 v8::HandleScope handleScope(m_isolate); 548 v8::HandleScope handleScope(m_isolate);
549 v8::Local<v8::Value> result = evaluateScriptInMainWorld(ScriptSourceCode(dec odedURL.substring(javascriptSchemeLength)), NotSharableCrossOrigin, DoNotExecute ScriptWhenScriptsDisabled); 549 v8::Local<v8::Value> result = evaluateScriptInMainWorld(ScriptSourceCode(dec odedURL.substring(javascriptSchemeLength)), NotSharableCrossOrigin, DoNotExecute ScriptWhenScriptsDisabled);
550 550
(...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after
593 m_sourceURL = &sourceURL; 593 m_sourceURL = &sourceURL;
594 594
595 v8::EscapableHandleScope handleScope(m_isolate); 595 v8::EscapableHandleScope handleScope(m_isolate);
596 v8::Handle<v8::Context> context = toV8Context(m_frame, DOMWrapperWorld::main World()); 596 v8::Handle<v8::Context> context = toV8Context(m_frame, DOMWrapperWorld::main World());
597 if (context.IsEmpty()) 597 if (context.IsEmpty())
598 return v8::Local<v8::Value>(); 598 return v8::Local<v8::Value>();
599 599
600 ScriptState* scriptState = ScriptState::from(context); 600 ScriptState* scriptState = ScriptState::from(context);
601 ScriptState::Scope scope(scriptState); 601 ScriptState::Scope scope(scriptState);
602 602
603 RefPtr<LocalFrame> protect(m_frame); 603 RefPtrWillBeRawPtr<LocalFrame> protect(m_frame);
604 if (m_frame->loader().stateMachine()->isDisplayingInitialEmptyDocument()) 604 if (m_frame->loader().stateMachine()->isDisplayingInitialEmptyDocument())
605 m_frame->loader().didAccessInitialDocument(); 605 m_frame->loader().didAccessInitialDocument();
606 606
607 OwnPtr<ScriptSourceCode> maybeProcessedSourceCode = InspectorInstrumentatio n::preprocess(m_frame, sourceCode); 607 OwnPtr<ScriptSourceCode> maybeProcessedSourceCode = InspectorInstrumentatio n::preprocess(m_frame, sourceCode);
608 const ScriptSourceCode& sourceCodeToCompile = maybeProcessedSourceCode ? *ma ybeProcessedSourceCode : sourceCode; 608 const ScriptSourceCode& sourceCodeToCompile = maybeProcessedSourceCode ? *ma ybeProcessedSourceCode : sourceCode;
609 609
610 v8::Local<v8::Value> object = executeScriptAndReturnValue(scriptState->conte xt(), sourceCodeToCompile, corsStatus, compilationFinishTime); 610 v8::Local<v8::Value> object = executeScriptAndReturnValue(scriptState->conte xt(), sourceCodeToCompile, corsStatus, compilationFinishTime);
611 m_sourceURL = savedSourceURL; 611 m_sourceURL = savedSourceURL;
612 612
613 if (object.IsEmpty()) 613 if (object.IsEmpty())
(...skipping 23 matching lines...) Expand all
637 resultArray->Set(i, evaluationResult); 637 resultArray->Set(i, evaluationResult);
638 } 638 }
639 639
640 if (results) { 640 if (results) {
641 for (size_t i = 0; i < resultArray->Length(); ++i) 641 for (size_t i = 0; i < resultArray->Length(); ++i)
642 results->append(handleScope.Escape(resultArray->Get(i))); 642 results->append(handleScope.Escape(resultArray->Get(i)));
643 } 643 }
644 } 644 }
645 645
646 } // namespace blink 646 } // namespace blink
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698