Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
14 changes: 6 additions & 8 deletions program-runtime/src/invoke_context.rs
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ use {
solana_clock::Slot,
solana_epoch_schedule::EpochSchedule,
solana_hash::Hash,
solana_instruction::{error::InstructionError, AccountMeta},
solana_instruction::{error::InstructionError, AccountMeta, Instruction},
solana_log_collector::{ic_msg, LogCollector},
solana_measure::measure::Measure,
solana_pubkey::Pubkey,
Expand All @@ -26,7 +26,6 @@ use {
solana_sdk_ids::{
bpf_loader, bpf_loader_deprecated, bpf_loader_upgradeable, loader_v4, native_loader, sysvar,
},
solana_stable_layout::stable_instruction::StableInstruction,
solana_svm_callback::InvokeContextCallback,
solana_svm_feature_set::SVMFeatureSet,
solana_timings::{ExecuteDetailsTimings, ExecuteTimings},
Expand Down Expand Up @@ -304,7 +303,7 @@ impl<'a> InvokeContext<'a> {
/// Entrypoint for a cross-program invocation from a builtin program
pub fn native_invoke(
&mut self,
instruction: StableInstruction,
instruction: Instruction,
signers: &[Pubkey],
) -> Result<(), InstructionError> {
let (instruction_accounts, program_indices) =
Expand All @@ -324,7 +323,7 @@ impl<'a> InvokeContext<'a> {
#[allow(clippy::type_complexity)]
pub fn prepare_instruction(
&mut self,
instruction: &StableInstruction,
instruction: &Instruction,
signers: &[Pubkey],
) -> Result<(Vec<InstructionAccount>, Vec<IndexOfAccount>), InstructionError> {
// Finds the index of each account in the instruction by its pubkey.
Expand All @@ -333,7 +332,7 @@ impl<'a> InvokeContext<'a> {
// but performed on a very small slice and requires no heap allocations.
let instruction_context = self.transaction_context.get_current_instruction_context()?;
let mut deduplicated_instruction_accounts: Vec<InstructionAccount> = Vec::new();
let mut duplicate_indicies = Vec::with_capacity(instruction.accounts.len() as usize);
let mut duplicate_indicies = Vec::with_capacity(instruction.accounts.len());
for (instruction_account_index, account_meta) in instruction.accounts.iter().enumerate() {
let index_in_transaction = self
.transaction_context
Expand Down Expand Up @@ -1028,7 +1027,7 @@ mod tests {
assert_eq!(result, Err(InstructionError::UnbalancedInstruction));
result?;
invoke_context
.native_invoke(inner_instruction.into(), &[])
.native_invoke(inner_instruction, &[])
.and(invoke_context.pop())?;
}
MockInstruction::UnbalancedPop => instruction_context
Expand Down Expand Up @@ -1186,7 +1185,7 @@ mod tests {
let inner_instruction =
Instruction::new_with_bincode(callee_program_id, &instruction, metas.clone());
let result = invoke_context
.native_invoke(inner_instruction.into(), &[])
.native_invoke(inner_instruction, &[])
.and(invoke_context.pop());
assert_eq!(result, expected_result);
}
Expand Down Expand Up @@ -1250,7 +1249,6 @@ mod tests {
},
metas.clone(),
);
let inner_instruction = StableInstruction::from(inner_instruction);
let (inner_instruction_accounts, program_indices) = invoke_context
.prepare_instruction(&inner_instruction, &[])
.unwrap();
Expand Down
4 changes: 1 addition & 3 deletions program-test/src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -42,7 +42,6 @@ use {
runtime_config::RuntimeConfig,
},
solana_signer::Signer,
solana_stable_layout::stable_instruction::StableInstruction,
solana_sysvar::Sysvar,
solana_sysvar_id::SysvarId,
solana_timings::ExecuteTimings,
Expand Down Expand Up @@ -250,7 +249,6 @@ impl solana_sysvar::program_stubs::SyscallStubs for SyscallStubs {
account_infos: &[AccountInfo],
signers_seeds: &[&[&[u8]]],
) -> ProgramResult {
let instruction = StableInstruction::from(instruction.clone());
let invoke_context = get_invoke_context();
let log_collector = invoke_context.get_log_collector();
let transaction_context = &invoke_context.transaction_context;
Expand All @@ -273,7 +271,7 @@ impl solana_sysvar::program_stubs::SyscallStubs for SyscallStubs {
.collect::<Vec<_>>();

let (instruction_accounts, program_indices) = invoke_context
.prepare_instruction(&instruction, &signers)
.prepare_instruction(instruction, &signers)
.unwrap();

// Copy caller's account_info modifications into invoke_context accounts
Expand Down
19 changes: 7 additions & 12 deletions programs/bpf_loader/src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -659,7 +659,7 @@ fn process_loader_upgradeable_instruction(
.iter()
.map(|seeds| Pubkey::create_program_address(seeds, caller_program_id))
.collect::<Result<Vec<Pubkey>, solana_pubkey::PubkeyError>>()?;
invoke_context.native_invoke(instruction.into(), signers.as_slice())?;
invoke_context.native_invoke(instruction, signers.as_slice())?;

// Load and verify the program bits
let transaction_context = &invoke_context.transaction_context;
Expand Down Expand Up @@ -1291,8 +1291,7 @@ fn process_loader_upgradeable_instruction(
&provided_authority_address,
program_len as u32,
&program_address,
)
.into(),
),
&[],
)?;

Expand All @@ -1304,17 +1303,15 @@ fn process_loader_upgradeable_instruction(
0,
0,
program_len as u32,
)
.into(),
),
&[],
)?;

invoke_context.native_invoke(
solana_loader_v4_interface::instruction::deploy(
&program_address,
&provided_authority_address,
)
.into(),
),
&[],
)?;

Expand All @@ -1324,8 +1321,7 @@ fn process_loader_upgradeable_instruction(
&program_address,
&provided_authority_address,
&program_address,
)
.into(),
),
&[],
)?;
} else if migration_authority::check_id(&provided_authority_address) {
Expand All @@ -1334,8 +1330,7 @@ fn process_loader_upgradeable_instruction(
&program_address,
&provided_authority_address,
&upgrade_authority_address.unwrap(),
)
.into(),
),
&[],
)?;
}
Expand Down Expand Up @@ -1496,7 +1491,7 @@ fn common_extend_program(
)?;

