trace building blocks: sources and sinks

Reviewed By: jberdine

Differential Revision: D3684221

fbshipit-source-id: fe6917f
master
Sam Blackshear 9 years ago committed by Facebook Github Bot 2
parent 185f6493bc
commit 36e2175293

@ -0,0 +1,36 @@
(*
* Copyright (c) 2016 - present Facebook, Inc.
* All rights reserved.
*
* This source code is licensed under the BSD style license found in the
* LICENSE file in the root directory of this source tree. An additional grant
* of patent rights can be found in the PATENTS file in the same directory.
*)
open! Utils
module F = Format
(* for now this is just a call site, but in the future we may add input access path, output kind,
etc. depending on what we need *)
type t =
{
site : CallSite.t;
}
let make site =
{ site }
let compare pt1 pt2 =
(match pt1, pt2 with
| {site=site1}, {site=site2} -> CallSite.compare site1 site2
)[@warning "+9"]
let pp fmt s =
F.fprintf fmt "%a" CallSite.pp s.site
module Set = PrettyPrintable.MakePPSet(struct
type nonrec t = t
let compare = compare
let pp_element = pp
end)

@ -0,0 +1,20 @@
(*
* Copyright (c) 2016 - present Facebook, Inc.
* All rights reserved.
*
* This source code is licensed under the BSD style license found in the
* LICENSE file in the root directory of this source tree. An additional grant
* of patent rights can be found in the PATENTS file in the same directory.
*)
module F = Format
type t
val make : CallSite.t -> t
val compare : t -> t -> int
val pp : F.formatter -> t -> unit
module Set : PrettyPrintable.PPSet with type elt = t

@ -0,0 +1,16 @@
(*
* Copyright (c) 2016 - present Facebook, Inc.
* All rights reserved.
*
* This source code is licensed under the BSD style license found in the
* LICENSE file in the root directory of this source tree. An additional grant
* of patent rights can be found in the PATENTS file in the same directory.
*)
module type S = sig
include TraceElem.S
val to_callee : t -> CallSite.t -> t
(** ith param * ith source kind *)
val get : CallSite.t -> (int * t) list
end

@ -0,0 +1,19 @@
(*
* Copyright (c) 2016 - present Facebook, Inc.
* All rights reserved.
*
* This source code is licensed under the BSD style license found in the
* LICENSE file in the root directory of this source tree. An additional grant
* of patent rights can be found in the PATENTS file in the same directory.
*)
module type S = sig
include TraceElem.S
val is_footprint : t -> bool
val to_return : t -> CallSite.t -> t
val make_footprint : CallSite.t -> t
(** ith return value * ith sink kind *)
val get : CallSite.t -> (int * t) list
end

@ -0,0 +1,26 @@
(*
* Copyright (c) 2016 - present Facebook, Inc.
* All rights reserved.
*
* This source code is licensed under the BSD style license found in the
* LICENSE file in the root directory of this source tree. An additional grant
* of patent rights can be found in the PATENTS file in the same directory.
*)
module F = Format
module type S = sig
type kind
type t
val call_site : t -> CallSite.t
val kind : t -> kind
val is_empty : t -> bool
val make : kind -> CallSite.t -> t
val make_empty : CallSite.t -> t
val compare : t -> t -> int
val equal : t -> t -> bool
val pp : F.formatter -> t -> unit
end
Loading…
Cancel
Save