OLD | NEW |
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 297 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
308 class AstGraphBuilderWithPositions : public AstGraphBuilder { | 308 class AstGraphBuilderWithPositions : public AstGraphBuilder { |
309 public: | 309 public: |
310 AstGraphBuilderWithPositions(Zone* local_zone, CompilationInfo* info, | 310 AstGraphBuilderWithPositions(Zone* local_zone, CompilationInfo* info, |
311 JSGraph* jsgraph, | 311 JSGraph* jsgraph, |
312 LoopAssignmentAnalysis* loop_assignment, | 312 LoopAssignmentAnalysis* loop_assignment, |
313 SourcePositionTable* source_positions) | 313 SourcePositionTable* source_positions) |
314 : AstGraphBuilder(local_zone, info, jsgraph, loop_assignment), | 314 : AstGraphBuilder(local_zone, info, jsgraph, loop_assignment), |
315 source_positions_(source_positions), | 315 source_positions_(source_positions), |
316 start_position_(info->shared_info()->start_position()) {} | 316 start_position_(info->shared_info()->start_position()) {} |
317 | 317 |
318 bool CreateGraph(bool constant_context) { | 318 bool CreateGraph(bool constant_context, bool stack_check) { |
319 SourcePositionTable::Scope pos_scope(source_positions_, start_position_); | 319 SourcePositionTable::Scope pos_scope(source_positions_, start_position_); |
320 return AstGraphBuilder::CreateGraph(constant_context); | 320 return AstGraphBuilder::CreateGraph(constant_context, stack_check); |
321 } | 321 } |
322 | 322 |
323 #define DEF_VISIT(type) \ | 323 #define DEF_VISIT(type) \ |
324 void Visit##type(type* node) OVERRIDE { \ | 324 void Visit##type(type* node) OVERRIDE { \ |
325 SourcePositionTable::Scope pos(source_positions_, \ | 325 SourcePositionTable::Scope pos(source_positions_, \ |
326 SourcePosition(node->position())); \ | 326 SourcePosition(node->position())); \ |
327 AstGraphBuilder::Visit##type(node); \ | 327 AstGraphBuilder::Visit##type(node); \ |
328 } | 328 } |
329 AST_NODE_LIST(DEF_VISIT) | 329 AST_NODE_LIST(DEF_VISIT) |
330 #undef DEF_VISIT | 330 #undef DEF_VISIT |
(...skipping 82 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
413 }; | 413 }; |
414 | 414 |
415 | 415 |
416 struct GraphBuilderPhase { | 416 struct GraphBuilderPhase { |
417 static const char* phase_name() { return "graph builder"; } | 417 static const char* phase_name() { return "graph builder"; } |
418 | 418 |
419 void Run(PipelineData* data, Zone* temp_zone, bool constant_context) { | 419 void Run(PipelineData* data, Zone* temp_zone, bool constant_context) { |
420 AstGraphBuilderWithPositions graph_builder( | 420 AstGraphBuilderWithPositions graph_builder( |
421 temp_zone, data->info(), data->jsgraph(), data->loop_assignment(), | 421 temp_zone, data->info(), data->jsgraph(), data->loop_assignment(), |
422 data->source_positions()); | 422 data->source_positions()); |
423 if (!graph_builder.CreateGraph(constant_context)) { | 423 bool stack_check = !data->info()->IsStub(); |
| 424 if (!graph_builder.CreateGraph(constant_context, stack_check)) { |
424 data->set_compilation_failed(); | 425 data->set_compilation_failed(); |
425 } | 426 } |
426 } | 427 } |
427 }; | 428 }; |
428 | 429 |
429 | 430 |
430 struct ContextSpecializerPhase { | 431 struct ContextSpecializerPhase { |
431 static const char* phase_name() { return "context specializing"; } | 432 static const char* phase_name() { return "context specializing"; } |
432 | 433 |
433 void Run(PipelineData* data, Zone* temp_zone) { | 434 void Run(PipelineData* data, Zone* temp_zone) { |
(...skipping 761 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1195 | 1196 |
1196 if (FLAG_trace_turbo && !data->MayHaveUnverifiableGraph()) { | 1197 if (FLAG_trace_turbo && !data->MayHaveUnverifiableGraph()) { |
1197 TurboCfgFile tcf(data->isolate()); | 1198 TurboCfgFile tcf(data->isolate()); |
1198 tcf << AsC1VAllocator("CodeGen", data->register_allocator()); | 1199 tcf << AsC1VAllocator("CodeGen", data->register_allocator()); |
1199 } | 1200 } |
1200 } | 1201 } |
1201 | 1202 |
1202 } // namespace compiler | 1203 } // namespace compiler |
1203 } // namespace internal | 1204 } // namespace internal |
1204 } // namespace v8 | 1205 } // namespace v8 |
OLD | NEW |