[starvation] MayBlock and StrictModelCall events should take procname, not string

Summary: Change `MayBlock` and `StrictModeCall` constructors from taking a string to a `Procname.t`, which was the sole source of that string anyway.

Reviewed By: ezgicicek

Differential Revision: D19465226

fbshipit-source-id: e3ed6ef88
master
Nikos Gorogiannis 5 years ago committed by Facebook Github Bot
parent 5ba13ae6a0
commit 895ac9c41c

@ -630,13 +630,13 @@ let report_on_parallel_composition ~should_report_starvation tenv pdesc pair loc
if CriticalPair.can_run_in_parallel pair other_pair then if CriticalPair.can_run_in_parallel pair other_pair then
let acquisitions = other_pair.CriticalPair.elem.acquisitions in let acquisitions = other_pair.CriticalPair.elem.acquisitions in
match other_pair.CriticalPair.elem.event with match other_pair.CriticalPair.elem.event with
| MayBlock (block_descr, sev) | MayBlock (_, sev) as event
when should_report_starvation && Acquisitions.lock_is_held_in_other_thread lock acquisitions when should_report_starvation && Acquisitions.lock_is_held_in_other_thread lock acquisitions
-> ->
let error_message = let error_message =
Format.asprintf Format.asprintf
"Method %a runs on UI thread and%a, which may be held by another thread which %s." "Method %a runs on UI thread and%a, which may be held by another thread which %a."
pname_pp pname Lock.pp_locks lock block_descr pname_pp pname Lock.pp_locks lock Event.describe event
in in
let ltr, loc = make_trace_and_loc () in let ltr, loc = make_trace_and_loc () in
ReportMap.add_starvation sev tenv pdesc loc ltr error_message report_map ReportMap.add_starvation sev tenv pdesc loc ltr error_message report_map

@ -208,18 +208,18 @@ end
module Event = struct module Event = struct
type t = type t =
| LockAcquire of Lock.t | LockAcquire of Lock.t
| MayBlock of (string * StarvationModels.severity) | MayBlock of (Procname.t * StarvationModels.severity)
| StrictModeCall of string | StrictModeCall of Procname.t
| MonitorWait of Lock.t | MonitorWait of Lock.t
[@@deriving compare] [@@deriving compare]
let pp fmt = function let pp fmt = function
| LockAcquire lock -> | LockAcquire lock ->
F.fprintf fmt "LockAcquire(%a)" Lock.pp lock F.fprintf fmt "LockAcquire(%a)" Lock.pp lock
| MayBlock (msg, sev) -> | MayBlock (pname, sev) ->
F.fprintf fmt "MayBlock(%s, %a)" msg StarvationModels.pp_severity sev F.fprintf fmt "MayBlock(%a, %a)" Procname.pp pname StarvationModels.pp_severity sev
| StrictModeCall msg -> | StrictModeCall pname ->
F.fprintf fmt "StrictModeCall(%s)" msg F.fprintf fmt "StrictModeCall(%a)" Procname.pp pname
| MonitorWait lock -> | MonitorWait lock ->
F.fprintf fmt "MonitorWait(%a)" Lock.pp lock F.fprintf fmt "MonitorWait(%a)" Lock.pp lock
@ -228,27 +228,17 @@ module Event = struct
match elem with match elem with
| LockAcquire lock -> | LockAcquire lock ->
Lock.pp_locks fmt lock Lock.pp_locks fmt lock
| MayBlock (msg, _) -> | MayBlock (pname, _) | StrictModeCall pname ->
F.pp_print_string fmt msg F.fprintf fmt "calls %a" describe_pname pname
| StrictModeCall msg ->
F.pp_print_string fmt msg
| MonitorWait lock -> | MonitorWait lock ->
F.fprintf fmt "calls `wait` on %a" Lock.describe lock F.fprintf fmt "calls `wait` on %a" Lock.describe lock
let make_acquire lock = LockAcquire lock let make_acquire lock = LockAcquire lock
let make_call_descr callee = F.asprintf "calls %a" describe_pname callee let make_blocking_call callee sev = MayBlock (callee, sev)
let make_blocking_call callee sev =
let descr = make_call_descr callee in
MayBlock (descr, sev)
let make_strict_mode_call callee =
let descr = make_call_descr callee in
StrictModeCall descr
let make_strict_mode_call callee = StrictModeCall callee
let make_object_wait lock = MonitorWait lock let make_object_wait lock = MonitorWait lock
end end

@ -58,8 +58,8 @@ end
module Event : sig module Event : sig
type t = type t =
| LockAcquire of Lock.t | LockAcquire of Lock.t
| MayBlock of (string * StarvationModels.severity) | MayBlock of (Procname.t * StarvationModels.severity)
| StrictModeCall of string | StrictModeCall of Procname.t
| MonitorWait of Lock.t | MonitorWait of Lock.t
[@@deriving compare] [@@deriving compare]

Loading…
Cancel
Save