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

Side by Side Diff: src/compiler/pipeline.cc

Issue 1105133002: Remove kOsrCompileFailed bailout. (Closed) Base URL: https://chromium.googlesource.com/v8/v8.git@master
Patch Set: Created 5 years, 7 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/compiler/osr.cc ('k') | 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 2014 the V8 project authors. All rights reserved. 1 // Copyright 2014 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/pipeline.h" 5 #include "src/compiler/pipeline.h"
6 6
7 #include <fstream> // NOLINT(readability/streams) 7 #include <fstream> // NOLINT(readability/streams)
8 #include <sstream> 8 #include <sstream>
9 9
10 #include "src/base/platform/elapsed-timer.h" 10 #include "src/base/platform/elapsed-timer.h"
(...skipping 506 matching lines...) Expand 10 before | Expand all | Expand 10 after
517 }; 517 };
518 518
519 519
520 struct OsrDeconstructionPhase { 520 struct OsrDeconstructionPhase {
521 static const char* phase_name() { return "OSR deconstruction"; } 521 static const char* phase_name() { return "OSR deconstruction"; }
522 522
523 void Run(PipelineData* data, Zone* temp_zone) { 523 void Run(PipelineData* data, Zone* temp_zone) {
524 SourcePositionTable::Scope pos(data->source_positions(), 524 SourcePositionTable::Scope pos(data->source_positions(),
525 SourcePosition::Unknown()); 525 SourcePosition::Unknown());
526 OsrHelper osr_helper(data->info()); 526 OsrHelper osr_helper(data->info());
527 bool success = 527 osr_helper.Deconstruct(data->jsgraph(), data->common(), temp_zone);
528 osr_helper.Deconstruct(data->jsgraph(), data->common(), temp_zone);
529 if (!success) data->info()->RetryOptimization(kOsrCompileFailed);
530 } 528 }
531 }; 529 };
532 530
533 531
534 struct JSTypeFeedbackPhase { 532 struct JSTypeFeedbackPhase {
535 static const char* phase_name() { return "type feedback specializing"; } 533 static const char* phase_name() { return "type feedback specializing"; }
536 534
537 void Run(PipelineData* data, Zone* temp_zone) { 535 void Run(PipelineData* data, Zone* temp_zone) {
538 SourcePositionTable::Scope pos(data->source_positions(), 536 SourcePositionTable::Scope pos(data->source_positions(),
539 SourcePosition::Unknown()); 537 SourcePosition::Unknown());
(...skipping 372 matching lines...) Expand 10 before | Expand all | Expand 10 after
912 if (FLAG_trace_turbo) { 910 if (FLAG_trace_turbo) {
913 Run<PrintGraphPhase>(phase); 911 Run<PrintGraphPhase>(phase);
914 } 912 }
915 if (FLAG_turbo_verify) { 913 if (FLAG_turbo_verify) {
916 Run<VerifyGraphPhase>(untyped); 914 Run<VerifyGraphPhase>(untyped);
917 } 915 }
918 } 916 }
919 917
920 918
921 Handle<Code> Pipeline::GenerateCode() { 919 Handle<Code> Pipeline::GenerateCode() {
922 if (info()->is_osr() && !FLAG_turbo_osr) {
923 // TODO(turbofan): remove this flag and always handle OSR
924 info()->RetryOptimization(kOsrCompileFailed);
925 return Handle<Code>::null();
926 }
927
928 // TODO(mstarzinger): This is just a temporary hack to make TurboFan work, 920 // TODO(mstarzinger): This is just a temporary hack to make TurboFan work,
929 // the correct solution is to restore the context register after invoking 921 // the correct solution is to restore the context register after invoking
930 // builtins from full-codegen. 922 // builtins from full-codegen.
931 Handle<SharedFunctionInfo> shared = info()->shared_info(); 923 Handle<SharedFunctionInfo> shared = info()->shared_info();
932 for (int i = 0; i < Builtins::NumberOfJavaScriptBuiltins(); i++) { 924 for (int i = 0; i < Builtins::NumberOfJavaScriptBuiltins(); i++) {
933 Builtins::JavaScript id = static_cast<Builtins::JavaScript>(i); 925 Builtins::JavaScript id = static_cast<Builtins::JavaScript>(i);
934 Object* builtin = isolate()->js_builtins_object()->javascript_builtin(id); 926 Object* builtin = isolate()->js_builtins_object()->javascript_builtin(id);
935 if (*info()->closure() == builtin) return Handle<Code>::null(); 927 if (*info()->closure() == builtin) return Handle<Code>::null();
936 } 928 }
937 929
(...skipping 101 matching lines...) Expand 10 before | Expand all | Expand 10 after
1039 Run<TypedLoweringPhase>(); 1031 Run<TypedLoweringPhase>();
1040 RunPrintAndVerify("Lowered typed"); 1032 RunPrintAndVerify("Lowered typed");
1041 1033
1042 if (FLAG_turbo_stress_loop_peeling) { 1034 if (FLAG_turbo_stress_loop_peeling) {
1043 Run<StressLoopPeelingPhase>(); 1035 Run<StressLoopPeelingPhase>();
1044 RunPrintAndVerify("Loop peeled", true); 1036 RunPrintAndVerify("Loop peeled", true);
1045 } 1037 }
1046 1038
1047 if (info()->is_osr()) { 1039 if (info()->is_osr()) {
1048 Run<OsrDeconstructionPhase>(); 1040 Run<OsrDeconstructionPhase>();
1049 if (info()->bailout_reason() != kNoReason) return Handle<Code>::null();
1050 RunPrintAndVerify("OSR deconstruction"); 1041 RunPrintAndVerify("OSR deconstruction");
1051 } 1042 }
1052 1043
1053 // TODO(turbofan): Type feedback currently requires deoptimization. 1044 // TODO(turbofan): Type feedback currently requires deoptimization.
1054 if (info()->is_deoptimization_enabled() && 1045 if (info()->is_deoptimization_enabled() &&
1055 info()->is_type_feedback_enabled()) { 1046 info()->is_type_feedback_enabled()) {
1056 Run<JSTypeFeedbackPhase>(); 1047 Run<JSTypeFeedbackPhase>();
1057 RunPrintAndVerify("JSType feedback"); 1048 RunPrintAndVerify("JSType feedback");
1058 } 1049 }
1059 1050
(...skipping 255 matching lines...) Expand 10 before | Expand all | Expand 10 after
1315 tcf << AsC1VRegisterAllocationData("CodeGen", 1306 tcf << AsC1VRegisterAllocationData("CodeGen",
1316 data->register_allocation_data()); 1307 data->register_allocation_data());
1317 } 1308 }
1318 1309
1319 data->DeleteRegisterAllocationZone(); 1310 data->DeleteRegisterAllocationZone();
1320 } 1311 }
1321 1312
1322 } // namespace compiler 1313 } // namespace compiler
1323 } // namespace internal 1314 } // namespace internal
1324 } // namespace v8 1315 } // namespace v8
OLDNEW
« no previous file with comments | « src/compiler/osr.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698