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

Side by Side Diff: src/compiler.cc

Issue 1895763002: [compiler] Remove obsolete CompileUnoptimizedCode helper. (Closed) Base URL: https://chromium.googlesource.com/v8/v8.git@local_cleanup-compiler-simplify-16
Patch Set: Created 4 years, 8 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 | no next file » | 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 8
9 #include "src/ast/ast-numbering.h" 9 #include "src/ast/ast-numbering.h"
10 #include "src/ast/prettyprinter.h" 10 #include "src/ast/prettyprinter.h"
(...skipping 480 matching lines...) Expand 10 before | Expand all | Expand 10 after
491 TypeFeedbackVector::New(info->isolate(), feedback_metadata); 491 TypeFeedbackVector::New(info->isolate(), feedback_metadata);
492 info->shared_info()->set_feedback_vector(*feedback_vector); 492 info->shared_info()->set_feedback_vector(*feedback_vector);
493 } 493 }
494 494
495 // It's very important that recompiles do not alter the structure of the type 495 // It's very important that recompiles do not alter the structure of the type
496 // feedback vector. Verify that the structure fits the function literal. 496 // feedback vector. Verify that the structure fits the function literal.
497 CHECK(!info->shared_info()->feedback_vector()->metadata()->SpecDiffersFrom( 497 CHECK(!info->shared_info()->feedback_vector()->metadata()->SpecDiffersFrom(
498 info->literal()->feedback_vector_spec())); 498 info->literal()->feedback_vector_spec()));
499 } 499 }
500 500
501 bool CompileUnoptimizedCode(CompilationInfo* info) { 501 bool UseIgnition(CompilationInfo* info) {
502 DCHECK(AllowCompilation::IsAllowed(info->isolate())); 502 // We only get here without a shared function info is when compiling a script
503 if (!Compiler::Analyze(info->parse_info()) || 503 // for live edit. We cannot (yet) use Ignition to compile for live edit.
504 !(EnsureFeedbackVector(info), FullCodeGenerator::MakeCode(info))) { 504 if (!info->has_shared_info()) {
505 Isolate* isolate = info->isolate(); 505 DCHECK(info->isolate()->debug()->live_edit_enabled());
506 if (!isolate->has_pending_exception()) isolate->StackOverflow();
507 return false; 506 return false;
508 } 507 }
509 return true;
510 }
511 508
512 bool UseIgnition(CompilationInfo* info) {
513 // TODO(4681): Generator functions are not yet supported. 509 // TODO(4681): Generator functions are not yet supported.
514 if (info->shared_info()->is_generator()) { 510 if (info->shared_info()->is_generator()) {
515 return false; 511 return false;
516 } 512 }
517 513
518 // Checks whether top level functions should be passed by the filter. 514 // Checks whether top level functions should be passed by the filter.
519 if (info->shared_info()->is_toplevel()) { 515 if (info->shared_info()->is_toplevel()) {
520 Vector<const char> filter = CStrVector(FLAG_ignition_filter); 516 Vector<const char> filter = CStrVector(FLAG_ignition_filter);
521 return (filter.length() == 0) || (filter.length() == 1 && filter[0] == '*'); 517 return (filter.length() == 0) || (filter.length() == 1 && filter[0] == '*');
522 } 518 }
(...skipping 543 matching lines...) Expand 10 before | Expand all | Expand 10 after
1066 DCHECK_NOT_NULL(info->literal()); 1062 DCHECK_NOT_NULL(info->literal());
1067 if (!Rewriter::Rewrite(info)) return false; 1063 if (!Rewriter::Rewrite(info)) return false;
1068 if (!Scope::Analyze(info)) return false; 1064 if (!Scope::Analyze(info)) return false;
1069 if (!Renumber(info)) return false; 1065 if (!Renumber(info)) return false;
1070 DCHECK_NOT_NULL(info->scope()); 1066 DCHECK_NOT_NULL(info->scope());
1071 return true; 1067 return true;
1072 } 1068 }
1073 1069
1074 bool Compiler::ParseAndAnalyze(ParseInfo* info) { 1070 bool Compiler::ParseAndAnalyze(ParseInfo* info) {
1075 if (!Parser::ParseStatic(info)) return false; 1071 if (!Parser::ParseStatic(info)) return false;
1076 return Compiler::Analyze(info); 1072 if (!Compiler::Analyze(info)) return false;
1073 DCHECK_NOT_NULL(info->literal());
1074 DCHECK_NOT_NULL(info->scope());
1075 return true;
1077 } 1076 }
1078 1077
1079 bool Compiler::Compile(Handle<JSFunction> function, ClearExceptionFlag flag) { 1078 bool Compiler::Compile(Handle<JSFunction> function, ClearExceptionFlag flag) {
1080 if (function->is_compiled()) return true; 1079 if (function->is_compiled()) return true;
1081 1080
1082 MaybeHandle<Code> maybe_code = GetLazyCode(function); 1081 MaybeHandle<Code> maybe_code = GetLazyCode(function);
1083 Handle<Code> code; 1082 Handle<Code> code;
1084 if (!maybe_code.ToHandle(&code)) { 1083 if (!maybe_code.ToHandle(&code)) {
1085 if (flag == CLEAR_EXCEPTION) { 1084 if (flag == CLEAR_EXCEPTION) {
1086 function->GetIsolate()->clear_pending_exception(); 1085 function->GetIsolate()->clear_pending_exception();
(...skipping 112 matching lines...) Expand 10 before | Expand all | Expand 10 after
1199 ParseInfo parse_info(&zone, script); 1198 ParseInfo parse_info(&zone, script);
1200 CompilationInfo info(&parse_info, Handle<JSFunction>::null()); 1199 CompilationInfo info(&parse_info, Handle<JSFunction>::null());
1201 PostponeInterruptsScope postpone(info.isolate()); 1200 PostponeInterruptsScope postpone(info.isolate());
1202 VMState<COMPILER> state(info.isolate()); 1201 VMState<COMPILER> state(info.isolate());
1203 1202
1204 info.MarkAsDebug(); 1203 info.MarkAsDebug();
1205 info.parse_info()->set_global(); 1204 info.parse_info()->set_global();
1206 if (!Parser::ParseStatic(info.parse_info())) return; 1205 if (!Parser::ParseStatic(info.parse_info())) return;
1207 1206
1208 LiveEditFunctionTracker tracker(info.isolate(), parse_info.literal()); 1207 LiveEditFunctionTracker tracker(info.isolate(), parse_info.literal());
1209 if (!CompileUnoptimizedCode(&info)) return; 1208 if (!CompileBaselineCode(&info)) return;
1210 tracker.RecordRootFunctionInfo(info.code()); 1209 tracker.RecordRootFunctionInfo(info.code());
1211 } 1210 }
1212 1211
1213 MaybeHandle<JSFunction> Compiler::GetFunctionFromEval( 1212 MaybeHandle<JSFunction> Compiler::GetFunctionFromEval(
1214 Handle<String> source, Handle<SharedFunctionInfo> outer_info, 1213 Handle<String> source, Handle<SharedFunctionInfo> outer_info,
1215 Handle<Context> context, LanguageMode language_mode, 1214 Handle<Context> context, LanguageMode language_mode,
1216 ParseRestriction restriction, int line_offset, int column_offset, 1215 ParseRestriction restriction, int line_offset, int column_offset,
1217 Handle<Object> script_name, ScriptOriginOptions options) { 1216 Handle<Object> script_name, ScriptOriginOptions options) {
1218 Isolate* isolate = source->GetIsolate(); 1217 Isolate* isolate = source->GetIsolate();
1219 int source_length = source->length(); 1218 int source_length = source->length();
(...skipping 450 matching lines...) Expand 10 before | Expand all | Expand 10 after
1670 MaybeHandle<Code> code; 1669 MaybeHandle<Code> code;
1671 if (cached.code != nullptr) code = handle(cached.code); 1670 if (cached.code != nullptr) code = handle(cached.code);
1672 Handle<Context> native_context(function->context()->native_context()); 1671 Handle<Context> native_context(function->context()->native_context());
1673 SharedFunctionInfo::AddToOptimizedCodeMap(shared, native_context, code, 1672 SharedFunctionInfo::AddToOptimizedCodeMap(shared, native_context, code,
1674 literals, BailoutId::None()); 1673 literals, BailoutId::None());
1675 } 1674 }
1676 } 1675 }
1677 1676
1678 } // namespace internal 1677 } // namespace internal
1679 } // namespace v8 1678 } // namespace v8
OLDNEW
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698