Fix up upgradeable bpf loader activation

This commit is contained in:
Michael Vines 2020-12-15 20:29:09 -08:00 committed by mergify[bot]
parent 3a154e8056
commit 501fd83afd
3 changed files with 15 additions and 25 deletions

View File

@ -66,10 +66,7 @@ pub fn load(
compression, compression,
genesis_config, genesis_config,
process_options.debug_keys.clone(), process_options.debug_keys.clone(),
Some(&crate::builtins::get( Some(&crate::builtins::get(process_options.bpf_jit)),
genesis_config.cluster_type,
process_options.bpf_jit,
)),
) )
.expect("Load from snapshot failed"); .expect("Load from snapshot failed");

View File

@ -367,10 +367,7 @@ pub fn process_blockstore(
account_paths, account_paths,
&opts.frozen_accounts, &opts.frozen_accounts,
opts.debug_keys.clone(), opts.debug_keys.clone(),
Some(&crate::builtins::get( Some(&crate::builtins::get(opts.bpf_jit)),
genesis_config.cluster_type,
opts.bpf_jit,
)),
); );
let bank0 = Arc::new(bank0); let bank0 = Arc::new(bank0);
info!("processing ledger for slot 0..."); info!("processing ledger for slot 0...");

View File

@ -2,7 +2,7 @@ use solana_runtime::{
bank::{Builtin, Builtins}, bank::{Builtin, Builtins},
builtins::ActivationType, builtins::ActivationType,
}; };
use solana_sdk::{feature_set, genesis_config::ClusterType, pubkey::Pubkey}; use solana_sdk::{feature_set, pubkey::Pubkey};
macro_rules! to_builtin { macro_rules! to_builtin {
($b:expr) => { ($b:expr) => {
@ -11,37 +11,33 @@ macro_rules! to_builtin {
} }
/// Builtin programs that are always available /// Builtin programs that are always available
fn genesis_builtins(cluster_type: ClusterType, bpf_jit: bool) -> Vec<Builtin> { fn genesis_builtins(bpf_jit: bool) -> Vec<Builtin> {
let mut builtins = vec![ vec![
to_builtin!(solana_bpf_loader_deprecated_program!()), to_builtin!(solana_bpf_loader_deprecated_program!()),
if bpf_jit { if bpf_jit {
to_builtin!(solana_bpf_loader_program_with_jit!()) to_builtin!(solana_bpf_loader_program_with_jit!())
} else { } else {
to_builtin!(solana_bpf_loader_program!()) to_builtin!(solana_bpf_loader_program!())
}, },
]; ]
if cluster_type != ClusterType::MainnetBeta {
builtins.push(if bpf_jit {
to_builtin!(solana_bpf_loader_upgradeable_program_with_jit!())
} else {
to_builtin!(solana_bpf_loader_upgradeable_program!())
});
}
builtins
} }
/// Builtin programs activated dynamically by feature /// Builtin programs activated dynamically by feature
fn feature_builtins() -> Vec<(Builtin, Pubkey, ActivationType)> { fn feature_builtins(bpf_jit: bool) -> Vec<(Builtin, Pubkey, ActivationType)> {
vec![( vec![(
to_builtin!(solana_bpf_loader_upgradeable_program!()), if bpf_jit {
to_builtin!(solana_bpf_loader_upgradeable_program_with_jit!())
} else {
to_builtin!(solana_bpf_loader_upgradeable_program!())
},
feature_set::bpf_loader_upgradeable_program::id(), feature_set::bpf_loader_upgradeable_program::id(),
ActivationType::NewProgram, ActivationType::NewProgram,
)] )]
} }
pub(crate) fn get(cluster_type: ClusterType, bpf_jit: bool) -> Builtins { pub(crate) fn get(bpf_jit: bool) -> Builtins {
Builtins { Builtins {
genesis_builtins: genesis_builtins(cluster_type, bpf_jit), genesis_builtins: genesis_builtins(bpf_jit),
feature_builtins: feature_builtins(), feature_builtins: feature_builtins(bpf_jit),
} }
} }