pub struct LoadedPrograms {
pub latest_root_slot: Slot,
pub latest_root_epoch: Epoch,
pub environments: ProgramRuntimeEnvironments,
pub stats: Stats,
/* private fields */
}Fields§
§latest_root_slot: SlotThe slot of the last rerooting
latest_root_epoch: EpochThe epoch of the last rerooting
environments: ProgramRuntimeEnvironmentsEnvironments of the current epoch
stats: StatsImplementations§
source§impl LoadedPrograms
impl LoadedPrograms
sourcepub fn get_environments_for_epoch(
&self,
_epoch: Epoch
) -> &ProgramRuntimeEnvironments
pub fn get_environments_for_epoch( &self, _epoch: Epoch ) -> &ProgramRuntimeEnvironments
Returns the current environments depending on the given epoch
sourcepub fn replenish(
&mut self,
key: Pubkey,
entry: Arc<LoadedProgram>
) -> (bool, Arc<LoadedProgram>)
pub fn replenish( &mut self, key: Pubkey, entry: Arc<LoadedProgram> ) -> (bool, Arc<LoadedProgram>)
Refill the cache with a single entry. It’s typically called during transaction loading,
when the cache doesn’t contain the entry corresponding to program key.
The function dedupes the cache, in case some other thread replenished the entry in parallel.
sourcepub fn assign_program(
&mut self,
key: Pubkey,
entry: Arc<LoadedProgram>
) -> Arc<LoadedProgram>
pub fn assign_program( &mut self, key: Pubkey, entry: Arc<LoadedProgram> ) -> Arc<LoadedProgram>
Assign the program entry to the given key in the cache.
This is typically called when a deployed program is managed (un-/re-/deployed) via
loader instructions. Because of the cooldown, entires can not have the same
deployment_slot and effective_slot.
sourcepub fn prune_feature_set_transition(&mut self)
pub fn prune_feature_set_transition(&mut self)
On the epoch boundary this removes all programs of the outdated feature set
pub fn prune_by_deployment_slot(&mut self, slot: Slot)
sourcepub fn prune<F: ForkGraph>(
&mut self,
fork_graph: &F,
new_root_slot: Slot,
new_root_epoch: Epoch
)
pub fn prune<F: ForkGraph>( &mut self, fork_graph: &F, new_root_slot: Slot, new_root_epoch: Epoch )
Before rerooting the blockstore this removes all superfluous entries
sourcepub fn extract<S: WorkingSlot>(
&self,
working_slot: &S,
keys: impl Iterator<Item = (Pubkey, (LoadedProgramMatchCriteria, u64))>
) -> ExtractedPrograms
pub fn extract<S: WorkingSlot>( &self, working_slot: &S, keys: impl Iterator<Item = (Pubkey, (LoadedProgramMatchCriteria, u64))> ) -> ExtractedPrograms
Extracts a subset of the programs relevant to a transaction batch and returns which program accounts the accounts DB needs to load.
pub fn merge(&mut self, tx_batch_cache: &LoadedProgramsForTxBatch)
sourcepub fn get_entries_sorted_by_tx_usage(
&self,
include_program_runtime_v1: bool,
include_program_runtime_v2: bool
) -> Vec<(Pubkey, Arc<LoadedProgram>)>
pub fn get_entries_sorted_by_tx_usage( &self, include_program_runtime_v1: bool, include_program_runtime_v2: bool ) -> Vec<(Pubkey, Arc<LoadedProgram>)>
Returns the list of loaded programs which are verified and compiled sorted by tx_usage_counter.
Entries from program runtime v1 and v2 can be individually filtered.
sourcepub fn sort_and_unload(&mut self, shrink_to: PercentageInteger)
pub fn sort_and_unload(&mut self, shrink_to: PercentageInteger)
Unloads programs which were used infrequently
sourcepub fn remove_programs(&mut self, keys: impl Iterator<Item = Pubkey>)
pub fn remove_programs(&mut self, keys: impl Iterator<Item = Pubkey>)
Removes all the entries at the given keys, if they exist