Documentation ¶
Index ¶
- Variables
- func Create() factory
- func EmptyIntraprocessWorklist(prios u.CtrLocPriorities) pq.PriorityQueue[CtrLoc]
- func NewControllocationMap() *immutable.Map
- func NewGoroutineMap() *immutable.Map
- func NewSuperlocationMap() *immutable.Map
- type CtrLoc
- func (cl CtrLoc) CallRelationNode() CtrLoc
- func (cl CtrLoc) Context() ctrlocContext
- func (cl CtrLoc) Derive(n cfg.Node) CtrLoc
- func (cl CtrLoc) DeriveBatch(mp map[cfg.Node]struct{}) map[CtrLoc]bool
- func (c1 CtrLoc) Equal(c2 CtrLoc) bool
- func (cl CtrLoc) Exiting() bool
- func (cl CtrLoc) Forking() bool
- func (cl CtrLoc) Hash() uint32
- func (cl CtrLoc) Node() cfg.Node
- func (cl CtrLoc) Panic() CtrLoc
- func (cl CtrLoc) Panicked() bool
- func (cl CtrLoc) PosString() string
- func (cl CtrLoc) Predecessor() CtrLoc
- func (cl CtrLoc) Root() *ssa.Function
- func (cl CtrLoc) String() string
- func (cl CtrLoc) Successor() CtrLoc
- func (cl CtrLoc) Successors() map[CtrLoc]struct{}
- func (cl CtrLoc) WithExiting(exiting bool) CtrLoc
- type Goro
- type Superloc
- func (s Superloc) Derive(threads map[Goro]CtrLoc) Superloc
- func (s Superloc) DeriveThread(g Goro, cl CtrLoc) Superloc
- func (s1 Superloc) Equal(s2 Superloc) bool
- func (s Superloc) Find(find func(Goro, CtrLoc) bool) (Goro, CtrLoc, bool)
- func (s Superloc) FindAll(find func(Goro, CtrLoc) bool) map[Goro]CtrLoc
- func (s Superloc) ForEach(do func(Goro, CtrLoc))
- func (s Superloc) Get(tid Goro) (CtrLoc, bool)
- func (s Superloc) GetUnsafe(g Goro) CtrLoc
- func (s Superloc) Hash() uint32
- func (s Superloc) Main() Goro
- func (s Superloc) NextIndex(g1 Goro) int
- func (s Superloc) Root() Goro
- func (s Superloc) Size() int
- func (s Superloc) String() string
- func (s Superloc) StringWithPos() string
- func (s Superloc) Threads() *immutable.Map
- func (s *Superloc) UpdatePathCondition(pc pathCondition) *Superloc
- func (s *Superloc) UpdateThread(tid Goro, loc CtrLoc) *Superloc
Constants ¶
This section is empty.
Variables ¶
var VK = struct {
ALLOC vk
PTR vk
CH vk
}{
ALLOC: 0,
PTR: 1,
CH: 2,
}
Functions ¶
func EmptyIntraprocessWorklist ¶
func EmptyIntraprocessWorklist(prios u.CtrLocPriorities) pq.PriorityQueue[CtrLoc]
A worklist that contains control locations. It orders elements of the list according to the ordering described in InitializeCtrLocPriorities. The list also uses a map of the contained elements to prevent duplicates.
func NewControllocationMap ¶
func NewGoroutineMap ¶
func NewSuperlocationMap ¶
Types ¶
type CtrLoc ¶
type CtrLoc struct {
// contains filtered or unexported fields
}
NOTE: This struct is used as a map key in abs-config. It is therefore important that it can be correctly compared with ==.
func (CtrLoc) CallRelationNode ¶
Derive control location from the call relation node of the given node.
func (CtrLoc) DeriveBatch ¶
Derive a batch of control locations from the provided set of control flow nodes.
func (CtrLoc) Forking ¶
A control location is forking if it has more than one successor or predecessor.
func (CtrLoc) Panic ¶
Derive the panic continuation from control flow defer link, or from the given panic continuation.
func (CtrLoc) Predecessor ¶
Derive control location predecessor from control flow node predecessor Will panic if there is more than one predecessor.
func (CtrLoc) Successor ¶
Derive control location successor from control flow node successor. Will panic if there is more than one successor.
func (CtrLoc) Successors ¶
Derive control location successors through control flow node.
func (CtrLoc) WithExiting ¶
type Goro ¶
type Goro interface { Hash() uint32 Equal(Goro) bool // Like equal but disregards indexes WeakEqual(Goro) bool String() string // Goroutines use control locations as part of their identification. CtrLoc() CtrLoc Index() int Parent() Goro Root() Goro // Spawns a goroutine off the current goroutine at the provided control location Spawn(CtrLoc) Goro // Spawns an indexed goroutine off the current goroutine at the provided control location. SpawnIndexed(CtrLoc, int) Goro // Sets the index SetIndex(int) Goro IsRoot() bool IsChildOf(Goro) bool IsParentOf(Goro) bool // Returns true if the control location spawn point chain has a cycle. IsCircular() bool // Get the parent goroutine with the longest chain of non-repeating control // location spawning points. GetRadix() Goro // Returns the length of the go-string. Length() int }
type Superloc ¶
type Superloc struct {
// contains filtered or unexported fields
}