light_program_profiler/
lib.rs

1#![allow(unused_variables)]
2pub use light_profiler_macro::profile;
3
4#[inline(always)]
5pub fn log_compute_units_start(id: &str, id_len: u64) {
6    #[cfg(target_os = "solana")]
7    unsafe {
8        sol_log_compute_units_start(id.as_ptr() as u64, id_len, 0, 0, 0);
9    }
10}
11
12#[inline(always)]
13pub fn log_compute_units_end(id: &str, id_len: u64) {
14    #[cfg(target_os = "solana")]
15    unsafe {
16        sol_log_compute_units_end(id.as_ptr() as u64, id_len, 0, 0, 0);
17    }
18}
19
20#[cfg(feature = "profile-heap")]
21pub fn log_compute_units_start_with_heap(id: &str, id_len: u64, heap_value: u64) {
22    #[cfg(target_os = "solana")]
23    unsafe {
24        sol_log_compute_units_start(id.as_ptr() as u64, id_len, heap_value, 1, 0);
25    }
26}
27
28#[cfg(feature = "profile-heap")]
29pub fn log_compute_units_end_with_heap(id: &str, id_len: u64, heap_value: u64) {
30    #[cfg(target_os = "solana")]
31    unsafe {
32        sol_log_compute_units_end(id.as_ptr() as u64, id_len, heap_value, 1, 0);
33    }
34}
35
36#[cfg(target_os = "solana")]
37unsafe extern "C" {
38    fn sol_log_compute_units_start(
39        id_addr: u64,
40        id_len: u64,
41        heap_value: u64,
42        with_heap: u64,
43        _arg5: u64,
44    );
45}
46
47#[cfg(target_os = "solana")]
48unsafe extern "C" {
49
50    fn sol_log_compute_units_end(
51        id_addr: u64,
52        id_len: u64,
53        heap_value: u64,
54        with_heap: u64,
55        _arg5: u64,
56    );
57}