Add sol_log_compute_units syscall

This commit is contained in:
Michael Vines
2020-10-28 12:39:48 -07:00
parent 33884d847a
commit 66e51a7363
7 changed files with 79 additions and 0 deletions

View File

@ -96,3 +96,19 @@ pub fn sol_log_params(accounts: &[AccountInfo], data: &[u8]) {
info!("Instruction data");
sol_log_slice(data);
}
/// Logs the current compute unit consumption
#[inline]
pub fn sol_log_compute_units() {
#[cfg(target_arch = "bpf")]
unsafe {
sol_log_compute_units_();
}
#[cfg(not(target_arch = "bpf"))]
crate::program_stubs::sol_log_compute_units();
}
#[cfg(target_arch = "bpf")]
extern "C" {
fn sol_log_compute_units_();
}

View File

@ -19,6 +19,9 @@ pub trait SyscallStubs: Sync + Send {
fn sol_log(&self, message: &str) {
println!("{}", message);
}
fn sol_log_compute_units(&self) {
sol_log("SyscallStubs: sol_log_compute_units() not available");
}
fn sol_invoke_signed(
&self,
_instruction: &Instruction,
@ -41,6 +44,10 @@ pub(crate) fn sol_log_64(arg1: u64, arg2: u64, arg3: u64, arg4: u64, arg5: u64)
sol_log(&format!("{} {} {} {} {}", arg1, arg2, arg3, arg4, arg5));
}
pub(crate) fn sol_log_compute_units() {
SYSCALL_STUBS.read().unwrap().sol_log_compute_units();
}
pub(crate) fn sol_invoke_signed(
instruction: &Instruction,
account_infos: &[AccountInfo],