Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

wip: support frame API #3

Draft
wants to merge 2 commits into
base: main
Choose a base branch
from
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
17 changes: 17 additions & 0 deletions src/bindings/tracy_client.ml
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,11 @@ external _tracy_span_value : span -> int64 -> unit = "ml_tracy_span_value"
external _tracy_span_color : span -> int -> unit = "ml_tracy_span_color"
[@@noalloc]

external _tracy_frame_enter : string -> unit = "ml_tracy_frame_enter"
[@@noalloc]

external _tracy_frame_exit : string -> unit = "ml_tracy_frame_exit" [@@noalloc]

let enter ?cs_depth ~__FILE__:file ~__LINE__:line ?(__FUNCTION__ = "<fun>") name
: span =
let depth =
Expand All @@ -46,6 +51,18 @@ let add_text = _tracy_span_text
let set_app_info = _tracy_app_info
let message_f k = k (fun fmt -> Format.kasprintf message fmt)
let add_text_f sp k = k (fun fmt -> Format.kasprintf (add_text sp) fmt)
let enter_frame = _tracy_frame_enter
let exit_frame = _tracy_frame_exit

let[@inline] with_frame name f =
enter_frame name;
try
let x = f () in
exit_frame name;
x
with e ->
exit_frame name;
raise e

let[@inline] with_ ?cs_depth ~__FILE__ ~__LINE__ ?__FUNCTION__ name f =
let _sp = enter ?cs_depth ~__FILE__ ~__LINE__ ?__FUNCTION__ name in
Expand Down
12 changes: 12 additions & 0 deletions src/bindings/tracy_client.mli
Original file line number Diff line number Diff line change
Expand Up @@ -68,4 +68,16 @@ val message_f :
(** Send a formatted message.
Usage: [message_f (fun k -> k "hello %s %d" "world" 42)] *)

val enter_frame : string -> unit
(** Enter named frame.
@since NEXT_RELEASE *)

val exit_frame : string -> unit
(** Exit named frame.
@since NEXT_RELEASE *)

val with_frame : string -> (unit -> 'a) -> 'a
(** Protected enter+exit frame
@since NEXT_RELEASE *)

val plot : string -> float -> unit
15 changes: 15 additions & 0 deletions src/bindings/tracy_stubs.cc
Original file line number Diff line number Diff line change
Expand Up @@ -156,4 +156,19 @@ CAMLprim value ml_tracy_plot(value name, value x) {

CAMLreturn(Val_unit);
}

CAMLprim value ml_tracy_frame_enter(value name) {
char const *c_name = String_val(name);
TracyCFrameMarkStart(c_name);
return Val_unit;
}

CAMLprim value ml_tracy_frame_exit(value name) {
char const *c_name = String_val(name);
TracyCFrameMarkEnd(c_name);
return Val_unit;
}


} // extern "C"

2 changes: 2 additions & 0 deletions src/trace/tracy_client_trace.ml
Original file line number Diff line number Diff line change
Expand Up @@ -39,6 +39,8 @@ module C () : Trace.Collector.S = struct
let shutdown () = ()
let add_data_to_span _ _ = ()
let add_data_to_manual_span _ _ = ()
let enter_context name = Tracy_client.enter_frame name
let exit_context name = Tracy_client.exit_frame name

let enter_manual_span ~parent:_ ~flavor:_ ~__FUNCTION__:_ ~__FILE__:_
~__LINE__:_ ~data:_ _name : explicit_span =
Expand Down
Loading