From 03f7b251b88a9e2d734d11a25e42f3735ecf909e Mon Sep 17 00:00:00 2001 From: "Jeff Washington (jwash)" <75863576+jeffwashington@users.noreply.github.com> Date: Tue, 20 Apr 2021 16:41:16 -0500 Subject: [PATCH] ReadableAccount.data returns slice (#16686) * ReadAbleAccount.data returns slice * more slice fixup * more slice * slice --- programs/bpf_loader/src/serialization.rs | 12 ++++++------ runtime/benches/append_vec.rs | 8 ++++---- runtime/src/message_processor.rs | 4 ++-- runtime/src/native_loader.rs | 2 +- sdk/src/account.rs | 10 +++++----- 5 files changed, 18 insertions(+), 18 deletions(-) diff --git a/programs/bpf_loader/src/serialization.rs b/programs/bpf_loader/src/serialization.rs index 87185969f..16888702d 100644 --- a/programs/bpf_loader/src/serialization.rs +++ b/programs/bpf_loader/src/serialization.rs @@ -420,7 +420,7 @@ mod tests { assert_eq!(key, *account_info.key); let account = account.borrow(); assert_eq!(account.lamports, account_info.lamports()); - assert_eq!(&account.data()[..], &account_info.data.borrow()[..]); + assert_eq!(account.data(), &account_info.data.borrow()[..]); assert_eq!(&account.owner, account_info.owner); assert_eq!(account.executable, account_info.executable); assert_eq!(account.rent_epoch, account_info.rent_epoch); @@ -466,8 +466,8 @@ mod tests { let account = account.borrow(); assert_eq!(account.lamports, de_keyed_account.lamports().unwrap()); assert_eq!( - &account.data()[..], - &de_keyed_account.try_account_ref().unwrap().data()[..] + account.data(), + de_keyed_account.try_account_ref().unwrap().data() ); assert_eq!(account.owner, de_keyed_account.owner().unwrap()); assert_eq!(account.executable, de_keyed_account.executable().unwrap()); @@ -492,7 +492,7 @@ mod tests { assert_eq!(key, *account_info.key); let account = account.borrow(); assert_eq!(account.lamports, account_info.lamports()); - assert_eq!(&account.data()[..], &account_info.data.borrow()[..]); + assert_eq!(account.data(), &account_info.data.borrow()[..]); assert_eq!(&account.owner, account_info.owner); assert_eq!(account.executable, account_info.executable); assert_eq!(account.rent_epoch, account_info.rent_epoch); @@ -525,8 +525,8 @@ mod tests { let account = account.borrow(); assert_eq!(account.lamports, de_keyed_account.lamports().unwrap()); assert_eq!( - &account.data()[..], - &de_keyed_account.try_account_ref().unwrap().data()[..] + account.data(), + de_keyed_account.try_account_ref().unwrap().data() ); assert_eq!(account.owner, de_keyed_account.owner().unwrap()); assert_eq!(account.executable, de_keyed_account.executable().unwrap()); diff --git a/runtime/benches/append_vec.rs b/runtime/benches/append_vec.rs index 48ba31478..17e7eaf63 100644 --- a/runtime/benches/append_vec.rs +++ b/runtime/benches/append_vec.rs @@ -51,7 +51,7 @@ fn append_vec_sequential_read(bencher: &mut Bencher) { println!("reading pos {} {}", sample, pos); let (account, _next) = vec.get_account(pos).unwrap(); let (_meta, test) = create_test_account(sample); - assert_eq!(account.data, test.data().as_slice()); + assert_eq!(account.data, test.data()); indexes.push((sample, pos)); }); } @@ -66,7 +66,7 @@ fn append_vec_random_read(bencher: &mut Bencher) { let (sample, pos) = &indexes[random_index]; let (account, _next) = vec.get_account(*pos).unwrap(); let (_meta, test) = create_test_account(*sample); - assert_eq!(account.data, test.data().as_slice()); + assert_eq!(account.data, test.data()); }); } @@ -95,7 +95,7 @@ fn append_vec_concurrent_append_read(bencher: &mut Bencher) { let (sample, pos) = *indexes.lock().unwrap().get(random_index).unwrap(); let (account, _next) = vec.get_account(pos).unwrap(); let (_meta, test) = create_test_account(sample); - assert_eq!(account.data, test.data().as_slice()); + assert_eq!(account.data, test.data()); }); } @@ -115,7 +115,7 @@ fn append_vec_concurrent_read_append(bencher: &mut Bencher) { let (sample, pos) = *indexes1.lock().unwrap().get(random_index % len).unwrap(); let (account, _next) = vec1.get_account(pos).unwrap(); let (_meta, test) = create_test_account(sample); - assert_eq!(account.data, test.data().as_slice()); + assert_eq!(account.data, test.data()); }); bencher.iter(|| { let sample: usize = thread_rng().gen_range(0, 256); diff --git a/runtime/src/message_processor.rs b/runtime/src/message_processor.rs index 8f774cfa7..9c747f642 100644 --- a/runtime/src/message_processor.rs +++ b/runtime/src/message_processor.rs @@ -520,7 +520,7 @@ impl<'a> InvokeContext for ThisInvokeContext<'a> { result = self .account_db .load_with_fixed_root(self.ancestors, id) - .map(|(account, _)| Rc::new(account.data().clone())); + .map(|(account, _)| Rc::new(account.data().to_vec())); // Cache it self.sysvars.push((*id, result.clone())); } @@ -919,7 +919,7 @@ impl MessageProcessor { dst_keyed_account.try_account_ref_mut()?.owner = src_keyed_account.owner; dst_keyed_account .try_account_ref_mut()? - .set_data(src_keyed_account.data().clone()); + .set_data(src_keyed_account.data().to_vec()); } } } diff --git a/runtime/src/native_loader.rs b/runtime/src/native_loader.rs index 9b810ef9d..0e51a0f8b 100644 --- a/runtime/src/native_loader.rs +++ b/runtime/src/native_loader.rs @@ -154,7 +154,7 @@ impl NativeLoader { // still exists even after invoke_context.remove_first_keyed_account() is called ( *program.unsigned_key(), - &program.try_account_ref()?.data().clone(), + &program.try_account_ref()?.data().to_vec(), ) }; diff --git a/sdk/src/account.rs b/sdk/src/account.rs index 33c02d341..0261ed2de 100644 --- a/sdk/src/account.rs +++ b/sdk/src/account.rs @@ -94,7 +94,7 @@ pub trait WritableAccount: ReadableAccount { pub trait ReadableAccount: Sized { fn lamports(&self) -> u64; - fn data(&self) -> &Vec; + fn data(&self) -> &[u8]; fn owner(&self) -> &Pubkey; fn executable(&self) -> bool; fn rent_epoch(&self) -> Epoch; @@ -104,7 +104,7 @@ impl ReadableAccount for Account { fn lamports(&self) -> u64 { self.lamports } - fn data(&self) -> &Vec { + fn data(&self) -> &[u8] { &self.data } fn owner(&self) -> &Pubkey { @@ -189,7 +189,7 @@ impl ReadableAccount for AccountSharedData { fn lamports(&self) -> u64 { self.lamports } - fn data(&self) -> &Vec { + fn data(&self) -> &[u8] { &self.data } fn owner(&self) -> &Pubkey { @@ -207,7 +207,7 @@ impl ReadableAccount for Ref<'_, AccountSharedData> { fn lamports(&self) -> u64 { self.lamports } - fn data(&self) -> &Vec { + fn data(&self) -> &[u8] { &self.data } fn owner(&self) -> &Pubkey { @@ -225,7 +225,7 @@ impl ReadableAccount for Ref<'_, Account> { fn lamports(&self) -> u64 { self.lamports } - fn data(&self) -> &Vec { + fn data(&self) -> &[u8] { &self.data } fn owner(&self) -> &Pubkey {