Documentation
¶
Index ¶
- func CalcEnd(domTree map[*core.Node][]*core.Node, ifNode *core.Node) error
- func CalcMergeNode1(ifNode *core.Node) *core.Node
- func CheckIsPreNode(infoGetter func(node *core.Node) *NodeExtInfo, node, pre *core.Node) bool
- func CheckNodesIsValid(node *core.Node) error
- func GenerateDominatorTree(rootNode *core.Node) map[*core.Node][]*core.Node
- func IfRewriter(manager *RewriteManager, ifNode *core.Node) error
- func IsEndNode(node *core.Node) bool
- func LoopJmpRewriter(manager *RewriteManager, circleNode *core.Node) error
- func LoopRewriter(manager *RewriteManager, node *core.Node) error
- func NodeDeduplication(nodes []*core.Node) []*core.Node
- func RebuildLoopNode(manager *RewriteManager) error
- func SwitchRewriter(manager *RewriteManager, node *core.Node) error
- func SwitchRewriter1(manager *RewriteManager, node *core.Node) error
- func SynchronizeRewriter(manager *RewriteManager, node *core.Node) error
- func TryRewriter(manager *RewriteManager, node *core.Node) error
- func WalkNodeToList(node *core.Node) []*core.Node
- type LoopStatement
- type NodeExtInfo
- type NodeRoute
- func (s *NodeRoute) Add(node *core.Node)
- func (s *NodeRoute) AddParent(nodeMap *NodeRoute)
- func (s *NodeRoute) ChildrenHas(node *core.Node) bool
- func (s *NodeRoute) GetFirstSameParentCondition(m *NodeRoute) *core.Node
- func (s *NodeRoute) Has(node *core.Node) (*NodeRoute, bool)
- func (s *NodeRoute) HasPre(node *core.Node) (*utils.Set[*core.Node], bool)
- func (s *NodeRoute) NewChild(conditionNode *core.Node) *NodeRoute
- type RewriteManager
- func (s *RewriteManager) CheckVisitedNode(node *core.Node) error
- func (s *RewriteManager) DumpDominatorTree()
- func (s *RewriteManager) GetNewNodeId() int
- func (s *RewriteManager) MergeIf()
- func (s *RewriteManager) NewLoopLabel() string
- func (s *RewriteManager) NewNode(st statements.Statement) *core.Node
- func (s *RewriteManager) Rewrite() error
- func (s *RewriteManager) ScanCoreInfo() error
- func (s *RewriteManager) ScanStatement(handle func(node *core.Node) (error, bool)) error
- func (s *RewriteManager) ScanStatementSimple(handle func(node *core.Node) error) error
- func (s *RewriteManager) SetId(id int)
- func (s *RewriteManager) ToStatements(stopCheck func(node *core.Node) bool) ([]*core.Node, error)
- func (s *RewriteManager) ToStatementsFromNode(node *core.Node, stopCheck func(node *core.Node) bool) ([]*core.Node, error)
- func (s *RewriteManager) TopologicalSortReverse(nodes []*core.Node) []*core.Node
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func CheckIsPreNode ¶
func CheckNodesIsValid ¶
func GenerateDominatorTree ¶
func IfRewriter ¶
func IfRewriter(manager *RewriteManager, ifNode *core.Node) error
func LoopJmpRewriter ¶
func LoopJmpRewriter(manager *RewriteManager, circleNode *core.Node) error
func LoopRewriter ¶
func LoopRewriter(manager *RewriteManager, node *core.Node) error
func RebuildLoopNode ¶
func RebuildLoopNode(manager *RewriteManager) error
func SwitchRewriter ¶
func SwitchRewriter(manager *RewriteManager, node *core.Node) error
func SwitchRewriter1 ¶
func SwitchRewriter1(manager *RewriteManager, node *core.Node) error
func SynchronizeRewriter ¶
func SynchronizeRewriter(manager *RewriteManager, node *core.Node) error
func TryRewriter ¶
func TryRewriter(manager *RewriteManager, node *core.Node) error
Types ¶
type NodeExtInfo ¶
type NodeRoute ¶
type NodeRoute struct { ConditionNode *core.Node SwitchNode *core.Node TryNode *core.Node Parent []*NodeRoute NodeMap *utils.Set[*core.Node] Children []*NodeRoute }
func NewRootNodeRoute ¶
func NewRootNodeRoute() *NodeRoute
func (*NodeRoute) GetFirstSameParentCondition ¶
type RewriteManager ¶
type RewriteManager struct { RootNode *core.Node PreNode *core.Node CircleEntryPoint []*core.Node WhileNode []*core.Node IfNodes []*core.Node SwitchNode []*core.Node TryNodes []*core.Node DominatorMap map[*core.Node][]*core.Node LabelId int // contains filtered or unexported fields }
func NewRootStatementManager ¶
func NewRootStatementManager(node *core.Node) *RewriteManager
func (*RewriteManager) CheckVisitedNode ¶
func (s *RewriteManager) CheckVisitedNode(node *core.Node) error
func (*RewriteManager) DumpDominatorTree ¶
func (s *RewriteManager) DumpDominatorTree()
func (*RewriteManager) GetNewNodeId ¶
func (s *RewriteManager) GetNewNodeId() int
func (*RewriteManager) MergeIf ¶
func (s *RewriteManager) MergeIf()
func (*RewriteManager) NewLoopLabel ¶
func (s *RewriteManager) NewLoopLabel() string
func (*RewriteManager) NewNode ¶
func (s *RewriteManager) NewNode(st statements.Statement) *core.Node
func (*RewriteManager) Rewrite ¶
func (s *RewriteManager) Rewrite() error
func (*RewriteManager) ScanCoreInfo ¶
func (s *RewriteManager) ScanCoreInfo() error
func (*RewriteManager) ScanStatement ¶
func (*RewriteManager) ScanStatementSimple ¶
func (s *RewriteManager) ScanStatementSimple(handle func(node *core.Node) error) error
func (*RewriteManager) SetId ¶
func (s *RewriteManager) SetId(id int)
func (*RewriteManager) ToStatements ¶
func (*RewriteManager) ToStatementsFromNode ¶
func (*RewriteManager) TopologicalSortReverse ¶
func (s *RewriteManager) TopologicalSortReverse(nodes []*core.Node) []*core.Node
Click to show internal directories.
Click to hide internal directories.