Cleanup: InvokeContext accessors (#21574)
* Removes blockhash accessors from InvokeContext. * Removes lamports_per_signature accessors from InvokeContext. * Removes return_data accessors from InvokeContext. * Removes feature_set accessor from InvokeContext. * Removes instruction_recorders and instruction_index accessors from InvokeContext. * Moves get_sysvars() into InvokeContext. * Removes compute_meter parameter from InvokeContext::new(). * Removes InvokeContext::new_mock_with_sysvars_and_features(). * Removes InvokeContext::update_timing().
This commit is contained in:
committed by
GitHub
parent
dab0e8fdc7
commit
a9d5ef2055
@@ -91,9 +91,12 @@ pub fn create_executor(
|
||||
stack_frame_size: compute_budget.stack_frame_size,
|
||||
enable_instruction_tracing: log_enabled!(Trace),
|
||||
reject_unresolved_syscalls: reject_unresolved_syscalls
|
||||
&& invoke_context.is_feature_active(&reject_deployment_of_unresolved_syscalls::id()),
|
||||
&& invoke_context
|
||||
.feature_set
|
||||
.is_active(&reject_deployment_of_unresolved_syscalls::id()),
|
||||
verify_mul64_imm_nonzero: !invoke_context
|
||||
.is_feature_active(&stop_verify_mul64_imm_nonzero::id()), // TODO: Feature gate and then remove me
|
||||
.feature_set
|
||||
.is_active(&stop_verify_mul64_imm_nonzero::id()), // TODO: Feature gate and then remove me
|
||||
..Config::default()
|
||||
};
|
||||
let mut executable = {
|
||||
@@ -158,7 +161,10 @@ pub fn create_vm<'a, 'b>(
|
||||
) -> Result<EbpfVm<'a, BpfError, ThisInstructionMeter>, EbpfError<BpfError>> {
|
||||
let compute_budget = invoke_context.get_compute_budget();
|
||||
let heap_size = compute_budget.heap_size.unwrap_or(HEAP_LENGTH);
|
||||
if invoke_context.is_feature_active(&requestable_heap_size::id()) {
|
||||
if invoke_context
|
||||
.feature_set
|
||||
.is_active(&requestable_heap_size::id())
|
||||
{
|
||||
let _ = invoke_context
|
||||
.get_compute_meter()
|
||||
.borrow_mut()
|
||||
@@ -450,8 +456,9 @@ fn process_loader_upgradeable_instruction(
|
||||
return Err(InstructionError::InvalidArgument);
|
||||
}
|
||||
|
||||
let predrain_buffer =
|
||||
invoke_context.is_feature_active(&reduce_required_deploy_balance::id());
|
||||
let predrain_buffer = invoke_context
|
||||
.feature_set
|
||||
.is_active(&reduce_required_deploy_balance::id());
|
||||
if predrain_buffer {
|
||||
// Drain the Buffer account to payer before paying for programdata account
|
||||
payer
|
||||
@@ -1014,7 +1021,7 @@ impl Executor for BpfExecutor {
|
||||
trace!("BPF Program Instruction Trace:\n{}", trace_string);
|
||||
}
|
||||
drop(vm);
|
||||
let (_returned_from_program_id, return_data) = invoke_context.get_return_data();
|
||||
let (_returned_from_program_id, return_data) = &invoke_context.return_data;
|
||||
if !return_data.is_empty() {
|
||||
stable_log::program_return(&log_collector, &program_id, return_data);
|
||||
}
|
||||
@@ -1049,15 +1056,18 @@ impl Executor for BpfExecutor {
|
||||
&keyed_accounts[first_instruction_account + 1..],
|
||||
parameter_bytes.as_slice(),
|
||||
&account_lengths,
|
||||
invoke_context.is_feature_active(&do_support_realloc::id()),
|
||||
invoke_context
|
||||
.feature_set
|
||||
.is_active(&do_support_realloc::id()),
|
||||
)?;
|
||||
deserialize_time.stop();
|
||||
invoke_context.update_timing(
|
||||
serialize_time.as_us(),
|
||||
create_vm_time.as_us(),
|
||||
execute_time.as_us(),
|
||||
deserialize_time.as_us(),
|
||||
);
|
||||
let timings = &mut invoke_context.timings;
|
||||
timings.serialize_us = timings.serialize_us.saturating_add(serialize_time.as_us());
|
||||
timings.create_vm_us = timings.create_vm_us.saturating_add(create_vm_time.as_us());
|
||||
timings.execute_us = timings.execute_us.saturating_add(execute_time.as_us());
|
||||
timings.deserialize_us = timings
|
||||
.deserialize_us
|
||||
.saturating_add(deserialize_time.as_us());
|
||||
stable_log::program_success(&log_collector, &program_id);
|
||||
Ok(())
|
||||
}
|
||||
|
Reference in New Issue
Block a user