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

Side by Side Diff: src/compiler.cc

Issue 2358503002: Change the CompilerDispatcherJob to take a SharedFunctionInfo (Closed)
Patch Set: updates Created 4 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
« no previous file with comments | « src/ast/scopes.cc ('k') | src/compiler-dispatcher/compiler-dispatcher-job.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2012 the V8 project authors. All rights reserved. 1 // Copyright 2012 the V8 project authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "src/compiler.h" 5 #include "src/compiler.h"
6 6
7 #include <algorithm> 7 #include <algorithm>
8 #include <memory> 8 #include <memory>
9 9
10 #include "src/asmjs/asm-js.h" 10 #include "src/asmjs/asm-js.h"
(...skipping 378 matching lines...) Expand 10 before | Expand all | Expand 10 after
389 if (!isolate->has_pending_exception()) isolate->StackOverflow(); 389 if (!isolate->has_pending_exception()) isolate->StackOverflow();
390 return false; 390 return false;
391 } 391 }
392 return true; 392 return true;
393 } 393 }
394 394
395 void InstallSharedScopeInfo(CompilationInfo* info, 395 void InstallSharedScopeInfo(CompilationInfo* info,
396 Handle<SharedFunctionInfo> shared) { 396 Handle<SharedFunctionInfo> shared) {
397 Handle<ScopeInfo> scope_info = info->scope()->scope_info(); 397 Handle<ScopeInfo> scope_info = info->scope()->scope_info();
398 shared->set_scope_info(*scope_info); 398 shared->set_scope_info(*scope_info);
399 Scope* outer_scope = info->scope()->GetOuterScopeWithContext();
400 if (outer_scope) {
401 shared->set_outer_scope_info(*outer_scope->scope_info());
402 }
399 } 403 }
400 404
401 void InstallSharedCompilationResult(CompilationInfo* info, 405 void InstallSharedCompilationResult(CompilationInfo* info,
402 Handle<SharedFunctionInfo> shared) { 406 Handle<SharedFunctionInfo> shared) {
403 // TODO(mstarzinger): Compiling for debug code might be used to reveal inner 407 // TODO(mstarzinger): Compiling for debug code might be used to reveal inner
404 // functions via {FindSharedFunctionInfoInScript}, in which case we end up 408 // functions via {FindSharedFunctionInfoInScript}, in which case we end up
405 // regenerating existing bytecode. Fix this! 409 // regenerating existing bytecode. Fix this!
406 if (info->is_debug() && info->has_bytecode_array()) { 410 if (info->is_debug() && info->has_bytecode_array()) {
407 shared->ClearBytecodeArray(); 411 shared->ClearBytecodeArray();
408 } 412 }
(...skipping 1383 matching lines...) Expand 10 before | Expand all | Expand 10 after
1792 lazy &= 1796 lazy &=
1793 !(FLAG_ignition && FLAG_ignition_eager && !isolate->serializer_enabled()); 1797 !(FLAG_ignition && FLAG_ignition_eager && !isolate->serializer_enabled());
1794 1798
1795 // Generate code 1799 // Generate code
1796 TimerEventScope<TimerEventCompileCode> timer(isolate); 1800 TimerEventScope<TimerEventCompileCode> timer(isolate);
1797 RuntimeCallTimerScope runtimeTimer(isolate, &RuntimeCallStats::CompileCode); 1801 RuntimeCallTimerScope runtimeTimer(isolate, &RuntimeCallStats::CompileCode);
1798 TRACE_EVENT0(TRACE_DISABLED_BY_DEFAULT("v8.compile"), "V8.CompileCode"); 1802 TRACE_EVENT0(TRACE_DISABLED_BY_DEFAULT("v8.compile"), "V8.CompileCode");
1799 1803
1800 if (lazy) { 1804 if (lazy) {
1801 info.SetCode(isolate->builtins()->CompileLazy()); 1805 info.SetCode(isolate->builtins()->CompileLazy());
1806 Scope* outer_scope = literal->scope()->GetOuterScopeWithContext();
1807 if (outer_scope) {
1808 result->set_outer_scope_info(*outer_scope->scope_info());
1809 }
1802 } else if (Renumber(info.parse_info()) && GenerateUnoptimizedCode(&info)) { 1810 } else if (Renumber(info.parse_info()) && GenerateUnoptimizedCode(&info)) {
1803 // Code generation will ensure that the feedback vector is present and 1811 // Code generation will ensure that the feedback vector is present and
1804 // appropriately sized. 1812 // appropriately sized.
1805 DCHECK(!info.code().is_null()); 1813 DCHECK(!info.code().is_null());
1806 if (literal->should_eager_compile() && 1814 if (literal->should_eager_compile() &&
1807 literal->should_be_used_once_hint()) { 1815 literal->should_be_used_once_hint()) {
1808 info.code()->MarkToBeExecutedOnce(isolate); 1816 info.code()->MarkToBeExecutedOnce(isolate);
1809 } 1817 }
1810 // Update the shared function info with the scope info. 1818 // Update the shared function info with the scope info.
1811 InstallSharedScopeInfo(&info, result); 1819 InstallSharedScopeInfo(&info, result);
(...skipping 23 matching lines...) Expand all
1835 1843
1836 // Instantiate the function and create a shared function info from it. 1844 // Instantiate the function and create a shared function info from it.
1837 Handle<JSFunction> fun = Handle<JSFunction>::cast(Utils::OpenHandle( 1845 Handle<JSFunction> fun = Handle<JSFunction>::cast(Utils::OpenHandle(
1838 *fun_template->GetFunction(v8_isolate->GetCurrentContext()) 1846 *fun_template->GetFunction(v8_isolate->GetCurrentContext())
1839 .ToLocalChecked())); 1847 .ToLocalChecked()));
1840 Handle<Code> code = Handle<Code>(fun->shared()->code()); 1848 Handle<Code> code = Handle<Code>(fun->shared()->code());
1841 Handle<Code> construct_stub = Handle<Code>(fun->shared()->construct_stub()); 1849 Handle<Code> construct_stub = Handle<Code>(fun->shared()->construct_stub());
1842 Handle<SharedFunctionInfo> shared = isolate->factory()->NewSharedFunctionInfo( 1850 Handle<SharedFunctionInfo> shared = isolate->factory()->NewSharedFunctionInfo(
1843 name, fun->shared()->num_literals(), FunctionKind::kNormalFunction, code, 1851 name, fun->shared()->num_literals(), FunctionKind::kNormalFunction, code,
1844 Handle<ScopeInfo>(fun->shared()->scope_info())); 1852 Handle<ScopeInfo>(fun->shared()->scope_info()));
1853 shared->set_outer_scope_info(fun->shared()->outer_scope_info());
1845 shared->SetConstructStub(*construct_stub); 1854 shared->SetConstructStub(*construct_stub);
1846 shared->set_feedback_metadata(fun->shared()->feedback_metadata()); 1855 shared->set_feedback_metadata(fun->shared()->feedback_metadata());
1847 1856
1848 // Copy the function data to the shared function info. 1857 // Copy the function data to the shared function info.
1849 shared->set_function_data(fun->shared()->function_data()); 1858 shared->set_function_data(fun->shared()->function_data());
1850 int parameters = fun->shared()->internal_formal_parameter_count(); 1859 int parameters = fun->shared()->internal_formal_parameter_count();
1851 shared->set_internal_formal_parameter_count(parameters); 1860 shared->set_internal_formal_parameter_count(parameters);
1852 1861
1853 return shared; 1862 return shared;
1854 } 1863 }
(...skipping 51 matching lines...) Expand 10 before | Expand all | Expand 10 after
1906 DCHECK(shared->is_compiled()); 1915 DCHECK(shared->is_compiled());
1907 function->set_literals(cached.literals); 1916 function->set_literals(cached.literals);
1908 } else if (shared->is_compiled()) { 1917 } else if (shared->is_compiled()) {
1909 // TODO(mvstanton): pass pretenure flag to EnsureLiterals. 1918 // TODO(mvstanton): pass pretenure flag to EnsureLiterals.
1910 JSFunction::EnsureLiterals(function); 1919 JSFunction::EnsureLiterals(function);
1911 } 1920 }
1912 } 1921 }
1913 1922
1914 } // namespace internal 1923 } // namespace internal
1915 } // namespace v8 1924 } // namespace v8
OLDNEW
« no previous file with comments | « src/ast/scopes.cc ('k') | src/compiler-dispatcher/compiler-dispatcher-job.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698