Skip to content

Commit a57aae2

Browse files
committed
Refactor ComputeBudget and ComputeBudgetLimits
- Move relevant structs into SVM boundaries
1 parent 69c503a commit a57aae2

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

41 files changed

+620
-491
lines changed

Cargo.lock

Lines changed: 7 additions & 5 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

cli/src/compute_budget.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,10 @@
11
use {
22
solana_borsh::v1::try_from_slice_unchecked,
33
solana_clap_utils::compute_budget::ComputeUnitLimit,
4-
solana_compute_budget::compute_budget_limits::MAX_COMPUTE_UNIT_LIMIT,
54
solana_compute_budget_interface::{self as compute_budget, ComputeBudgetInstruction},
65
solana_instruction::Instruction,
76
solana_message::Message,
7+
solana_program_runtime::execution_budget::MAX_COMPUTE_UNIT_LIMIT,
88
solana_rpc_client::rpc_client::RpcClient,
99
solana_rpc_client_api::config::RpcSimulateTransactionConfig,
1010
solana_transaction::Transaction,

compute-budget-instruction/Cargo.toml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@ solana-compute-budget-interface = { workspace = true, features = ["borsh"] }
1818
solana-feature-set = { workspace = true }
1919
solana-instruction = { workspace = true }
2020
solana-packet = { workspace = true }
21+
solana-program-runtime = { workspace = true }
2122
solana-pubkey = { workspace = true }
2223
solana-sdk-ids = { workspace = true }
2324
solana-svm-transaction = { workspace = true }
@@ -33,6 +34,7 @@ bincode = { workspace = true }
3334
criterion = { workspace = true }
3435
rand = { workspace = true }
3536
solana-builtins-default-costs = { workspace = true, features = ["dev-context-only-utils", "svm-internal"] }
37+
solana-compute-budget-program = { workspace = true }
3638
solana-hash = { workspace = true }
3739
solana-keypair = { workspace = true }
3840
solana-message = { workspace = true }

compute-budget-instruction/src/compute_budget_instruction_details.rs

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,10 @@ use {
99
solana_compute_budget_interface::ComputeBudgetInstruction,
1010
solana_feature_set::{self as feature_set, FeatureSet},
1111
solana_instruction::error::InstructionError,
12+
solana_program_runtime::execution_budget::{
13+
DEFAULT_INSTRUCTION_COMPUTE_UNIT_LIMIT, MAX_BUILTIN_ALLOCATION_COMPUTE_UNIT_LIMIT,
14+
MAX_COMPUTE_UNIT_LIMIT, MAX_HEAP_FRAME_BYTES, MIN_HEAP_FRAME_BYTES,
15+
},
1216
solana_pubkey::Pubkey,
1317
solana_svm_transaction::instruction::SVMInstruction,
1418
solana_transaction_error::{TransactionError, TransactionResult as Result},
@@ -232,6 +236,10 @@ mod test {
232236
solana_instruction::Instruction,
233237
solana_keypair::Keypair,
234238
solana_message::Message,
239+
solana_program_runtime::execution_budget::{
240+
DEFAULT_INSTRUCTION_COMPUTE_UNIT_LIMIT, MAX_BUILTIN_ALLOCATION_COMPUTE_UNIT_LIMIT,
241+
MAX_COMPUTE_UNIT_LIMIT, MAX_HEAP_FRAME_BYTES, MIN_HEAP_FRAME_BYTES,
242+
},
235243
solana_pubkey::Pubkey,
236244
solana_signer::Signer,
237245
solana_svm_transaction::svm_message::SVMMessage,

compute-budget-instruction/src/instructions_processor.rs

Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,11 +22,16 @@ pub fn process_compute_budget_instructions<'a>(
2222
mod tests {
2323
use {
2424
super::*,
25+
solana_compute_budget::compute_budget_limits::ComputeBudgetLimits,
2526
solana_compute_budget_interface::ComputeBudgetInstruction,
2627
solana_hash::Hash,
2728
solana_instruction::{error::InstructionError, Instruction},
2829
solana_keypair::Keypair,
2930
solana_message::Message,
31+
solana_program_runtime::execution_budget::{
32+
DEFAULT_INSTRUCTION_COMPUTE_UNIT_LIMIT, MAX_BUILTIN_ALLOCATION_COMPUTE_UNIT_LIMIT,
33+
MAX_COMPUTE_UNIT_LIMIT, MAX_HEAP_FRAME_BYTES, MIN_HEAP_FRAME_BYTES,
34+
},
3035
solana_pubkey::Pubkey,
3136
solana_signer::Signer,
3237
solana_svm_transaction::svm_message::SVMMessage,
@@ -78,6 +83,30 @@ mod tests {
7883
..ComputeBudgetLimits::default()
7984
})
8085
);
86+
test!(
87+
&[
88+
ComputeBudgetInstruction::set_compute_unit_limit(2000u32),
89+
ComputeBudgetInstruction::set_compute_unit_price(1_000_000_000),
90+
],
91+
Ok(ComputeBudgetLimits {
92+
compute_unit_limit: 2000u32,
93+
compute_unit_price: 1_000_000_000u64,
94+
..ComputeBudgetLimits::default()
95+
})
96+
);
97+
test!(
98+
&[
99+
ComputeBudgetInstruction::set_compute_unit_limit(
100+
2 * solana_compute_budget_program::DEFAULT_COMPUTE_UNITS as u32
101+
),
102+
ComputeBudgetInstruction::set_compute_unit_price(1_000_000),
103+
],
104+
Ok(ComputeBudgetLimits {
105+
compute_unit_limit: 2 * solana_compute_budget_program::DEFAULT_COMPUTE_UNITS as u32,
106+
compute_unit_price: 1_000_000u64,
107+
..ComputeBudgetLimits::default()
108+
})
109+
);
81110
test!(
82111
&[
83112
ComputeBudgetInstruction::set_compute_unit_limit(MAX_COMPUTE_UNIT_LIMIT + 1),
@@ -279,6 +308,14 @@ mod tests {
279308
Err(TransactionError::DuplicateInstruction(2))
280309
);
281310

311+
test!(
312+
&[
313+
ComputeBudgetInstruction::set_compute_unit_limit(2000u32),
314+
ComputeBudgetInstruction::set_compute_unit_limit(42u32),
315+
],
316+
Err(TransactionError::DuplicateInstruction(1))
317+
);
318+
282319
test!(
283320
&[
284321
Instruction::new_with_bincode(Pubkey::new_unique(), &0_u8, vec![]),

compute-budget/Cargo.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ solana-fee-structure = { workspace = true }
1515
solana-frozen-abi = { workspace = true, optional = true, features = [
1616
"frozen-abi",
1717
] }
18-
solana-program-entrypoint = { workspace = true }
18+
solana-program-runtime = { workspace = true }
1919

2020
[features]
2121
dev-context-only-utils = ["dep:qualifier_attr"]

0 commit comments

Comments
 (0)