Add program heap bump instruction (#20607)
This commit is contained in:
@ -3809,7 +3809,7 @@ impl Bank {
|
||||
let mut compute_budget = self.compute_budget.unwrap_or_else(ComputeBudget::new);
|
||||
|
||||
let mut process_result = if feature_set.is_active(&tx_wide_compute_cap::id()) {
|
||||
compute_budget.process_transaction(tx)
|
||||
compute_budget.process_transaction(tx, feature_set.clone())
|
||||
} else {
|
||||
Ok(())
|
||||
};
|
||||
@ -14810,6 +14810,7 @@ pub(crate) mod tests {
|
||||
*compute_budget,
|
||||
ComputeBudget {
|
||||
max_units: 1,
|
||||
heap_size: Some(48 * 1024),
|
||||
..ComputeBudget::default()
|
||||
}
|
||||
);
|
||||
@ -14821,6 +14822,7 @@ pub(crate) mod tests {
|
||||
let message = Message::new(
|
||||
&[
|
||||
ComputeBudgetInstruction::request_units(1),
|
||||
ComputeBudgetInstruction::request_heap_frame(48 * 1024),
|
||||
Instruction::new_with_bincode(program_id, &0, vec![]),
|
||||
],
|
||||
Some(&mint_keypair.pubkey()),
|
||||
|
@ -11,8 +11,8 @@ use solana_sdk::{
|
||||
compute_budget::ComputeBudget,
|
||||
feature_set::{
|
||||
demote_program_write_locks, do_support_realloc, neon_evm_compute_budget,
|
||||
prevent_calling_precompiles_as_programs, remove_native_loader, tx_wide_compute_cap,
|
||||
FeatureSet,
|
||||
prevent_calling_precompiles_as_programs, remove_native_loader, requestable_heap_size,
|
||||
tx_wide_compute_cap, FeatureSet,
|
||||
},
|
||||
fee_calculator::FeeCalculator,
|
||||
hash::Hash,
|
||||
@ -538,11 +538,18 @@ impl MessageProcessor {
|
||||
}
|
||||
|
||||
let mut compute_budget = compute_budget;
|
||||
if invoke_context.is_feature_active(&neon_evm_compute_budget::id())
|
||||
if !invoke_context.is_feature_active(&tx_wide_compute_cap::id())
|
||||
&& invoke_context.is_feature_active(&neon_evm_compute_budget::id())
|
||||
&& *program_id == crate::neon_evm_program::id()
|
||||
{
|
||||
// Bump the compute budget for neon_evm
|
||||
compute_budget.max_units = compute_budget.max_units.max(500_000);
|
||||
}
|
||||
if !invoke_context.is_feature_active(&requestable_heap_size::id())
|
||||
&& invoke_context.is_feature_active(&neon_evm_compute_budget::id())
|
||||
&& *program_id == crate::neon_evm_program::id()
|
||||
{
|
||||
// Bump the compute budget for neon_evm
|
||||
compute_budget.heap_size = Some(256 * 1024);
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user