StarvationDomain.Lock
Abstract address for a lock. There are two notions of equality:
x.f.g == y.f.g
). This allows demonically aliasing parameters in *distinct* threads. This relation is used in may_deadlock
.include module type of AbstractAddress
Type meant to represent abstract addresses based on access paths. It currently distinguishes between paths
Notably, there are no addresses rooted at locals (because proving aliasing between those is difficult).
There are two notions of equality:
x.f.g == y.f.g
). This allows demonically aliasing parameters in *distinct* threads.include IStdlib.PrettyPrintable.PrintableOrderedType
include IStdlib.PrettyPrintable.PrintableType with type t := t
val pp : IStdlib.PrettyPrintable.F.formatter -> t -> unit
val describe : F.formatter -> t -> unit
human readable description
val root_class : t -> IR.Typ.name option
Class of the root variable of the expression representing the address
val make : Absint.FormalMap.t -> Absint.HilExp.t -> t option
convert an expression to a canonical form for an address
val is_class_object : t -> bool
is the address a Java class object such as in synchronized(MyClass.class){}
or static synchronized void foo()
A substitution from formal position indices to address options. None
is used to for actuals that cannot be resolved to an address (eg local-rooted paths or arithmetic expressions).
val pp_subst : F.formatter -> subst -> unit
val make_subst : Absint.FormalMap.t -> Absint.HilExp.t list -> subst
val pp_locks : F.formatter -> t -> unit
val make_java_synchronized : Absint.FormalMap.t -> IR.Procname.t -> t option
create the monitor locked when entering a synchronized java method