7
7
program_data_size, register_builtins, MockBankCallback , MockForkGraph , EXECUTION_EPOCH ,
8
8
EXECUTION_SLOT , WALLCLOCK_TIME ,
9
9
} ,
10
- agave_feature_set:: { self as feature_set, raise_cpi_nesting_limit_to_8, FeatureSet } ,
11
10
solana_account:: { AccountSharedData , ReadableAccount , WritableAccount , PROGRAM_OWNERS } ,
12
11
solana_clock:: Slot ,
13
- solana_compute_budget_instruction:: instructions_processor:: process_compute_budget_instructions ,
12
+ solana_compute_budget_instruction:: instructions_processor:: process_compute_budget_instructions_with_default_feature_set ,
14
13
solana_compute_budget_interface:: ComputeBudgetInstruction ,
15
14
solana_fee_structure:: FeeDetails ,
16
15
solana_hash:: Hash ,
41
40
TransactionProcessingEnvironment ,
42
41
} ,
43
42
} ,
43
+ solana_svm_feature_set:: SVMFeatureSet ,
44
44
solana_svm_transaction:: svm_message:: SVMMessage ,
45
45
solana_svm_type_overrides:: sync:: { Arc , RwLock } ,
46
46
solana_system_interface:: { instruction as system_instruction, program as system_program} ,
@@ -114,10 +114,9 @@ impl SvmTestEnvironment<'_> {
114
114
..Default :: default ( )
115
115
} ;
116
116
117
- let feature_set = test_entry. feature_set ( ) ;
118
117
let processing_environment = TransactionProcessingEnvironment {
119
118
blockhash : LAST_BLOCKHASH ,
120
- feature_set : feature_set . runtime_features ( ) ,
119
+ feature_set : test_entry . feature_set ,
121
120
blockhash_lamports_per_signature : LAMPORTS_PER_SIGNATURE ,
122
121
..TransactionProcessingEnvironment :: default ( )
123
122
} ;
@@ -298,8 +297,8 @@ impl SvmTestEnvironment<'_> {
298
297
// container for a transaction batch and all data needed to run and verify it against svm
299
298
#[ derive( Clone , Default , Debug ) ]
300
299
pub struct SvmTestEntry {
301
- // features are enabled by default; these will be disabled
302
- pub disabled_features : Vec < Pubkey > ,
300
+ // SVM feature set for this test.
301
+ pub feature_set : SVMFeatureSet ,
303
302
304
303
// until LoaderV4 is live on mainnet, we default to omitting it, but can also test it
305
304
pub with_loader_v4 : bool ,
@@ -448,10 +447,10 @@ impl SvmTestEntry {
448
447
. map ( |item| {
449
448
let message = SanitizedTransaction :: from_transaction_for_tests ( item. transaction ) ;
450
449
let check_result = item. check_result . map ( |tx_details| {
451
- let compute_budget_limits = process_compute_budget_instructions (
452
- SVMMessage :: program_instructions_iter ( & message ) ,
453
- & self . feature_set ( ) ,
454
- ) ;
450
+ let compute_budget_limits =
451
+ process_compute_budget_instructions_with_default_feature_set (
452
+ SVMMessage :: program_instructions_iter ( & message ) ,
453
+ ) ;
455
454
let signature_count = message
456
455
. num_transaction_signatures ( )
457
456
. saturating_add ( message. num_ed25519_signatures ( ) )
@@ -465,8 +464,7 @@ impl SvmTestEntry {
465
464
signature_count. saturating_mul ( LAMPORTS_PER_SIGNATURE ) ,
466
465
v. get_prioritization_fee ( ) ,
467
466
) ,
468
- self . feature_set ( )
469
- . is_active ( & raise_cpi_nesting_limit_to_8:: id ( ) ) ,
467
+ self . feature_set . raise_cpi_nesting_limit_to_8 ,
470
468
)
471
469
} ) ;
472
470
CheckedTransactionDetails :: new ( tx_details. nonce , compute_budget)
@@ -485,16 +483,6 @@ impl SvmTestEntry {
485
483
. map ( |item| item. asserts )
486
484
. collect ( )
487
485
}
488
-
489
- // internal helper to map our feature list to a FeatureSet
490
- fn feature_set ( & self ) -> FeatureSet {
491
- let mut feature_set = FeatureSet :: all_enabled ( ) ;
492
- for feature_id in & self . disabled_features {
493
- feature_set. deactivate ( feature_id) ;
494
- }
495
-
496
- feature_set
497
- }
498
486
}
499
487
500
488
// one transaction in a batch plus check results for svm and asserts for tests
@@ -2204,8 +2192,8 @@ fn simd83_account_reallocate(formalize_loaded_transaction_data_size: bool) -> Ve
2204
2192
common_test_entry. add_initial_program ( program_name) ;
2205
2193
if !formalize_loaded_transaction_data_size {
2206
2194
common_test_entry
2207
- . disabled_features
2208
- . push ( feature_set :: formalize_loaded_transaction_data_size:: id ( ) ) ;
2195
+ . feature_set
2196
+ . formalize_loaded_transaction_data_size = false ;
2209
2197
}
2210
2198
2211
2199
let fee_payer_keypair = Keypair :: new ( ) ;
@@ -2910,8 +2898,8 @@ fn svm_inspect_nonce_load_failure(
2910
2898
2911
2899
if !formalize_loaded_transaction_data_size {
2912
2900
test_entry
2913
- . disabled_features
2914
- . push ( feature_set :: formalize_loaded_transaction_data_size:: id ( ) ) ;
2901
+ . feature_set
2902
+ . formalize_loaded_transaction_data_size = false ;
2915
2903
}
2916
2904
2917
2905
let fee_payer_keypair = Keypair :: new ( ) ;
0 commit comments