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
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
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,
&Rent::default(),
&post,
&mut ExecuteDetailsTimings::default()
&mut ExecuteDetailsTimings::default(),
false,
),
Ok(())
);
@ -37,6 +38,7 @@ fn bench_verify_account_changes_data(bencher: &mut Bencher) {
&Rent::default(),
&post,
&mut ExecuteDetailsTimings::default(),
false,
)
.unwrap();
});
@ -60,6 +62,7 @@ fn bench_verify_account_changes_data(bencher: &mut Bencher) {
&Rent::default(),
&post,
&mut ExecuteDetailsTimings::default(),
false,
)
.unwrap();
});

View File

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