pub struct ProgramCacheForTx<'a> {
pub environments: &'a ProgramRuntimeEnvironments,
pub upcoming_environments: &'a Option<ProgramRuntimeEnvironments>,
pub latest_root_epoch: Epoch,
pub hit_max_limit: bool,
pub loaded_missing: bool,
pub merged_modified: bool,
/* private fields */
}Expand description
Program cache for a transaction.
This is a per-transaction view of the program cache of the entire transaction batch.
Sole purpose is performance improvement as the cache holds a reference to the batch’s cache.
Fields§
§environments: &'a ProgramRuntimeEnvironments§upcoming_environments: &'a Option<ProgramRuntimeEnvironments>Anticipated replacement for environments at the next epoch.
This is None during most of an epoch, and only Some around the boundaries (at the end and beginning of an epoch).
More precisely, it starts with the cache preparation phase a few hundred slots before the epoch boundary,
and it ends with the first rerooting after the epoch boundary.
Needed when a program is deployed at the last slot of an epoch, becomes effective in the next epoch.
So needs to be compiled with the environment for the next epoch.
latest_root_epoch: EpochThe epoch of the last rerooting
hit_max_limit: bool§loaded_missing: bool§merged_modified: boolImplementations§
Source§impl<'a> ProgramCacheForTx<'a>
impl<'a> ProgramCacheForTx<'a>
pub fn from_cache(cache: &'a ProgramCacheForTxBatch) -> Self
pub fn get_environments_for_epoch( &self, epoch: Epoch, ) -> &ProgramRuntimeEnvironments
Sourcepub fn store_modified_entry(
&mut self,
key: Pubkey,
entry: Arc<ProgramCacheEntry>,
)
pub fn store_modified_entry( &mut self, key: Pubkey, entry: Arc<ProgramCacheEntry>, )
Store an entry in modified_entries for a program modified during the
transaction batch.
Sourcepub fn drain_modified_entries(
&mut self,
) -> HashMap<Pubkey, Arc<ProgramCacheEntry>>
pub fn drain_modified_entries( &mut self, ) -> HashMap<Pubkey, Arc<ProgramCacheEntry>>
Drain the program cache’s modified entries, returning the owned collection.
pub fn find(&self, key: &Pubkey) -> Option<Arc<ProgramCacheEntry>>
pub fn slot(&self) -> Slot
pub fn set_slot_for_tests(&mut self, slot: Slot)
pub fn is_empty(&self) -> bool
Auto Trait Implementations§
impl<'a> Freeze for ProgramCacheForTx<'a>
impl<'a> RefUnwindSafe for ProgramCacheForTx<'a>
impl<'a> Send for ProgramCacheForTx<'a>
impl<'a> Sync for ProgramCacheForTx<'a>
impl<'a> Unpin for ProgramCacheForTx<'a>
impl<'a> UnsafeUnpin for ProgramCacheForTx<'a>
impl<'a> UnwindSafe for ProgramCacheForTx<'a>
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more