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

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

Issue 738853002: [turbofan]: delay ssa deconstruction in register allocator (Closed) Base URL: https://chromium.googlesource.com/v8/v8.git@master
Patch Set: rebase Created 6 years, 1 month 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/instruction-selector.cc ('k') | src/compiler/register-allocator.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 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 488 matching lines...) Expand 10 before | Expand all | Expand 10 after
499 499
500 struct MeetRegisterConstraintsPhase { 500 struct MeetRegisterConstraintsPhase {
501 static const char* phase_name() { return "meet register constraints"; } 501 static const char* phase_name() { return "meet register constraints"; }
502 502
503 void Run(PipelineData* data, Zone* temp_zone) { 503 void Run(PipelineData* data, Zone* temp_zone) {
504 data->register_allocator()->MeetRegisterConstraints(); 504 data->register_allocator()->MeetRegisterConstraints();
505 } 505 }
506 }; 506 };
507 507
508 508
509 struct ResolvePhisPhase {
510 static const char* phase_name() { return "resolve phis"; }
511
512 void Run(PipelineData* data, Zone* temp_zone) {
513 data->register_allocator()->ResolvePhis();
514 }
515 };
516
517
518 struct BuildLiveRangesPhase { 509 struct BuildLiveRangesPhase {
519 static const char* phase_name() { return "build live ranges"; } 510 static const char* phase_name() { return "build live ranges"; }
520 511
521 void Run(PipelineData* data, Zone* temp_zone) { 512 void Run(PipelineData* data, Zone* temp_zone) {
522 data->register_allocator()->BuildLiveRanges(); 513 data->register_allocator()->BuildLiveRanges();
523 } 514 }
524 }; 515 };
525 516
526 517
527 struct AllocateGeneralRegistersPhase { 518 struct AllocateGeneralRegistersPhase {
(...skipping 391 matching lines...) Expand 10 before | Expand all | Expand 10 after
919 SmartArrayPointer<char> debug_name; 910 SmartArrayPointer<char> debug_name;
920 #ifdef DEBUG 911 #ifdef DEBUG
921 debug_name = GetDebugName(data->info()); 912 debug_name = GetDebugName(data->info());
922 #endif 913 #endif
923 914
924 ZonePool::Scope zone_scope(data->zone_pool()); 915 ZonePool::Scope zone_scope(data->zone_pool());
925 data->InitializeRegisterAllocator(zone_scope.zone(), config, 916 data->InitializeRegisterAllocator(zone_scope.zone(), config,
926 debug_name.get()); 917 debug_name.get());
927 918
928 Run<MeetRegisterConstraintsPhase>(); 919 Run<MeetRegisterConstraintsPhase>();
929 Run<ResolvePhisPhase>();
930 Run<BuildLiveRangesPhase>(); 920 Run<BuildLiveRangesPhase>();
931 if (FLAG_trace_turbo) { 921 if (FLAG_trace_turbo) {
932 OFStream os(stdout); 922 OFStream os(stdout);
933 PrintableInstructionSequence printable = {config, data->sequence()}; 923 PrintableInstructionSequence printable = {config, data->sequence()};
934 os << "----- Instruction sequence before register allocation -----\n" 924 os << "----- Instruction sequence before register allocation -----\n"
935 << printable; 925 << printable;
936 } 926 }
937 DCHECK(!data->register_allocator()->ExistsUseWithoutDefinition()); 927 DCHECK(!data->register_allocator()->ExistsUseWithoutDefinition());
938 Run<AllocateGeneralRegistersPhase>(); 928 Run<AllocateGeneralRegistersPhase>();
939 if (!data->register_allocator()->AllocationOk()) { 929 if (!data->register_allocator()->AllocationOk()) {
(...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after
973 } 963 }
974 964
975 965
976 void Pipeline::TearDown() { 966 void Pipeline::TearDown() {
977 InstructionOperand::TearDownCaches(); 967 InstructionOperand::TearDownCaches();
978 } 968 }
979 969
980 } // namespace compiler 970 } // namespace compiler
981 } // namespace internal 971 } // namespace internal
982 } // namespace v8 972 } // namespace v8
OLDNEW
« no previous file with comments | « src/compiler/instruction-selector.cc ('k') | src/compiler/register-allocator.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698