diff --git a/runtime/src/bank.rs b/runtime/src/bank.rs index cfcd32ef7ff456..a00dc18a9c7e9d 100644 --- a/runtime/src/bank.rs +++ b/runtime/src/bank.rs @@ -4683,7 +4683,6 @@ impl Bank { recording_config, timings, account_overrides, - self.builtin_program_ids.iter(), log_messages_bytes_limit, limit_to_load_programs, ); @@ -7689,6 +7688,10 @@ impl TransactionProcessingCallback for Bank { } } + fn get_builtin_program_ids(&self) -> Vec { + self.builtin_program_ids.iter().copied().collect() + } + fn get_program_match_criteria(&self, program: &Pubkey) -> LoadedProgramMatchCriteria { if self.check_program_modification_slot { self.transaction_processor diff --git a/svm/src/transaction_processor.rs b/svm/src/transaction_processor.rs index 5426cf0fce9b16..a367a5474aab9c 100644 --- a/svm/src/transaction_processor.rs +++ b/svm/src/transaction_processor.rs @@ -104,6 +104,10 @@ pub trait TransactionProcessingCallback { Ok(()) } + fn get_builtin_program_ids(&self) -> Vec { + vec![] + } + fn get_program_match_criteria(&self, _program: &Pubkey) -> LoadedProgramMatchCriteria { LoadedProgramMatchCriteria::NoCriteria } @@ -206,7 +210,6 @@ impl TransactionBatchProcessor { recording_config: ExecutionRecordingConfig, timings: &mut ExecuteTimings, account_overrides: Option<&AccountOverrides>, - builtin_programs: impl Iterator, log_messages_bytes_limit: Option, limit_to_load_programs: bool, ) -> LoadAndExecuteSanitizedTransactionsOutput { @@ -217,8 +220,8 @@ impl TransactionBatchProcessor { PROGRAM_OWNERS, ); let native_loader = native_loader::id(); - for builtin_program in builtin_programs { - program_accounts_map.insert(*builtin_program, (&native_loader, 0)); + for builtin_program in callbacks.get_builtin_program_ids() { + program_accounts_map.insert(builtin_program, (&native_loader, 0)); } let programs_loaded_for_tx_batch = Rc::new(RefCell::new(self.replenish_program_cache(