@@ -1028,35 +1028,43 @@ fd_runtime_finalize_txn( fd_funk_t * funk,
10281028}
10291029
10301030int
1031- fd_runtime_prepare_and_execute_txn ( fd_banks_t * banks ,
1032- ulong bank_idx ,
1031+ fd_runtime_prepare_and_execute_txn ( fd_bank_t * bank ,
10331032 fd_exec_txn_ctx_t * txn_ctx ,
10341033 fd_txn_p_t * txn ,
10351034 fd_capture_ctx_t * capture_ctx ,
10361035 fd_exec_stack_t * exec_stack ,
10371036 fd_exec_accounts_t * exec_accounts ,
10381037 uchar * dumping_mem ,
10391038 uchar * tracing_mem ) {
1040- fd_bank_t * bank = fd_banks_bank_query ( banks , bank_idx );
1041- if ( FD_UNLIKELY ( !bank ) ) {
1042- FD_LOG_CRIT (( "Could not get bank at pool idx %lu" , bank_idx ));
1043- }
1044-
1045- /* FIXME: The transaction setup code is super messy and needs to be
1046- refactored. */
10471039
1048- /* Setup and execute the transaction. */
10491040 txn_ctx -> bank = bank ;
1050- txn_ctx -> log .enable_exec_recording = !!( bank -> flags & FD_BANK_FLAGS_EXEC_RECORDING );
1051- txn_ctx -> xid [0 ] = (fd_funk_txn_xid_t ){ .ul = { fd_bank_slot_get ( bank ), bank_idx } };
1041+ txn_ctx -> xid [0 ] = (fd_funk_txn_xid_t ){ .ul = { fd_bank_slot_get ( bank ), bank -> idx } };
10521042 txn_ctx -> txn = * txn ;
10531043 txn_ctx -> exec_stack = exec_stack ;
10541044 txn_ctx -> exec_accounts = exec_accounts ;
1045+
1046+ txn_ctx -> accounts .accounts_cnt = 0UL ;
1047+ txn_ctx -> accounts .executable_cnt = 0UL ;
1048+
1049+ txn_ctx -> prog_cache .programs_to_reverify_cnt = 0UL ;
1050+
1051+ txn_ctx -> details .loaded_accounts_data_size = 0UL ;
1052+ txn_ctx -> details .loaded_accounts_data_size_cost = 0UL ;
1053+ txn_ctx -> details .accounts_resize_delta = 0UL ;
1054+ txn_ctx -> details .return_data .len = 0UL ;
1055+ memset ( txn_ctx -> details .return_data .program_id .key , 0 , sizeof (fd_pubkey_t ) );
1056+ fd_compute_budget_details_new ( & txn_ctx -> details .compute_budget );
1057+
1058+ txn_ctx -> log .enable_exec_recording = !!( bank -> flags & FD_BANK_FLAGS_EXEC_RECORDING );
10551059 txn_ctx -> log .dumping_mem = dumping_mem ;
10561060 txn_ctx -> log .tracing_mem = tracing_mem ;
1057- fd_exec_txn_ctx_setup_basic ( txn_ctx );
10581061 txn_ctx -> log .capture_ctx = capture_ctx ;
10591062
1063+ txn_ctx -> instr .info_cnt = 0UL ;
1064+ txn_ctx -> instr .trace_length = 0UL ;
1065+ txn_ctx -> instr .current_idx = 0 ;
1066+ txn_ctx -> instr .stack_sz = 0 ;
1067+
10601068 txn_ctx -> accounts .accounts_cnt = 0UL ;
10611069 txn_ctx -> accounts .executable_cnt = 0UL ;
10621070
0 commit comments