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

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

Issue 1409993002: [turbofan] Move SimplifiedOperatorBuilder into JSGraph. (Closed) Base URL: https://chromium.googlesource.com/v8/v8.git@master
Patch Set: Created 5 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 | « src/compiler/js-inlining.cc ('k') | src/compiler/simplified-operator.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/adapters.h" 10 #include "src/base/adapters.h"
(...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after
44 #include "src/compiler/machine-operator-reducer.h" 44 #include "src/compiler/machine-operator-reducer.h"
45 #include "src/compiler/move-optimizer.h" 45 #include "src/compiler/move-optimizer.h"
46 #include "src/compiler/osr.h" 46 #include "src/compiler/osr.h"
47 #include "src/compiler/pipeline-statistics.h" 47 #include "src/compiler/pipeline-statistics.h"
48 #include "src/compiler/register-allocator.h" 48 #include "src/compiler/register-allocator.h"
49 #include "src/compiler/register-allocator-verifier.h" 49 #include "src/compiler/register-allocator-verifier.h"
50 #include "src/compiler/schedule.h" 50 #include "src/compiler/schedule.h"
51 #include "src/compiler/scheduler.h" 51 #include "src/compiler/scheduler.h"
52 #include "src/compiler/select-lowering.h" 52 #include "src/compiler/select-lowering.h"
53 #include "src/compiler/simplified-lowering.h" 53 #include "src/compiler/simplified-lowering.h"
54 #include "src/compiler/simplified-operator.h"
54 #include "src/compiler/simplified-operator-reducer.h" 55 #include "src/compiler/simplified-operator-reducer.h"
55 #include "src/compiler/tail-call-optimization.h" 56 #include "src/compiler/tail-call-optimization.h"
56 #include "src/compiler/typer.h" 57 #include "src/compiler/typer.h"
57 #include "src/compiler/value-numbering-reducer.h" 58 #include "src/compiler/value-numbering-reducer.h"
58 #include "src/compiler/verifier.h" 59 #include "src/compiler/verifier.h"
59 #include "src/compiler/zone-pool.h" 60 #include "src/compiler/zone-pool.h"
60 #include "src/ostreams.h" 61 #include "src/ostreams.h"
61 #include "src/register-configuration.h" 62 #include "src/register-configuration.h"
62 #include "src/type-info.h" 63 #include "src/type-info.h"
63 #include "src/utils.h" 64 #include "src/utils.h"
(...skipping 11 matching lines...) Expand all
75 info_(info), 76 info_(info),
76 outer_zone_(info_->zone()), 77 outer_zone_(info_->zone()),
77 zone_pool_(zone_pool), 78 zone_pool_(zone_pool),
78 pipeline_statistics_(pipeline_statistics), 79 pipeline_statistics_(pipeline_statistics),
79 compilation_failed_(false), 80 compilation_failed_(false),
80 code_(Handle<Code>::null()), 81 code_(Handle<Code>::null()),
81 graph_zone_scope_(zone_pool_), 82 graph_zone_scope_(zone_pool_),
82 graph_zone_(graph_zone_scope_.zone()), 83 graph_zone_(graph_zone_scope_.zone()),
83 graph_(nullptr), 84 graph_(nullptr),
84 loop_assignment_(nullptr), 85 loop_assignment_(nullptr),
86 simplified_(nullptr),
85 machine_(nullptr), 87 machine_(nullptr),
86 common_(nullptr), 88 common_(nullptr),
87 javascript_(nullptr), 89 javascript_(nullptr),
88 jsgraph_(nullptr), 90 jsgraph_(nullptr),
89 js_type_feedback_(nullptr), 91 js_type_feedback_(nullptr),
90 schedule_(nullptr), 92 schedule_(nullptr),
91 instruction_zone_scope_(zone_pool_), 93 instruction_zone_scope_(zone_pool_),
92 instruction_zone_(instruction_zone_scope_.zone()), 94 instruction_zone_(instruction_zone_scope_.zone()),
93 sequence_(nullptr), 95 sequence_(nullptr),
94 frame_(nullptr), 96 frame_(nullptr),
95 register_allocation_zone_scope_(zone_pool_), 97 register_allocation_zone_scope_(zone_pool_),
96 register_allocation_zone_(register_allocation_zone_scope_.zone()), 98 register_allocation_zone_(register_allocation_zone_scope_.zone()),
97 register_allocation_data_(nullptr) { 99 register_allocation_data_(nullptr) {
98 PhaseScope scope(pipeline_statistics, "init pipeline data"); 100 PhaseScope scope(pipeline_statistics, "init pipeline data");
99 graph_ = new (graph_zone_) Graph(graph_zone_); 101 graph_ = new (graph_zone_) Graph(graph_zone_);
100 source_positions_.Reset(new SourcePositionTable(graph_)); 102 source_positions_.Reset(new SourcePositionTable(graph_));
103 simplified_ = new (graph_zone_) SimplifiedOperatorBuilder(graph_zone_);
101 machine_ = new (graph_zone_) MachineOperatorBuilder( 104 machine_ = new (graph_zone_) MachineOperatorBuilder(
102 graph_zone_, kMachPtr, 105 graph_zone_, kMachPtr,
103 InstructionSelector::SupportedMachineOperatorFlags()); 106 InstructionSelector::SupportedMachineOperatorFlags());
104 common_ = new (graph_zone_) CommonOperatorBuilder(graph_zone_); 107 common_ = new (graph_zone_) CommonOperatorBuilder(graph_zone_);
105 javascript_ = new (graph_zone_) JSOperatorBuilder(graph_zone_); 108 javascript_ = new (graph_zone_) JSOperatorBuilder(graph_zone_);
106 jsgraph_ = new (graph_zone_) 109 jsgraph_ = new (graph_zone_)
107 JSGraph(isolate_, graph_, common_, javascript_, machine_); 110 JSGraph(isolate_, graph_, common_, javascript_, simplified_, machine_);
108 } 111 }
109 112
110 // For machine graph testing entry point. 113 // For machine graph testing entry point.
111 PipelineData(ZonePool* zone_pool, CompilationInfo* info, Graph* graph, 114 PipelineData(ZonePool* zone_pool, CompilationInfo* info, Graph* graph,
112 Schedule* schedule) 115 Schedule* schedule)
113 : isolate_(info->isolate()), 116 : isolate_(info->isolate()),
114 info_(info), 117 info_(info),
115 outer_zone_(nullptr), 118 outer_zone_(nullptr),
116 zone_pool_(zone_pool), 119 zone_pool_(zone_pool),
117 pipeline_statistics_(nullptr), 120 pipeline_statistics_(nullptr),
118 compilation_failed_(false), 121 compilation_failed_(false),
119 code_(Handle<Code>::null()), 122 code_(Handle<Code>::null()),
120 graph_zone_scope_(zone_pool_), 123 graph_zone_scope_(zone_pool_),
121 graph_zone_(nullptr), 124 graph_zone_(nullptr),
122 graph_(graph), 125 graph_(graph),
123 source_positions_(new SourcePositionTable(graph_)), 126 source_positions_(new SourcePositionTable(graph_)),
124 loop_assignment_(nullptr), 127 loop_assignment_(nullptr),
128 simplified_(nullptr),
125 machine_(nullptr), 129 machine_(nullptr),
126 common_(nullptr), 130 common_(nullptr),
127 javascript_(nullptr), 131 javascript_(nullptr),
128 jsgraph_(nullptr), 132 jsgraph_(nullptr),
129 js_type_feedback_(nullptr), 133 js_type_feedback_(nullptr),
130 schedule_(schedule), 134 schedule_(schedule),
131 instruction_zone_scope_(zone_pool_), 135 instruction_zone_scope_(zone_pool_),
132 instruction_zone_(instruction_zone_scope_.zone()), 136 instruction_zone_(instruction_zone_scope_.zone()),
133 sequence_(nullptr), 137 sequence_(nullptr),
134 frame_(nullptr), 138 frame_(nullptr),
135 register_allocation_zone_scope_(zone_pool_), 139 register_allocation_zone_scope_(zone_pool_),
136 register_allocation_zone_(register_allocation_zone_scope_.zone()), 140 register_allocation_zone_(register_allocation_zone_scope_.zone()),
137 register_allocation_data_(nullptr) {} 141 register_allocation_data_(nullptr) {}
138 142
139 // For register allocation testing entry point. 143 // For register allocation testing entry point.
140 PipelineData(ZonePool* zone_pool, CompilationInfo* info, 144 PipelineData(ZonePool* zone_pool, CompilationInfo* info,
141 InstructionSequence* sequence) 145 InstructionSequence* sequence)
142 : isolate_(info->isolate()), 146 : isolate_(info->isolate()),
143 info_(info), 147 info_(info),
144 outer_zone_(nullptr), 148 outer_zone_(nullptr),
145 zone_pool_(zone_pool), 149 zone_pool_(zone_pool),
146 pipeline_statistics_(nullptr), 150 pipeline_statistics_(nullptr),
147 compilation_failed_(false), 151 compilation_failed_(false),
148 code_(Handle<Code>::null()), 152 code_(Handle<Code>::null()),
149 graph_zone_scope_(zone_pool_), 153 graph_zone_scope_(zone_pool_),
150 graph_zone_(nullptr), 154 graph_zone_(nullptr),
151 graph_(nullptr), 155 graph_(nullptr),
152 loop_assignment_(nullptr), 156 loop_assignment_(nullptr),
157 simplified_(nullptr),
153 machine_(nullptr), 158 machine_(nullptr),
154 common_(nullptr), 159 common_(nullptr),
155 javascript_(nullptr), 160 javascript_(nullptr),
156 jsgraph_(nullptr), 161 jsgraph_(nullptr),
157 js_type_feedback_(nullptr), 162 js_type_feedback_(nullptr),
158 schedule_(nullptr), 163 schedule_(nullptr),
159 instruction_zone_scope_(zone_pool_), 164 instruction_zone_scope_(zone_pool_),
160 instruction_zone_(sequence->zone()), 165 instruction_zone_(sequence->zone()),
161 sequence_(sequence), 166 sequence_(sequence),
162 frame_(nullptr), 167 frame_(nullptr),
(...skipping 59 matching lines...) Expand 10 before | Expand all | Expand 10 after
222 227
223 void DeleteGraphZone() { 228 void DeleteGraphZone() {
224 // Destroy objects with destructors first. 229 // Destroy objects with destructors first.
225 source_positions_.Reset(nullptr); 230 source_positions_.Reset(nullptr);
226 if (graph_zone_ == nullptr) return; 231 if (graph_zone_ == nullptr) return;
227 // Destroy zone and clear pointers. 232 // Destroy zone and clear pointers.
228 graph_zone_scope_.Destroy(); 233 graph_zone_scope_.Destroy();
229 graph_zone_ = nullptr; 234 graph_zone_ = nullptr;
230 graph_ = nullptr; 235 graph_ = nullptr;
231 loop_assignment_ = nullptr; 236 loop_assignment_ = nullptr;
237 simplified_ = nullptr;
232 machine_ = nullptr; 238 machine_ = nullptr;
233 common_ = nullptr; 239 common_ = nullptr;
234 javascript_ = nullptr; 240 javascript_ = nullptr;
235 jsgraph_ = nullptr; 241 jsgraph_ = nullptr;
236 js_type_feedback_ = nullptr; 242 js_type_feedback_ = nullptr;
237 schedule_ = nullptr; 243 schedule_ = nullptr;
238 } 244 }
239 245
240 void DeleteInstructionZone() { 246 void DeleteInstructionZone() {
241 if (instruction_zone_ == nullptr) return; 247 if (instruction_zone_ == nullptr) return;
(...skipping 47 matching lines...) Expand 10 before | Expand all | Expand 10 after
289 Handle<Code> code_; 295 Handle<Code> code_;
290 296
291 // All objects in the following group of fields are allocated in graph_zone_. 297 // All objects in the following group of fields are allocated in graph_zone_.
292 // They are all set to NULL when the graph_zone_ is destroyed. 298 // They are all set to NULL when the graph_zone_ is destroyed.
293 ZonePool::Scope graph_zone_scope_; 299 ZonePool::Scope graph_zone_scope_;
294 Zone* graph_zone_; 300 Zone* graph_zone_;
295 Graph* graph_; 301 Graph* graph_;
296 // TODO(dcarney): make this into a ZoneObject. 302 // TODO(dcarney): make this into a ZoneObject.
297 base::SmartPointer<SourcePositionTable> source_positions_; 303 base::SmartPointer<SourcePositionTable> source_positions_;
298 LoopAssignmentAnalysis* loop_assignment_; 304 LoopAssignmentAnalysis* loop_assignment_;
305 SimplifiedOperatorBuilder* simplified_;
299 MachineOperatorBuilder* machine_; 306 MachineOperatorBuilder* machine_;
300 CommonOperatorBuilder* common_; 307 CommonOperatorBuilder* common_;
301 JSOperatorBuilder* javascript_; 308 JSOperatorBuilder* javascript_;
302 JSGraph* jsgraph_; 309 JSGraph* jsgraph_;
303 JSTypeFeedbackTable* js_type_feedback_; 310 JSTypeFeedbackTable* js_type_feedback_;
304 Schedule* schedule_; 311 Schedule* schedule_;
305 312
306 // All objects in the following group of fields are allocated in 313 // All objects in the following group of fields are allocated in
307 // instruction_zone_. They are all set to NULL when the instruction_zone_ is 314 // instruction_zone_. They are all set to NULL when the instruction_zone_ is
308 // destroyed. 315 // destroyed.
(...skipping 1135 matching lines...) Expand 10 before | Expand all | Expand 10 after
1444 tcf << AsC1VRegisterAllocationData("CodeGen", 1451 tcf << AsC1VRegisterAllocationData("CodeGen",
1445 data->register_allocation_data()); 1452 data->register_allocation_data());
1446 } 1453 }
1447 1454
1448 data->DeleteRegisterAllocationZone(); 1455 data->DeleteRegisterAllocationZone();
1449 } 1456 }
1450 1457
1451 } // namespace compiler 1458 } // namespace compiler
1452 } // namespace internal 1459 } // namespace internal
1453 } // namespace v8 1460 } // namespace v8
OLDNEW
« no previous file with comments | « src/compiler/js-inlining.cc ('k') | src/compiler/simplified-operator.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698