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/adapters.h" | 10 #include "src/base/adapters.h" |
(...skipping 543 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
554 PipelineRunScope scope(this->data_, Phase::phase_name()); | 554 PipelineRunScope scope(this->data_, Phase::phase_name()); |
555 Phase phase; | 555 Phase phase; |
556 phase.Run(this->data_, scope.zone(), arg_0); | 556 phase.Run(this->data_, scope.zone(), arg_0); |
557 } | 557 } |
558 | 558 |
559 | 559 |
560 struct LoopAssignmentAnalysisPhase { | 560 struct LoopAssignmentAnalysisPhase { |
561 static const char* phase_name() { return "loop assignment analysis"; } | 561 static const char* phase_name() { return "loop assignment analysis"; } |
562 | 562 |
563 void Run(PipelineData* data, Zone* temp_zone) { | 563 void Run(PipelineData* data, Zone* temp_zone) { |
564 AstLoopAssignmentAnalyzer analyzer(data->graph_zone(), data->info()); | 564 if (!data->info()->is_optimizing_from_bytecode()) { |
565 LoopAssignmentAnalysis* loop_assignment = analyzer.Analyze(); | 565 AstLoopAssignmentAnalyzer analyzer(data->graph_zone(), data->info()); |
566 data->set_loop_assignment(loop_assignment); | 566 LoopAssignmentAnalysis* loop_assignment = analyzer.Analyze(); |
| 567 data->set_loop_assignment(loop_assignment); |
| 568 } |
567 } | 569 } |
568 }; | 570 }; |
569 | 571 |
570 | 572 |
571 struct TypeHintAnalysisPhase { | 573 struct TypeHintAnalysisPhase { |
572 static const char* phase_name() { return "type hint analysis"; } | 574 static const char* phase_name() { return "type hint analysis"; } |
573 | 575 |
574 void Run(PipelineData* data, Zone* temp_zone) { | 576 void Run(PipelineData* data, Zone* temp_zone) { |
575 TypeHintAnalyzer analyzer(data->graph_zone()); | 577 if (!data->info()->is_optimizing_from_bytecode()) { |
576 Handle<Code> code(data->info()->shared_info()->code(), data->isolate()); | 578 TypeHintAnalyzer analyzer(data->graph_zone()); |
577 TypeHintAnalysis* type_hint_analysis = analyzer.Analyze(code); | 579 Handle<Code> code(data->info()->shared_info()->code(), data->isolate()); |
578 data->set_type_hint_analysis(type_hint_analysis); | 580 TypeHintAnalysis* type_hint_analysis = analyzer.Analyze(code); |
| 581 data->set_type_hint_analysis(type_hint_analysis); |
| 582 } |
579 } | 583 } |
580 }; | 584 }; |
581 | 585 |
582 | 586 |
583 struct GraphBuilderPhase { | 587 struct GraphBuilderPhase { |
584 static const char* phase_name() { return "graph builder"; } | 588 static const char* phase_name() { return "graph builder"; } |
585 | 589 |
586 void Run(PipelineData* data, Zone* temp_zone) { | 590 void Run(PipelineData* data, Zone* temp_zone) { |
587 bool stack_check = !data->info()->IsStub(); | 591 bool stack_check = !data->info()->IsStub(); |
588 bool succeeded = false; | 592 bool succeeded = false; |
589 | 593 |
590 if (data->info()->shared_info()->HasBytecodeArray()) { | 594 if (data->info()->is_optimizing_from_bytecode()) { |
591 BytecodeGraphBuilder graph_builder(temp_zone, data->info(), | 595 BytecodeGraphBuilder graph_builder(temp_zone, data->info(), |
592 data->jsgraph()); | 596 data->jsgraph()); |
593 succeeded = graph_builder.CreateGraph(); | 597 succeeded = graph_builder.CreateGraph(); |
594 } else { | 598 } else { |
595 AstGraphBuilderWithPositions graph_builder( | 599 AstGraphBuilderWithPositions graph_builder( |
596 temp_zone, data->info(), data->jsgraph(), data->loop_assignment(), | 600 temp_zone, data->info(), data->jsgraph(), data->loop_assignment(), |
597 data->type_hint_analysis(), data->source_positions()); | 601 data->type_hint_analysis(), data->source_positions()); |
598 succeeded = graph_builder.CreateGraph(stack_check); | 602 succeeded = graph_builder.CreateGraph(stack_check); |
599 } | 603 } |
600 | 604 |
(...skipping 1023 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1624 } | 1628 } |
1625 | 1629 |
1626 data->DeleteRegisterAllocationZone(); | 1630 data->DeleteRegisterAllocationZone(); |
1627 } | 1631 } |
1628 | 1632 |
1629 Isolate* Pipeline::isolate() const { return info()->isolate(); } | 1633 Isolate* Pipeline::isolate() const { return info()->isolate(); } |
1630 | 1634 |
1631 } // namespace compiler | 1635 } // namespace compiler |
1632 } // namespace internal | 1636 } // namespace internal |
1633 } // namespace v8 | 1637 } // namespace v8 |
OLD | NEW |