Fixes the calculation of the "compute_meter_consumption" across process_instruction() and process_message(). (#21944) (#21945)

(cherry picked from commit 49cb161203)

Co-authored-by: Alexander Meißner <AlexanderMeissner@gmx.net>
This commit is contained in:
mergify[bot]
2021-12-16 16:28:28 +00:00
committed by GitHub
parent bfa6302985
commit 301e38044a
2 changed files with 12 additions and 10 deletions

View File

@ -104,17 +104,15 @@ impl MessageProcessor {
invoke_context.instruction_recorder =
Some(&instruction_recorders[instruction_index]);
}
let pre_remaining_units = invoke_context.get_compute_meter().borrow().get_remaining();
let mut time = Measure::start("execute_instruction");
invoke_context
let compute_meter_consumption = invoke_context
.process_instruction(message, instruction, program_indices, &[], &[])
.map_err(|err| TransactionError::InstructionError(instruction_index as u8, err))?;
time.stop();
let post_remaining_units = invoke_context.get_compute_meter().borrow().get_remaining();
timings.accumulate_program(
instruction.program_id(&message.account_keys),
time.as_us(),
pre_remaining_units - post_remaining_units,
compute_meter_consumption,
);
timings.accumulate(&invoke_context.timings);
}