P4C
The P4 Compiler
Loading...
Searching...
No Matches
PHV::Slicing::ItrContext Class Reference

#include <phv_slicing_iterator.h>

Inheritance diagram for PHV::Slicing::ItrContext:
[legend]

Public Member Functions

 ItrContext (const PhvInfo &phv, const MapFieldToParserStates &fs, const CollectParserInfo &pi, const SuperCluster *sc, const PHVContainerSizeLayout &pa, const ActionPackingValidatorInterface &action_packing_validator, const ParserPackingValidatorInterface &parser_packing_validator, const PackConflictChecker pack_conflict, const IsReferencedChecker is_referenced)
 
void invalidate (const SuperCluster::SliceList *sl) override
 
void iterate (const IterateCb &cb) override
 iterate will pass valid slicing results to cb. Stop when cb returns false.
 
void set_config (const IteratorConfig &cfg) override
 set iterator configs.
 
- Public Member Functions inherited from PHV::Slicing::IteratorInterface

Detailed Description

ItrContext holds the current context for the generated slicing iterator. Note that, the SlicingIterator here is making slicing decision on SliceList intead of SuperClusters. SuperClusters are just products of doing union-find on sliced SliceLists with rotational clusters. see README.md for more details. The input sc is better to be: (1) split by pa_solitary already. (2) split by deparsed_bottom_bits already.

Member Function Documentation

◆ invalidate()

void PHV::Slicing::ItrContext::invalidate ( const SuperCluster::SliceList * sl)
inlineoverridevirtual

invalidate is the feedback mechanism for allocation algorithm to ask iterator to not produce slicing result contains sl. This function can be called multiple times, and the implementation decides which one will be respected. For example, a DFS slicing iterator may choose to respect the list of top-most stack frame, i.e., the most recent decision made by DFS.

Implements PHV::Slicing::IteratorInterface.

◆ iterate()

void PHV::Slicing::ItrContext::iterate ( const IterateCb & cb)
inlineoverridevirtual

iterate will pass valid slicing results to cb. Stop when cb returns false.

Implements PHV::Slicing::IteratorInterface.

◆ set_config()

void PHV::Slicing::ItrContext::set_config ( const IteratorConfig & cfg)
inlineoverridevirtual

set iterator configs.

Implements PHV::Slicing::IteratorInterface.