diff --git a/program-runtime/src/invoke_context.rs b/program-runtime/src/invoke_context.rs index 7a3da76cfa..5b080f30a1 100644 --- a/program-runtime/src/invoke_context.rs +++ b/program-runtime/src/invoke_context.rs @@ -998,27 +998,26 @@ pub fn prepare_mock_invoke_context( pub fn with_mock_invoke_context R>( loader_id: Pubkey, account_size: usize, + is_writable: bool, mut callback: F, ) -> R { let program_indices = vec![0, 1]; + let program_key = Pubkey::new_unique(); let transaction_accounts = vec![ ( loader_id, AccountSharedData::new(0, 0, &native_loader::id()), ), + (program_key, AccountSharedData::new(1, 0, &loader_id)), ( Pubkey::new_unique(), - AccountSharedData::new(1, 0, &loader_id), - ), - ( - Pubkey::new_unique(), - AccountSharedData::new(2, account_size, &Pubkey::new_unique()), + AccountSharedData::new(2, account_size, &program_key), ), ]; let instruction_accounts = vec![AccountMeta { pubkey: transaction_accounts.get(2).unwrap().0, is_signer: false, - is_writable: false, + is_writable, }]; let preparation = prepare_mock_invoke_context(transaction_accounts, instruction_accounts, &program_indices); diff --git a/programs/bpf/benches/bpf_loader.rs b/programs/bpf/benches/bpf_loader.rs index 4334463b9c..37d28687e9 100644 --- a/programs/bpf/benches/bpf_loader.rs +++ b/programs/bpf/benches/bpf_loader.rs @@ -31,6 +31,7 @@ use { instruction::{AccountMeta, Instruction}, message::Message, pubkey::Pubkey, + rent::Rent, signature::{Keypair, Signer}, }, std::{env, fs::File, io::Read, mem, path::PathBuf, sync::Arc}, @@ -100,7 +101,7 @@ fn bench_program_alu(bencher: &mut Bencher) { inner_iter.write_u64::(0).unwrap(); let elf = load_elf("bench_alu").unwrap(); let loader_id = bpf_loader::id(); - with_mock_invoke_context(loader_id, 10000001, |invoke_context| { + with_mock_invoke_context(loader_id, 10000001, false, |invoke_context| { invoke_context .get_compute_meter() .borrow_mut() @@ -216,7 +217,7 @@ fn bench_program_execute_noop(bencher: &mut Bencher) { fn bench_create_vm(bencher: &mut Bencher) { let elf = load_elf("noop").unwrap(); let loader_id = bpf_loader::id(); - with_mock_invoke_context(loader_id, 10000001, |invoke_context| { + with_mock_invoke_context(loader_id, 10000001, false, |invoke_context| { const BUDGET: u64 = 200_000; invoke_context .get_compute_meter() @@ -264,7 +265,7 @@ fn bench_create_vm(bencher: &mut Bencher) { fn bench_instruction_count_tuner(_bencher: &mut Bencher) { let elf = load_elf("tuner").unwrap(); let loader_id = bpf_loader::id(); - with_mock_invoke_context(loader_id, 10000001, |invoke_context| { + with_mock_invoke_context(loader_id, 10000001, true, |invoke_context| { const BUDGET: u64 = 200_000; invoke_context .get_compute_meter() diff --git a/programs/bpf/tests/programs.rs b/programs/bpf/tests/programs.rs index 76a1193828..82cb247448 100644 --- a/programs/bpf/tests/programs.rs +++ b/programs/bpf/tests/programs.rs @@ -223,7 +223,7 @@ fn run_program(name: &str) -> u64 { let mut data = vec![]; file.read_to_end(&mut data).unwrap(); let loader_id = bpf_loader::id(); - with_mock_invoke_context(loader_id, 0, |invoke_context| { + with_mock_invoke_context(loader_id, 0, false, |invoke_context| { let (parameter_bytes, account_lengths) = serialize_parameters( invoke_context.transaction_context, invoke_context