update timings only on outer call (#16275)

* update timings only on outer call

* test & format
This commit is contained in:
Jeff Washington (jwash)
2021-03-31 18:02:59 -05:00
committed by GitHub
parent c723251575
commit 416312b30b
2 changed files with 28 additions and 13 deletions

View File

@ -24,7 +24,8 @@ fn bench_verify_account_changes_data(bencher: &mut Bencher) {
false, false,
&Rent::default(), &Rent::default(),
&post, &post,
&mut ExecuteDetailsTimings::default() &mut ExecuteDetailsTimings::default(),
false,
), ),
Ok(()) Ok(())
); );
@ -37,6 +38,7 @@ fn bench_verify_account_changes_data(bencher: &mut Bencher) {
&Rent::default(), &Rent::default(),
&post, &post,
&mut ExecuteDetailsTimings::default(), &mut ExecuteDetailsTimings::default(),
false,
) )
.unwrap(); .unwrap();
}); });
@ -60,6 +62,7 @@ fn bench_verify_account_changes_data(bencher: &mut Bencher) {
&Rent::default(), &Rent::default(),
&post, &post,
&mut ExecuteDetailsTimings::default(), &mut ExecuteDetailsTimings::default(),
false,
) )
.unwrap(); .unwrap();
}); });

View File

@ -104,6 +104,7 @@ impl PreAccount {
rent: &Rent, rent: &Rent,
post: &AccountSharedData, post: &AccountSharedData,
timings: &mut ExecuteDetailsTimings, timings: &mut ExecuteDetailsTimings,
outermost_call: bool,
) -> Result<(), InstructionError> { ) -> Result<(), InstructionError> {
let pre = self.account.borrow(); let pre = self.account.borrow();
@ -186,6 +187,7 @@ impl PreAccount {
return Err(InstructionError::RentEpochModified); return Err(InstructionError::RentEpochModified);
} }
if outermost_call {
timings.total_account_count += 1; timings.total_account_count += 1;
timings.total_data_size += post.data().len(); timings.total_data_size += post.data().len();
if owner_changed if owner_changed
@ -198,6 +200,7 @@ impl PreAccount {
timings.changed_account_count += 1; timings.changed_account_count += 1;
timings.data_size_changed += post.data().len(); timings.data_size_changed += post.data().len();
} }
}
Ok(()) Ok(())
} }
@ -942,6 +945,7 @@ impl MessageProcessor {
rent, rent,
&account, &account,
timings, timings,
true,
)?; )?;
pre_sum += u128::from(pre_accounts[unique_index].lamports()); pre_sum += u128::from(pre_accounts[unique_index].lamports());
post_sum += u128::from(account.lamports); post_sum += u128::from(account.lamports);
@ -990,7 +994,14 @@ impl MessageProcessor {
.map_err(|_| InstructionError::AccountBorrowOutstanding)?; .map_err(|_| InstructionError::AccountBorrowOutstanding)?;
} }
let account = account.borrow(); let account = account.borrow();
pre_account.verify(&program_id, is_writable, &rent, &account, timings)?; pre_account.verify(
&program_id,
is_writable,
&rent,
&account,
timings,
false,
)?;
pre_sum += u128::from(pre_account.lamports()); pre_sum += u128::from(pre_account.lamports());
post_sum += u128::from(account.lamports); post_sum += u128::from(account.lamports);
if is_writable && !account.executable { if is_writable && !account.executable {
@ -1360,6 +1371,7 @@ mod tests {
&self.rent, &self.rent,
&self.post, &self.post,
&mut ExecuteDetailsTimings::default(), &mut ExecuteDetailsTimings::default(),
false,
) )
} }
} }