// Copyright 2017 the V8 project authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. #ifndef V8_COMPILER_ESCAPE_ANALYSIS_H_ #define V8_COMPILER_ESCAPE_ANALYSIS_H_ #include "src/base/functional.h" #include "src/common/globals.h" #include "src/compiler/graph-reducer.h" #include "src/compiler/js-graph.h" #include "src/compiler/persistent-map.h" #include "src/objects/name.h" namespace v8 { namespace internal { class TickCounter; namespace compiler { class CommonOperatorBuilder; class VariableTracker; class EscapeAnalysisTracker; // {EffectGraphReducer} reduces up to a fixed point. It distinguishes changes to // the effect output of a node from changes to the value output to reduce the // number of revisitations. class EffectGraphReducer { … }; // A variable is an abstract storage location, which is lowered to SSA values // and phi nodes by {VariableTracker}. class Variable { … }; // An object that can track the nodes in the graph whose current reduction // depends on the value of the object. class Dependable : public ZoneObject { … }; // A virtual object represents an allocation site and tracks the Variables // associated with its fields as well as its global escape status. class VirtualObject : public Dependable { … }; class EscapeAnalysisResult { … }; class V8_EXPORT_PRIVATE EscapeAnalysis final : public NON_EXPORTED_BASE(EffectGraphReducer) { … }; } // namespace compiler } // namespace internal } // namespace v8 #endif // V8_COMPILER_ESCAPE_ANALYSIS_H_