Add address lookup table program (backport #21616) (#21789)

* Add address lookup table program (#21616)

* Add address lookup table program

* feedback

(cherry picked from commit 9b41ddd9ba)

# Conflicts:
#	runtime/Cargo.toml

* resolve conflicts

Co-authored-by: Justin Starry <justin@solana.com>
This commit is contained in:
mergify[bot]
2021-12-11 05:26:46 +00:00
committed by GitHub
parent 7782d34bbf
commit 5bf4445ae6
21 changed files with 1665 additions and 4 deletions

View File

@ -25,6 +25,9 @@ impl SlotHashes {
}
(self.0).truncate(MAX_ENTRIES);
}
pub fn position(&self, slot: &Slot) -> Option<usize> {
self.binary_search_by(|(probe, _)| slot.cmp(probe)).ok()
}
#[allow(clippy::trivially_copy_pass_by_ref)]
pub fn get(&self, slot: &Slot) -> Option<&Hash> {
self.binary_search_by(|(probe, _)| slot.cmp(probe))

View File

@ -103,6 +103,7 @@ pub trait WritableAccount: ReadableAccount {
);
Ok(())
}
fn data_mut(&mut self) -> &mut Vec<u8>;
fn data_as_mut_slice(&mut self) -> &mut [u8];
fn set_owner(&mut self, owner: Pubkey);
fn copy_into_owner_from_slice(&mut self, source: &[u8]);
@ -156,6 +157,9 @@ impl WritableAccount for Account {
fn set_lamports(&mut self, lamports: u64) {
self.lamports = lamports;
}
fn data_mut(&mut self) -> &mut Vec<u8> {
&mut self.data
}
fn data_as_mut_slice(&mut self) -> &mut [u8] {
&mut self.data
}
@ -192,9 +196,11 @@ impl WritableAccount for AccountSharedData {
fn set_lamports(&mut self, lamports: u64) {
self.lamports = lamports;
}
fn data_mut(&mut self) -> &mut Vec<u8> {
Arc::make_mut(&mut self.data)
}
fn data_as_mut_slice(&mut self) -> &mut [u8] {
let data = Arc::make_mut(&mut self.data);
&mut data[..]
&mut self.data_mut()[..]
}
fn set_owner(&mut self, owner: Pubkey) {
self.owner = owner;