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

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

Issue 2500143003: [turbofan] Make escape analysis fail silently for cyclic object states (Closed)
Patch Set: regolden Created 4 years, 1 month 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
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 918 matching lines...) Expand 10 before | Expand all | Expand 10 after
929 929
930 void Run(PipelineData* data, Zone* temp_zone) { 930 void Run(PipelineData* data, Zone* temp_zone) {
931 EscapeAnalysis escape_analysis(data->graph(), data->jsgraph()->common(), 931 EscapeAnalysis escape_analysis(data->graph(), data->jsgraph()->common(),
932 temp_zone); 932 temp_zone);
933 escape_analysis.Run(); 933 escape_analysis.Run();
934 JSGraphReducer graph_reducer(data->jsgraph(), temp_zone); 934 JSGraphReducer graph_reducer(data->jsgraph(), temp_zone);
935 EscapeAnalysisReducer escape_reducer(&graph_reducer, data->jsgraph(), 935 EscapeAnalysisReducer escape_reducer(&graph_reducer, data->jsgraph(),
936 &escape_analysis, temp_zone); 936 &escape_analysis, temp_zone);
937 AddReducer(data, &graph_reducer, &escape_reducer); 937 AddReducer(data, &graph_reducer, &escape_reducer);
938 graph_reducer.ReduceGraph(); 938 graph_reducer.ReduceGraph();
939 if (escape_reducer.compilation_failed()) {
940 data->set_compilation_failed();
941 return;
942 }
939 escape_reducer.VerifyReplacement(); 943 escape_reducer.VerifyReplacement();
940 } 944 }
941 }; 945 };
942 946
943 struct RepresentationSelectionPhase { 947 struct RepresentationSelectionPhase {
944 static const char* phase_name() { return "representation selection"; } 948 static const char* phase_name() { return "representation selection"; }
945 949
946 void Run(PipelineData* data, Zone* temp_zone) { 950 void Run(PipelineData* data, Zone* temp_zone) {
947 SimplifiedLowering lowering(data->jsgraph(), temp_zone, 951 SimplifiedLowering lowering(data->jsgraph(), temp_zone,
948 data->source_positions()); 952 data->source_positions());
(...skipping 594 matching lines...) Expand 10 before | Expand all | Expand 10 after
1543 } 1547 }
1544 1548
1545 if (!info()->shared_info()->asm_function()) { 1549 if (!info()->shared_info()->asm_function()) {
1546 if (FLAG_turbo_load_elimination) { 1550 if (FLAG_turbo_load_elimination) {
1547 Run<LoadEliminationPhase>(); 1551 Run<LoadEliminationPhase>();
1548 RunPrintAndVerify("Load eliminated"); 1552 RunPrintAndVerify("Load eliminated");
1549 } 1553 }
1550 1554
1551 if (FLAG_turbo_escape) { 1555 if (FLAG_turbo_escape) {
1552 Run<EscapeAnalysisPhase>(); 1556 Run<EscapeAnalysisPhase>();
1557 if (data->compilation_failed()) {
1558 info()->AbortOptimization(kCyclicObjectStateDetectedInEscapeAnalysis);
1559 data->EndPhaseKind();
1560 return false;
1561 }
1553 RunPrintAndVerify("Escape Analysed"); 1562 RunPrintAndVerify("Escape Analysed");
1554 } 1563 }
1555 } 1564 }
1556 } 1565 }
1557 1566
1558 // Select representations. This has to run w/o the Typer decorator, because 1567 // Select representations. This has to run w/o the Typer decorator, because
1559 // we cannot compute meaningful types anyways, and the computed types might 1568 // we cannot compute meaningful types anyways, and the computed types might
1560 // even conflict with the representation/truncation logic. 1569 // even conflict with the representation/truncation logic.
1561 Run<RepresentationSelectionPhase>(); 1570 Run<RepresentationSelectionPhase>();
1562 RunPrintAndVerify("Representations selected", true); 1571 RunPrintAndVerify("Representations selected", true);
(...skipping 401 matching lines...) Expand 10 before | Expand all | Expand 10 after
1964 data->DeleteRegisterAllocationZone(); 1973 data->DeleteRegisterAllocationZone();
1965 } 1974 }
1966 1975
1967 CompilationInfo* PipelineImpl::info() const { return data_->info(); } 1976 CompilationInfo* PipelineImpl::info() const { return data_->info(); }
1968 1977
1969 Isolate* PipelineImpl::isolate() const { return info()->isolate(); } 1978 Isolate* PipelineImpl::isolate() const { return info()->isolate(); }
1970 1979
1971 } // namespace compiler 1980 } // namespace compiler
1972 } // namespace internal 1981 } // namespace internal
1973 } // namespace v8 1982 } // namespace v8
OLDNEW
« no previous file with comments | « src/compiler/escape-analysis-reducer.cc ('k') | test/cctest/interpreter/bytecode_expectations/Generators.golden » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698