| 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 |