Module Absint__ConcurrencyModels
type lock_effect=|Lock of Absint.HilExp.t listsimultaneously acquire a list of locks
|Unlock of Absint.HilExp.t listsimultaneously release a list of locks
|LockedIfTrue of Absint.HilExp.t listsimultaneously attempt to acquire a list of locks
|GuardConstruct of{guard : Absint.HilExp.t;lock : Absint.HilExp.t;acquire_now : bool;}mutex guard construction - clang only
|GuardLock of Absint.HilExp.tlock underlying mutex via guard - clang only
|GuardLockedIfTrue of Absint.HilExp.tlock underlying mutex if true via guard - clang only
|GuardUnlock of Absint.HilExp.tunlock underlying mutex via guard - clang only
|GuardDestroy of Absint.HilExp.tdestroy guard and unlock underlying mutex - clang only
|NoEffectfunction call has no lock-relevant effect
effect of call plus Hil expressions being un/locked, if known
val is_thread_utils_method : string -> IR.Procname.t -> boolreturn true if the given method name is a utility class for checking what thread we're on TODO: clean this up so it takes only a procname
val get_lock_effect : IR.Procname.t -> Absint.HilExp.t list -> lock_effectdescribe how this procedure behaves with respect to locking
val get_thread_assert_effect : IR.Procname.t -> threadIn Java, certain methods can be used to assert execution on a specific kind of thread, or return a boolean equivalent to such a fact.
val get_current_class_and_annotated_superclasses : (IR.Annot.Item.t -> bool) -> IR.Tenv.t -> IR.Procname.t -> (IR.Typ.name * IR.Typ.name list) optionval is_recursive_lock_type : IR.Typ.name -> bool
type annotation_trail=|DirectlyAnnotatedthe method is directly annotated as such
|Override of IR.Procname.tit overrides a method annotated in a super class
|SuperClass of IR.Typ.namethe method's class or a super class of that is annotated as such
Type documenting why a method is considered as annotated with a certain annotation
val compare_annotation_trail : annotation_trail -> annotation_trail -> int
val find_override_or_superclass_annotated : (IR.Annot.Item.t -> bool) -> IR.Tenv.t -> IR.Procname.t -> annotation_trail optioncheck if a method's transitive annotations satisfy the given predicate
val annotated_as_worker_thread : IR.Tenv.t -> IR.Procname.t -> boolval runs_on_ui_thread : IR.Tenv.t -> IR.Procname.t -> boolis method not transitively annotated
@WorkerThreadand is modeled or annotated@UIThreador equivalent?
val is_android_lifecycle_method : IR.Tenv.t -> IR.Procname.t -> boolis method a known Android UI thread callback (eg
Activity.onCreate)