%PDF- %PDF-
Direktori : /home/vacivi36/vittasync.vacivitta.com.br/vittasync/node/deps/v8/src/compiler/turboshaft/ |
Current File : /home/vacivi36/vittasync.vacivitta.com.br/vittasync/node/deps/v8/src/compiler/turboshaft/use-map.h |
// Copyright 2023 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_TURBOSHAFT_USE_MAP_H_ #define V8_COMPILER_TURBOSHAFT_USE_MAP_H_ #include "src/compiler/turboshaft/sidetable.h" namespace v8::internal::compiler::turboshaft { // UseMap computes uses of all operations of the given turboshaft graph. It // provides a mapping from `OpIndex` to its `uses`. class UseMap { struct PerOperationUses { // We encode offsets as follows: // offset < 0: -offset-1 indexes into {saturated_uses_}. // offset = 0: definition not visited yet. // offset > 0: offset indexes into {uses_}. int32_t offset = 0; uint32_t count = 0; }; public: UseMap(const Graph& graph, Zone* zone); base::Vector<const OpIndex> uses(OpIndex index) const; private: void AddUse(const Graph* graph, OpIndex node, OpIndex use); FixedSidetable<PerOperationUses> table_; ZoneVector<OpIndex> uses_; ZoneVector<ZoneVector<OpIndex>> saturated_uses_; }; } // namespace v8::internal::compiler::turboshaft #endif // V8_COMPILER_TURBOSHAFT_USE_MAP_H_