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 <memory> | 8 #include <memory> |
9 #include <sstream> | 9 #include <sstream> |
10 | 10 |
(...skipping 30 matching lines...) Expand all Loading... |
41 #include "src/compiler/js-inlining-heuristic.h" | 41 #include "src/compiler/js-inlining-heuristic.h" |
42 #include "src/compiler/js-intrinsic-lowering.h" | 42 #include "src/compiler/js-intrinsic-lowering.h" |
43 #include "src/compiler/js-native-context-specialization.h" | 43 #include "src/compiler/js-native-context-specialization.h" |
44 #include "src/compiler/js-typed-lowering.h" | 44 #include "src/compiler/js-typed-lowering.h" |
45 #include "src/compiler/jump-threading.h" | 45 #include "src/compiler/jump-threading.h" |
46 #include "src/compiler/live-range-separator.h" | 46 #include "src/compiler/live-range-separator.h" |
47 #include "src/compiler/load-elimination.h" | 47 #include "src/compiler/load-elimination.h" |
48 #include "src/compiler/loop-analysis.h" | 48 #include "src/compiler/loop-analysis.h" |
49 #include "src/compiler/loop-peeling.h" | 49 #include "src/compiler/loop-peeling.h" |
50 #include "src/compiler/loop-variable-optimizer.h" | 50 #include "src/compiler/loop-variable-optimizer.h" |
| 51 #include "src/compiler/machine-graph-verifier.h" |
51 #include "src/compiler/machine-operator-reducer.h" | 52 #include "src/compiler/machine-operator-reducer.h" |
52 #include "src/compiler/memory-optimizer.h" | 53 #include "src/compiler/memory-optimizer.h" |
53 #include "src/compiler/move-optimizer.h" | 54 #include "src/compiler/move-optimizer.h" |
54 #include "src/compiler/osr.h" | 55 #include "src/compiler/osr.h" |
55 #include "src/compiler/pipeline-statistics.h" | 56 #include "src/compiler/pipeline-statistics.h" |
56 #include "src/compiler/redundancy-elimination.h" | 57 #include "src/compiler/redundancy-elimination.h" |
57 #include "src/compiler/register-allocator-verifier.h" | 58 #include "src/compiler/register-allocator-verifier.h" |
58 #include "src/compiler/register-allocator.h" | 59 #include "src/compiler/register-allocator.h" |
59 #include "src/compiler/schedule.h" | 60 #include "src/compiler/schedule.h" |
60 #include "src/compiler/scheduler.h" | 61 #include "src/compiler/scheduler.h" |
(...skipping 1681 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1742 DCHECK_NOT_NULL(data->graph()); | 1743 DCHECK_NOT_NULL(data->graph()); |
1743 | 1744 |
1744 if (data->schedule() == nullptr) Run<ComputeSchedulePhase>(); | 1745 if (data->schedule() == nullptr) Run<ComputeSchedulePhase>(); |
1745 TraceSchedule(data->info(), data->schedule()); | 1746 TraceSchedule(data->info(), data->schedule()); |
1746 | 1747 |
1747 if (FLAG_turbo_profiling) { | 1748 if (FLAG_turbo_profiling) { |
1748 data->set_profiler_data(BasicBlockInstrumentor::Instrument( | 1749 data->set_profiler_data(BasicBlockInstrumentor::Instrument( |
1749 info(), data->graph(), data->schedule())); | 1750 info(), data->graph(), data->schedule())); |
1750 } | 1751 } |
1751 | 1752 |
| 1753 if (FLAG_turbo_verify_machine_graph) { |
| 1754 Zone temp_zone(data->isolate()->allocator()); |
| 1755 MachineGraphVerifier::Run(data->graph(), data->schedule(), linkage, |
| 1756 &temp_zone); |
| 1757 } |
| 1758 |
1752 data->InitializeInstructionSequence(call_descriptor); | 1759 data->InitializeInstructionSequence(call_descriptor); |
1753 | 1760 |
1754 data->InitializeFrameData(call_descriptor); | 1761 data->InitializeFrameData(call_descriptor); |
1755 // Select and schedule instructions covering the scheduled graph. | 1762 // Select and schedule instructions covering the scheduled graph. |
1756 Run<InstructionSelectionPhase>(linkage); | 1763 Run<InstructionSelectionPhase>(linkage); |
1757 | 1764 |
1758 if (FLAG_trace_turbo && !data->MayHaveUnverifiableGraph()) { | 1765 if (FLAG_trace_turbo && !data->MayHaveUnverifiableGraph()) { |
1759 AllowHandleDereference allow_deref; | 1766 AllowHandleDereference allow_deref; |
1760 TurboCfgFile tcf(isolate()); | 1767 TurboCfgFile tcf(isolate()); |
1761 tcf << AsC1V("CodeGen", data->schedule(), data->source_positions(), | 1768 tcf << AsC1V("CodeGen", data->schedule(), data->source_positions(), |
(...skipping 180 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1942 data->DeleteRegisterAllocationZone(); | 1949 data->DeleteRegisterAllocationZone(); |
1943 } | 1950 } |
1944 | 1951 |
1945 CompilationInfo* PipelineImpl::info() const { return data_->info(); } | 1952 CompilationInfo* PipelineImpl::info() const { return data_->info(); } |
1946 | 1953 |
1947 Isolate* PipelineImpl::isolate() const { return info()->isolate(); } | 1954 Isolate* PipelineImpl::isolate() const { return info()->isolate(); } |
1948 | 1955 |
1949 } // namespace compiler | 1956 } // namespace compiler |
1950 } // namespace internal | 1957 } // namespace internal |
1951 } // namespace v8 | 1958 } // namespace v8 |
OLD | NEW |