invoke_context.native_invoke(
system_instruction::transfer(&payer_key, &programdata_key, required_payment).into(),
system_instruction::transfer(&payer_key, &programdata_key, required_payment),
&[],
)?;
}
Expand Down
19 changes: 10 additions & 9 deletions programs/bpf_loader/src/syscalls/cpi.rs
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
use {
super::*,
crate::{translate_inner, translate_slice_inner, translate_type_inner},
solana_instruction::Instruction,
solana_loader_v3_interface::instruction as bpf_loader_upgradeable,
solana_measure::measure::Measure,
solana_program_runtime::{
Expand Down Expand Up @@ -326,7 +327,7 @@ trait SyscallInvokeSigned {
addr: u64,
memory_mapping: &MemoryMapping,
invoke_context: &mut InvokeContext,
) -> Result<StableInstruction, Error>;
) -> Result<Instruction, Error>;
fn translate_accounts<'a>(
instruction_accounts: &[InstructionAccount],
account_infos_addr: u64,
Expand Down Expand Up @@ -373,7 +374,7 @@ impl SyscallInvokeSigned for SyscallInvokeSignedRust {
addr: u64,
memory_mapping: &MemoryMapping,
invoke_context: &mut InvokeContext,
) -> Result<StableInstruction, Error> {
) -> Result<Instruction, Error> {
let ix = translate_type::<StableInstruction>(
memory_mapping,
addr,
Expand Down Expand Up @@ -419,9 +420,9 @@ impl SyscallInvokeSigned for SyscallInvokeSignedRust {
accounts.push(account_meta.clone());
}

Ok(StableInstruction {
accounts: accounts.into(),
data: data.into(),
Ok(Instruction {
accounts,
data,
program_id: ix.program_id,
})
}
Expand Down Expand Up @@ -580,7 +581,7 @@ impl SyscallInvokeSigned for SyscallInvokeSignedC {
addr: u64,
memory_mapping: &MemoryMapping,
invoke_context: &mut InvokeContext,
) -> Result<StableInstruction, Error> {
) -> Result<Instruction, Error> {
let ix_c = translate_type::<SolInstruction>(
memory_mapping,
addr,
Expand Down Expand Up @@ -641,9 +642,9 @@ impl SyscallInvokeSigned for SyscallInvokeSignedC {
});
}

Ok(StableInstruction {
accounts: accounts.into(),
data: data.into(),
Ok(Instruction {
accounts,
data,
program_id: *program_id,
})
}
Expand Down
3 changes: 1 addition & 2 deletions rpc/src/rpc.rs
Original file line number Diff line number Diff line change
Expand Up @@ -4695,8 +4695,7 @@ pub mod tests {
lamports,
space,
&owner_pubkey,
)
.into(),
),
&[],
)?;

Expand Down
2 changes: 1 addition & 1 deletion runtime/src/bank/builtin_programs.rs
Original file line number Diff line number Diff line change
Expand Up @@ -108,7 +108,7 @@ mod tests_core_bpf_migration {

let instruction = Instruction::new_with_bytes(*target_program_id, &[], Vec::new());

invoke_context.native_invoke(instruction.into(), &[])
invoke_context.native_invoke(instruction, &[])
});
}

Expand Down
Loading