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

Side by Side Diff: src/compiler.cc

Issue 2406623002: Revert of [parser] Deprecate ParseInfo constructor taking closure. (Closed)
Patch Set: Created 4 years, 2 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 | « no previous file | src/compiler/js-inlining.cc » ('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 874 matching lines...) Expand 10 before | Expand all | Expand 10 after
885 Deoptimizer::VisitAllOptimizedFunctions(isolate, activations_finder); 885 Deoptimizer::VisitAllOptimizedFunctions(isolate, activations_finder);
886 } 886 }
887 return activations_finder->has_activations(); 887 return activations_finder->has_activations();
888 } 888 }
889 889
890 MaybeHandle<Code> GetBaselineCode(Handle<JSFunction> function) { 890 MaybeHandle<Code> GetBaselineCode(Handle<JSFunction> function) {
891 Isolate* isolate = function->GetIsolate(); 891 Isolate* isolate = function->GetIsolate();
892 VMState<COMPILER> state(isolate); 892 VMState<COMPILER> state(isolate);
893 PostponeInterruptsScope postpone(isolate); 893 PostponeInterruptsScope postpone(isolate);
894 Zone zone(isolate->allocator()); 894 Zone zone(isolate->allocator());
895 ParseInfo parse_info(&zone, handle(function->shared())); 895 ParseInfo parse_info(&zone, function);
896 CompilationInfo info(&parse_info, function); 896 CompilationInfo info(&parse_info, function);
897 897
898 // Reset profiler ticks, function is no longer considered hot. 898 // Reset profiler ticks, function is no longer considered hot.
899 if (function->shared()->HasBytecodeArray()) { 899 if (function->shared()->HasBytecodeArray()) {
900 function->shared()->set_profiler_ticks(0); 900 function->shared()->set_profiler_ticks(0);
901 } 901 }
902 902
903 // Nothing left to do if the function already has baseline code. 903 // Nothing left to do if the function already has baseline code.
904 if (function->shared()->code()->kind() == Code::FUNCTION) { 904 if (function->shared()->code()->kind() == Code::FUNCTION) {
905 return Handle<Code>(function->shared()->code()); 905 return Handle<Code>(function->shared()->code());
(...skipping 100 matching lines...) Expand 10 before | Expand all | Expand 10 after
1006 return Handle<Code>(function->shared()->code()); 1006 return Handle<Code>(function->shared()->code());
1007 } 1007 }
1008 1008
1009 if (function->shared()->HasBytecodeArray()) { 1009 if (function->shared()->HasBytecodeArray()) {
1010 Handle<Code> entry = isolate->builtins()->InterpreterEntryTrampoline(); 1010 Handle<Code> entry = isolate->builtins()->InterpreterEntryTrampoline();
1011 function->shared()->ReplaceCode(*entry); 1011 function->shared()->ReplaceCode(*entry);
1012 return entry; 1012 return entry;
1013 } 1013 }
1014 1014
1015 Zone zone(isolate->allocator()); 1015 Zone zone(isolate->allocator());
1016 ParseInfo parse_info(&zone, handle(function->shared())); 1016 ParseInfo parse_info(&zone, function);
1017 CompilationInfo info(&parse_info, function); 1017 CompilationInfo info(&parse_info, function);
1018 Handle<Code> result; 1018 Handle<Code> result;
1019 ASSIGN_RETURN_ON_EXCEPTION(isolate, result, GetUnoptimizedCode(&info), Code); 1019 ASSIGN_RETURN_ON_EXCEPTION(isolate, result, GetUnoptimizedCode(&info), Code);
1020 1020
1021 if (FLAG_always_opt) { 1021 if (FLAG_always_opt) {
1022 Handle<Code> opt_code; 1022 Handle<Code> opt_code;
1023 if (GetOptimizedCode(function, Compiler::NOT_CONCURRENT) 1023 if (GetOptimizedCode(function, Compiler::NOT_CONCURRENT)
1024 .ToHandle(&opt_code)) { 1024 .ToHandle(&opt_code)) {
1025 result = opt_code; 1025 result = opt_code;
1026 } 1026 }
(...skipping 209 matching lines...) Expand 10 before | Expand all | Expand 10 after
1236 if (!GetOptimizedCode(function, mode).ToHandle(&code)) { 1236 if (!GetOptimizedCode(function, mode).ToHandle(&code)) {
1237 // Optimization failed, get unoptimized code. 1237 // Optimization failed, get unoptimized code.
1238 DCHECK(!isolate->has_pending_exception()); 1238 DCHECK(!isolate->has_pending_exception());
1239 if (function->shared()->is_compiled()) { 1239 if (function->shared()->is_compiled()) {
1240 code = handle(function->shared()->code(), isolate); 1240 code = handle(function->shared()->code(), isolate);
1241 } else if (function->shared()->HasBytecodeArray()) { 1241 } else if (function->shared()->HasBytecodeArray()) {
1242 code = isolate->builtins()->InterpreterEntryTrampoline(); 1242 code = isolate->builtins()->InterpreterEntryTrampoline();
1243 function->shared()->ReplaceCode(*code); 1243 function->shared()->ReplaceCode(*code);
1244 } else { 1244 } else {
1245 Zone zone(isolate->allocator()); 1245 Zone zone(isolate->allocator());
1246 ParseInfo parse_info(&zone, handle(function->shared())); 1246 ParseInfo parse_info(&zone, function);
1247 CompilationInfo info(&parse_info, function); 1247 CompilationInfo info(&parse_info, function);
1248 if (!GetUnoptimizedCode(&info).ToHandle(&code)) { 1248 if (!GetUnoptimizedCode(&info).ToHandle(&code)) {
1249 return false; 1249 return false;
1250 } 1250 }
1251 } 1251 }
1252 } 1252 }
1253 1253
1254 // Install code on closure. 1254 // Install code on closure.
1255 function->ReplaceCode(*code); 1255 function->ReplaceCode(*code);
1256 JSFunction::EnsureLiterals(function); 1256 JSFunction::EnsureLiterals(function);
1257 1257
1258 // Check postconditions on success. 1258 // Check postconditions on success.
1259 DCHECK(!isolate->has_pending_exception()); 1259 DCHECK(!isolate->has_pending_exception());
1260 DCHECK(function->shared()->is_compiled()); 1260 DCHECK(function->shared()->is_compiled());
1261 DCHECK(function->is_compiled()); 1261 DCHECK(function->is_compiled());
1262 return true; 1262 return true;
1263 } 1263 }
1264 1264
1265 bool Compiler::CompileDebugCode(Handle<JSFunction> function) { 1265 bool Compiler::CompileDebugCode(Handle<JSFunction> function) {
1266 Isolate* isolate = function->GetIsolate(); 1266 Isolate* isolate = function->GetIsolate();
1267 DCHECK(AllowCompilation::IsAllowed(isolate)); 1267 DCHECK(AllowCompilation::IsAllowed(isolate));
1268 1268
1269 // Start a compilation. 1269 // Start a compilation.
1270 Zone zone(isolate->allocator()); 1270 Zone zone(isolate->allocator());
1271 ParseInfo parse_info(&zone, handle(function->shared())); 1271 ParseInfo parse_info(&zone, function);
1272 CompilationInfo info(&parse_info, Handle<JSFunction>::null()); 1272 CompilationInfo info(&parse_info, Handle<JSFunction>::null());
1273 if (IsEvalToplevel(handle(function->shared()))) { 1273 if (IsEvalToplevel(handle(function->shared()))) {
1274 parse_info.set_eval(); 1274 parse_info.set_eval();
1275 parse_info.set_toplevel(); 1275 parse_info.set_toplevel();
1276 parse_info.set_allow_lazy_parsing(false); 1276 parse_info.set_allow_lazy_parsing(false);
1277 parse_info.set_lazy(false); 1277 parse_info.set_lazy(false);
1278 } 1278 }
1279 info.MarkAsDebug(); 1279 info.MarkAsDebug();
1280 if (GetUnoptimizedCode(&info).is_null()) { 1280 if (GetUnoptimizedCode(&info).is_null()) {
1281 isolate->clear_pending_exception(); 1281 isolate->clear_pending_exception();
(...skipping 606 matching lines...) Expand 10 before | Expand all | Expand 10 after
1888 DCHECK(shared->is_compiled()); 1888 DCHECK(shared->is_compiled());
1889 function->set_literals(cached.literals); 1889 function->set_literals(cached.literals);
1890 } else if (shared->is_compiled()) { 1890 } else if (shared->is_compiled()) {
1891 // TODO(mvstanton): pass pretenure flag to EnsureLiterals. 1891 // TODO(mvstanton): pass pretenure flag to EnsureLiterals.
1892 JSFunction::EnsureLiterals(function); 1892 JSFunction::EnsureLiterals(function);
1893 } 1893 }
1894 } 1894 }
1895 1895
1896 } // namespace internal 1896 } // namespace internal
1897 } // namespace v8 1897 } // namespace v8
OLDNEW
« no previous file with comments | « no previous file | src/compiler/js-inlining.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698