#include "src/compiler/escape-analysis.h"
#include "src/codegen/tick-counter.h"
#include "src/compiler/frame-states.h"
#include "src/compiler/node-matchers.h"
#include "src/compiler/operator-properties.h"
#include "src/compiler/simplified-operator.h"
#include "src/compiler/state-values-utils.h"
#include "src/handles/handles-inl.h"
#include "src/objects/map-inl.h"
#ifdef DEBUG
#define TRACE …
#else
#define TRACE …
#endif
namespace v8 {
namespace internal {
namespace compiler {
template <class T>
class Sidetable { … };
template <class T>
class SparseSidetable { … };
class ReduceScope { … };
class VariableTracker { … };
class EscapeAnalysisTracker : public ZoneObject { … };
EffectGraphReducer::EffectGraphReducer(
Graph* graph, std::function<void(Node*, Reduction*)> reduce,
TickCounter* tick_counter, Zone* zone)
: … { … }
void EffectGraphReducer::ReduceFrom(Node* node) { … }
void EffectGraphReducer::Revisit(Node* node) { … }
VariableTracker::VariableTracker(JSGraph* graph, EffectGraphReducer* reducer,
Zone* zone)
: … { … }
VariableTracker::Scope::Scope(VariableTracker* states, Node* node,
Reduction* reduction)
: … { … }
VariableTracker::Scope::~Scope() { … }
VariableTracker::State VariableTracker::MergeInputs(Node* effect_phi) { … }
namespace {
int OffsetOfFieldAccess(const Operator* op) { … }
Maybe<int> OffsetOfElementAt(ElementAccess const& access, int index) { … }
Maybe<int> OffsetOfElementsAccess(const Operator* op, Node* index_node) { … }
Node* LowerCompareMapsWithoutLoad(Node* checked_map,
ZoneRefSet<Map> const& checked_against,
JSGraph* jsgraph) { … }
void ReduceNode(const Operator* op, EscapeAnalysisTracker::Scope* current,
JSGraph* jsgraph) { … }
}
void EscapeAnalysis::Reduce(Node* node, Reduction* reduction) { … }
EscapeAnalysis::EscapeAnalysis(JSGraph* jsgraph, TickCounter* tick_counter,
Zone* zone)
: … { … }
Node* EscapeAnalysisResult::GetReplacementOf(Node* node) { … }
Node* EscapeAnalysisResult::GetVirtualObjectField(const VirtualObject* vobject,
int field, Node* effect) { … }
const VirtualObject* EscapeAnalysisResult::GetVirtualObject(Node* node) { … }
VirtualObject::VirtualObject(VariableTracker* var_states, VirtualObject::Id id,
int size)
: … { … }
#undef TRACE
}
}
}