use super::*; fn get_sysvar( sysvar: Result, InstructionError>, var_addr: u64, check_aligned: bool, memory_mapping: &mut MemoryMapping, invoke_context: &mut InvokeContext, ) -> Result { consume_compute_meter( invoke_context, invoke_context .get_compute_budget() .sysvar_base_cost .saturating_add(size_of::() as u64), )?; let var = translate_type_mut::(memory_mapping, var_addr, check_aligned)?; let sysvar: Arc = sysvar?; *var = T::clone(sysvar.as_ref()); Ok(SUCCESS) } declare_builtin_function!( /// Get a Clock sysvar SyscallGetClockSysvar, fn rust( invoke_context: &mut InvokeContext, var_addr: u64, _arg2: u64, _arg3: u64, _arg4: u64, _arg5: u64, memory_mapping: &mut MemoryMapping, ) -> Result { get_sysvar( invoke_context.get_sysvar_cache().get_clock(), var_addr, invoke_context.get_check_aligned(), memory_mapping, invoke_context, ) } ); declare_builtin_function!( /// Get a EpochSchedule sysvar SyscallGetEpochScheduleSysvar, fn rust( invoke_context: &mut InvokeContext, var_addr: u64, _arg2: u64, _arg3: u64, _arg4: u64, _arg5: u64, memory_mapping: &mut MemoryMapping, ) -> Result { get_sysvar( invoke_context.get_sysvar_cache().get_epoch_schedule(), var_addr, invoke_context.get_check_aligned(), memory_mapping, invoke_context, ) } ); declare_builtin_function!( /// Get a EpochRewards sysvar SyscallGetEpochRewardsSysvar, fn rust( invoke_context: &mut InvokeContext, var_addr: u64, _arg2: u64, _arg3: u64, _arg4: u64, _arg5: u64, memory_mapping: &mut MemoryMapping, ) -> Result { get_sysvar( invoke_context.get_sysvar_cache().get_epoch_rewards(), var_addr, invoke_context.get_check_aligned(), memory_mapping, invoke_context, ) } ); declare_builtin_function!( /// Get a Fees sysvar SyscallGetFeesSysvar, fn rust( invoke_context: &mut InvokeContext, var_addr: u64, _arg2: u64, _arg3: u64, _arg4: u64, _arg5: u64, memory_mapping: &mut MemoryMapping, ) -> Result { #[allow(deprecated)] { get_sysvar( invoke_context.get_sysvar_cache().get_fees(), var_addr, invoke_context.get_check_aligned(), memory_mapping, invoke_context, ) } } ); declare_builtin_function!( /// Get a Rent sysvar SyscallGetRentSysvar, fn rust( invoke_context: &mut InvokeContext, var_addr: u64, _arg2: u64, _arg3: u64, _arg4: u64, _arg5: u64, memory_mapping: &mut MemoryMapping, ) -> Result { get_sysvar( invoke_context.get_sysvar_cache().get_rent(), var_addr, invoke_context.get_check_aligned(), memory_mapping, invoke_context, ) } ); declare_builtin_function!( /// Get a Last Restart Slot sysvar SyscallGetLastRestartSlotSysvar, fn rust( invoke_context: &mut InvokeContext, var_addr: u64, _arg2: u64, _arg3: u64, _arg4: u64, _arg5: u64, memory_mapping: &mut MemoryMapping, ) -> Result { get_sysvar( invoke_context.get_sysvar_cache().get_last_restart_slot(), var_addr, invoke_context.get_check_aligned(), memory_mapping, invoke_context, ) } );