From 88d5f4b9adb5e571ec4e4fac5db92e4d4477cbde Mon Sep 17 00:00:00 2001 From: Sungkeun Cho Date: Wed, 19 Aug 2020 08:53:34 -0700 Subject: [PATCH] [Cost] Add cost model of binary search Reviewed By: roro47 Differential Revision: D23166426 fbshipit-source-id: 8a8ac9d69 --- infer/src/absint/PatternMatch.ml | 2 ++ infer/src/absint/PatternMatch.mli | 3 +++ infer/src/cost/costModels.ml | 5 ++++- 3 files changed, 9 insertions(+), 1 deletion(-) diff --git a/infer/src/absint/PatternMatch.ml b/infer/src/absint/PatternMatch.ml index 49d58c4b6..c1812891e 100644 --- a/infer/src/absint/PatternMatch.ml +++ b/infer/src/absint/PatternMatch.ml @@ -171,6 +171,8 @@ module Java = struct let implements_psi_element = implements "com.intellij.psi.PsiElement" + let implements_sparse_float_array = implements "com.facebook.litho.internal.SparseFloatArray" + let implements_view_group = implements "android.view.ViewGroup" let implements_view_parent = implements "android.view.ViewParent" diff --git a/infer/src/absint/PatternMatch.mli b/infer/src/absint/PatternMatch.mli index 8ab0ba4b8..f78fe9c60 100644 --- a/infer/src/absint/PatternMatch.mli +++ b/infer/src/absint/PatternMatch.mli @@ -104,6 +104,9 @@ module Java : sig val implements_psi_element : Tenv.t -> string -> bool (** Check whether class implements a class of [com.intellij.psi.PsiElement] *) + val implements_sparse_float_array : Tenv.t -> string -> bool + (** Check whether class implements a class of [com.facebook.litho.internal.SparseFloatArray] *) + val implements_view_group : Tenv.t -> string -> bool (** Check whether class implements a class of [android.view.ViewGroup] *) diff --git a/infer/src/cost/costModels.ml b/infer/src/cost/costModels.ml index 72fc71bf3..f269621af 100644 --- a/infer/src/cost/costModels.ml +++ b/infer/src/cost/costModels.ml @@ -302,7 +302,10 @@ module Call = struct &:: "construct" <>$ capt_exp_of_prim_typ int_typ $+...$--> ImmutableSet.construct ; +PatternMatch.Java.implements_google "common.collect.ImmutableSet" &:: "construct" <>$ any_arg $+ capt_exp_of_prim_typ int_typ - $+...$--> ImmutableSet.construct ] + $+...$--> ImmutableSet.construct + ; +PatternMatch.Java.implements_sparse_float_array + &:: "binarySearch" <>$ any_arg $+ capt_exp_of_prim_typ int_typ + $+...$--> log ~of_function:"binarySearch" ] in merge_dispatchers dispatcher FbCostModels.Call.dispatch end