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

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

Issue 2395783002: Revert of [turbofan] Osr value typing + dynamic type checks on entry. (Closed)
Patch Set: Created 4 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/osr.cc ('k') | src/compiler/simplified-lowering.cc » ('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 <memory> 8 #include <memory>
9 #include <sstream> 9 #include <sstream>
10 10
(...skipping 841 matching lines...) Expand 10 before | Expand all | Expand 10 after
852 void Run(PipelineData* data, Zone* temp_zone, Typer* typer) { 852 void Run(PipelineData* data, Zone* temp_zone, Typer* typer) {
853 NodeVector roots(temp_zone); 853 NodeVector roots(temp_zone);
854 data->jsgraph()->GetCachedNodes(&roots); 854 data->jsgraph()->GetCachedNodes(&roots);
855 LoopVariableOptimizer induction_vars(data->jsgraph()->graph(), 855 LoopVariableOptimizer induction_vars(data->jsgraph()->graph(),
856 data->common(), temp_zone); 856 data->common(), temp_zone);
857 if (FLAG_turbo_loop_variable) induction_vars.Run(); 857 if (FLAG_turbo_loop_variable) induction_vars.Run();
858 typer->Run(roots, &induction_vars); 858 typer->Run(roots, &induction_vars);
859 } 859 }
860 }; 860 };
861 861
862 struct OsrTyperPhase { 862 #ifdef DEBUG
863 static const char* phase_name() { return "osr typer"; }
864
865 void Run(PipelineData* data, Zone* temp_zone) {
866 NodeVector roots(temp_zone);
867 data->jsgraph()->GetCachedNodes(&roots);
868 // Dummy induction variable optimizer: at the moment, we do not try
869 // to compute loop variable bounds on OSR.
870 LoopVariableOptimizer induction_vars(data->jsgraph()->graph(),
871 data->common(), temp_zone);
872 Typer typer(data->isolate(), data->graph());
873 typer.Run(roots, &induction_vars);
874 }
875 };
876 863
877 struct UntyperPhase { 864 struct UntyperPhase {
878 static const char* phase_name() { return "untyper"; } 865 static const char* phase_name() { return "untyper"; }
879 866
880 void Run(PipelineData* data, Zone* temp_zone) { 867 void Run(PipelineData* data, Zone* temp_zone) {
881 class RemoveTypeReducer final : public Reducer { 868 class RemoveTypeReducer final : public Reducer {
882 public: 869 public:
883 Reduction Reduce(Node* node) final { 870 Reduction Reduce(Node* node) final {
884 if (NodeProperties::IsTyped(node)) { 871 if (NodeProperties::IsTyped(node)) {
885 NodeProperties::RemoveType(node); 872 NodeProperties::RemoveType(node);
886 return Changed(node); 873 return Changed(node);
887 } 874 }
888 return NoChange(); 875 return NoChange();
889 } 876 }
890 }; 877 };
891 878
892 NodeVector roots(temp_zone);
893 data->jsgraph()->GetCachedNodes(&roots);
894 for (Node* node : roots) {
895 NodeProperties::RemoveType(node);
896 }
897
898 JSGraphReducer graph_reducer(data->jsgraph(), temp_zone); 879 JSGraphReducer graph_reducer(data->jsgraph(), temp_zone);
899 RemoveTypeReducer remove_type_reducer; 880 RemoveTypeReducer remove_type_reducer;
900 AddReducer(data, &graph_reducer, &remove_type_reducer); 881 AddReducer(data, &graph_reducer, &remove_type_reducer);
901 graph_reducer.ReduceGraph(); 882 graph_reducer.ReduceGraph();
902 } 883 }
903 }; 884 };
904 885
886 #endif // DEBUG
887
905 struct OsrDeconstructionPhase { 888 struct OsrDeconstructionPhase {
906 static const char* phase_name() { return "OSR deconstruction"; } 889 static const char* phase_name() { return "OSR deconstruction"; }
907 890
908 void Run(PipelineData* data, Zone* temp_zone) { 891 void Run(PipelineData* data, Zone* temp_zone) {
909 GraphTrimmer trimmer(temp_zone, data->graph());
910 NodeVector roots(temp_zone);
911 data->jsgraph()->GetCachedNodes(&roots);
912 trimmer.TrimGraph(roots.begin(), roots.end());
913
914 OsrHelper osr_helper(data->info()); 892 OsrHelper osr_helper(data->info());
915 osr_helper.Deconstruct(data->jsgraph(), data->common(), temp_zone); 893 osr_helper.Deconstruct(data->jsgraph(), data->common(), temp_zone);
916 } 894 }
917 }; 895 };
918 896
919 897
920 struct TypedLoweringPhase { 898 struct TypedLoweringPhase {
921 static const char* phase_name() { return "typed lowering"; } 899 static const char* phase_name() { return "typed lowering"; }
922 900
923 void Run(PipelineData* data, Zone* temp_zone) { 901 void Run(PipelineData* data, Zone* temp_zone) {
(...skipping 584 matching lines...) Expand 10 before | Expand all | Expand 10 after
1508 1486
1509 Run<GraphBuilderPhase>(); 1487 Run<GraphBuilderPhase>();
1510 if (data->compilation_failed()) { 1488 if (data->compilation_failed()) {
1511 data->EndPhaseKind(); 1489 data->EndPhaseKind();
1512 return false; 1490 return false;
1513 } 1491 }
1514 RunPrintAndVerify("Initial untyped", true); 1492 RunPrintAndVerify("Initial untyped", true);
1515 1493
1516 // Perform OSR deconstruction. 1494 // Perform OSR deconstruction.
1517 if (info()->is_osr()) { 1495 if (info()->is_osr()) {
1518 Run<OsrTyperPhase>();
1519
1520 Run<OsrDeconstructionPhase>(); 1496 Run<OsrDeconstructionPhase>();
1521
1522 Run<UntyperPhase>();
1523 RunPrintAndVerify("OSR deconstruction", true); 1497 RunPrintAndVerify("OSR deconstruction", true);
1524 } 1498 }
1525 1499
1526 // Perform function context specialization and inlining (if enabled). 1500 // Perform function context specialization and inlining (if enabled).
1527 Run<InliningPhase>(); 1501 Run<InliningPhase>();
1528 RunPrintAndVerify("Inlined", true); 1502 RunPrintAndVerify("Inlined", true);
1529 1503
1530 // Remove dead->live edges from the graph. 1504 // Remove dead->live edges from the graph.
1531 Run<EarlyGraphTrimmingPhase>(); 1505 Run<EarlyGraphTrimmingPhase>();
1532 RunPrintAndVerify("Early trimmed", true); 1506 RunPrintAndVerify("Early trimmed", true);
(...skipping 435 matching lines...) Expand 10 before | Expand all | Expand 10 after
1968 data->DeleteRegisterAllocationZone(); 1942 data->DeleteRegisterAllocationZone();
1969 } 1943 }
1970 1944
1971 CompilationInfo* PipelineImpl::info() const { return data_->info(); } 1945 CompilationInfo* PipelineImpl::info() const { return data_->info(); }
1972 1946
1973 Isolate* PipelineImpl::isolate() const { return info()->isolate(); } 1947 Isolate* PipelineImpl::isolate() const { return info()->isolate(); }
1974 1948
1975 } // namespace compiler 1949 } // namespace compiler
1976 } // namespace internal 1950 } // namespace internal
1977 } // namespace v8 1951 } // namespace v8
OLDNEW
« no previous file with comments | « src/compiler/osr.cc ('k') | src/compiler/simplified-lowering.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698