Absint.ConcurrencyModelstype lock_effect = | Lock of HilExp.t listsimultaneously acquire a list of locks
*)| Unlock of HilExp.t listsimultaneously release a list of locks
*)| LockedIfTrue of HilExp.t listsimultaneously attempt to acquire a list of locks
*)| GuardConstruct of {}mutex guard construction - clang only
*)| GuardLock of HilExp.tlock underlying mutex via guard - clang only
*)| GuardLockedIfTrue of HilExp.tlock underlying mutex if true via guard - clang only
*)| GuardUnlock of HilExp.tunlock underlying mutex via guard - clang only
*)| GuardDestroy of 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 get_lock_effect : IR.Procname.t -> 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 -> booltype 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 -> intval 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 annotated_as_named_thread : IR.Procname.t -> string optionval runs_on_ui_thread : IR.Tenv.t -> IR.Procname.t -> boolis method not transitively annotated @WorkerThread and is modeled or annotated @UIThread or equivalent?
val is_android_lifecycle_method : IR.Tenv.t -> IR.Procname.t -> boolis method a known Android UI thread callback (eg Activity.onCreate)