Skip to content

Commit 3137127

Browse files
authored
elf: pass references to improve efficiency (#369)
1 parent b2cc27b commit 3137127

File tree

2 files changed

+7
-12
lines changed

2 files changed

+7
-12
lines changed

src/bin/test_exec_elf_loader.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ fn exec(input: &PathBuf) -> bool {
2121
println!("No fixture found.");
2222
return false;
2323
};
24-
let Some(effects) = solfuzz_agave::elf_loader::execute_elf_loader(context) else {
24+
let Some(effects) = solfuzz_agave::elf_loader::execute_elf_loader(&context) else {
2525
println!(
2626
"FAIL: No instruction effects returned for input: {:?}",
2727
input

src/elf_loader.rs

Lines changed: 6 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -11,10 +11,10 @@ use std::ffi::c_int;
1111

1212
pub fn load_elf(
1313
elf_bytes: &[u8],
14-
features: Option<proto::FeatureSet>,
14+
features: Option<&proto::FeatureSet>,
1515
deploy_checks: bool,
1616
) -> Option<ElfLoaderEffects> {
17-
let feature_set = FeatureSet::from(&features.unwrap_or_default());
17+
let feature_set = FeatureSet::from(features.unwrap_or(&proto::FeatureSet::default()));
1818
let program_runtime_environment_v1 = create_program_runtime_environment_v1(
1919
&feature_set.runtime_features(),
2020
&SVMTransactionExecutionBudget::default(),
@@ -75,7 +75,7 @@ pub unsafe extern "C" fn sol_compat_elf_loader_v1(
7575
return 0;
7676
}
7777

78-
let Some(elf_loader_effects) = execute_elf_loader(elf_loader_ctx) else {
78+
let Some(elf_loader_effects) = execute_elf_loader(&elf_loader_ctx) else {
7979
return 0;
8080
};
8181

@@ -89,12 +89,7 @@ pub unsafe extern "C" fn sol_compat_elf_loader_v1(
8989
1
9090
}
9191

92-
pub fn execute_elf_loader(input: ElfLoaderCtx) -> Option<ElfLoaderEffects> {
93-
let elf_bytes = match input.elf {
94-
Some(elf) => elf.data,
95-
None => return None,
96-
};
97-
98-
let elf_loader_effects = load_elf(elf_bytes.as_slice(), input.features, input.deploy_checks)?;
99-
Some(elf_loader_effects)
92+
pub fn execute_elf_loader(input: &ElfLoaderCtx) -> Option<ElfLoaderEffects> {
93+
let elf_bytes = input.elf.as_ref()?.data.as_slice();
94+
load_elf(elf_bytes, input.features.as_ref(), input.deploy_checks)
10095
}

0 commit comments

Comments
 (0)