Skip to content

Commit b4eb152

Browse files
wip
1 parent 262dc63 commit b4eb152

File tree

5 files changed

+33
-25
lines changed

5 files changed

+33
-25
lines changed

src/discof/bank/fd_bank_tile.c

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -184,8 +184,9 @@ handle_microblock( fd_bank_ctx_t * ctx,
184184
txn->flags &= ~FD_TXN_P_FLAGS_SANITIZE_SUCCESS;
185185
txn->flags &= ~FD_TXN_P_FLAGS_EXECUTE_SUCCESS;
186186

187-
txn_ctx->err.exec_err = fd_runtime_prepare_and_execute_txn( ctx->banks,
188-
ctx->_bank_idx,
187+
fd_bank_t * bank = fd_banks_bank_query( ctx->banks, ctx->_bank_idx );
188+
FD_TEST( bank );
189+
txn_ctx->err.exec_err = fd_runtime_prepare_and_execute_txn( bank,
189190
txn_ctx,
190191
txn,
191192
NULL,
@@ -369,8 +370,10 @@ handle_bundle( fd_bank_ctx_t * ctx,
369370
txn->flags = (txn->flags & 0x00FFFFFFU) | ((uint)(-FD_RUNTIME_TXN_ERR_BUNDLE_PEER)<<24);
370371
continue;
371372
}
372-
373-
txn_ctx->err.exec_err = fd_runtime_prepare_and_execute_txn( ctx->banks, ctx->_bank_idx, txn_ctx, txn, NULL, &ctx->exec_stack, &ctx->exec_accounts[ i ], NULL, NULL );
373+
fd_bank_t * bank = fd_banks_bank_query( ctx->banks, ctx->_bank_idx );
374+
FD_TEST( bank );
375+
txn_ctx->bundle.is_bundle = 1;
376+
txn_ctx->err.exec_err = fd_runtime_prepare_and_execute_txn( bank, txn_ctx, txn, NULL, &ctx->exec_stack, &ctx->exec_accounts[ i ], NULL, NULL );
374377
txn->flags = (txn->flags & 0x00FFFFFFU) | ((uint)(-txn_ctx->err.exec_err)<<24);
375378
if( FD_UNLIKELY( !txn_ctx->err.is_committable || txn_ctx->err.exec_err!=FD_RUNTIME_EXECUTE_SUCCESS ) ) {
376379
execution_success = 0;
@@ -389,7 +392,6 @@ handle_bundle( fd_bank_ctx_t * ctx,
389392
for( ulong i=0UL; i<txn_cnt; i++ ) {
390393

391394
fd_exec_txn_ctx_t * txn_ctx = &ctx->txn_ctx[ i ];
392-
txn_ctx->bundle.is_bundle = 1;
393395
uchar * signature = (uchar *)txn_ctx->txn.payload + TXN( &txn_ctx->txn )->signature_off;
394396

395397
txns[ i ].flags |= FD_TXN_P_FLAGS_EXECUTE_SUCCESS | FD_TXN_P_FLAGS_SANITIZE_SUCCESS;

src/discof/exec/fd_exec_tile.c

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -128,8 +128,9 @@ returnable_frag( fd_exec_tile_ctx_t * ctx,
128128
case FD_EXEC_TT_TXN_EXEC: {
129129
/* Execute. */
130130
fd_exec_txn_exec_msg_t * msg = fd_chunk_to_laddr( ctx->replay_in->mem, chunk );
131-
ctx->txn_ctx->err.exec_err = fd_runtime_prepare_and_execute_txn( ctx->banks,
132-
msg->bank_idx,
131+
fd_bank_t * bank = fd_banks_bank_query( ctx->banks, msg->bank_idx );
132+
FD_TEST( bank );
133+
ctx->txn_ctx->err.exec_err = fd_runtime_prepare_and_execute_txn( bank,
133134
ctx->txn_ctx,
134135
&msg->txn,
135136
ctx->capture_ctx,
@@ -139,7 +140,6 @@ returnable_frag( fd_exec_tile_ctx_t * ctx,
139140
&ctx->tracing_mem[0][0] );
140141

141142
/* Commit. */
142-
fd_bank_t * bank = fd_banks_bank_query( ctx->banks, msg->bank_idx );
143143
if( FD_LIKELY( ctx->txn_ctx->err.is_committable ) ) {
144144
fd_funk_txn_xid_t xid = (fd_funk_txn_xid_t){ .ul = { fd_bank_slot_get( bank ), bank->idx } };
145145
fd_runtime_finalize_txn( ctx->funk, ctx->progcache, ctx->txncache, &xid, ctx->txn_ctx, bank, ctx->capture_ctx, NULL );

src/flamenco/runtime/fd_runtime.c

Lines changed: 21 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1028,35 +1028,43 @@ fd_runtime_finalize_txn( fd_funk_t * funk,
10281028
}
10291029

10301030
int
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

src/flamenco/runtime/fd_runtime.h

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -294,8 +294,7 @@ fd_runtime_pre_execute_check( fd_exec_txn_ctx_t * txn_ctx );
294294
transaction. */
295295

296296
int
297-
fd_runtime_prepare_and_execute_txn( fd_banks_t * banks,
298-
ulong bank_idx,
297+
fd_runtime_prepare_and_execute_txn( fd_bank_t * bank,
299298
fd_exec_txn_ctx_t * txn_ctx,
300299
fd_txn_p_t * txn,
301300
fd_capture_ctx_t * capture_ctx,

src/flamenco/runtime/tests/fd_txn_harness.c

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -361,8 +361,7 @@ fd_solfuzz_txn_ctx_exec( fd_solfuzz_runner_t * runner,
361361
}
362362

363363
*exec_res = fd_runtime_prepare_and_execute_txn(
364-
runner->banks,
365-
0UL,
364+
runner->bank,
366365
txn_ctx,
367366
txn,
368367
NULL,

0 commit comments

Comments
 (0)