Skip to content

Commit 7c1bc58

Browse files
riptlripatel-fd
authored andcommitted
Remove valloc usages
- Use spad/malloc/scratch alloc directly instead of valloc for various old code - Re-enable test_types_walk - Remove unnecessary allocs in VM test code - Remove instruction context new/join/leave/delete boilerplate
1 parent c66cdcf commit 7c1bc58

File tree

17 files changed

+81
-236
lines changed

17 files changed

+81
-236
lines changed

src/ballet/sbpf/test_sbpf_loader.c

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,6 @@
1+
#ifndef FD_SCRATCH_USE_HANDHOLDING
2+
#define FD_SCRATCH_USE_HANDHOLDING 1
3+
#endif
14
#include "fd_sbpf_loader.h"
25
#include "../../util/fd_util.h"
36

@@ -37,19 +40,16 @@ LOAD_ELF( duplicate_entrypoint_entry )
3740
void test_duplicate_entrypoint_entry( void ) {
3841
// TODO: boilerplate
3942
fd_scratch_push();
40-
fd_valloc_t valloc = fd_scratch_virtual();
4143
fd_sbpf_elf_info_t info;
4244

4345
fd_sbpf_elf_peek( &info, duplicate_entrypoint_entry_elf, duplicate_entrypoint_entry_elf_sz, /* deploy checks */ 1, FD_SBPF_V0, FD_SBPF_V3 );
4446

45-
void* rodata = fd_valloc_malloc( valloc, FD_SBPF_PROG_RODATA_ALIGN, info.rodata_footprint );
47+
void * rodata = fd_scratch_alloc( FD_SBPF_PROG_RODATA_ALIGN, info.rodata_footprint );
4648
FD_TEST( rodata );
4749

50+
fd_sbpf_program_t * prog = fd_sbpf_program_new( fd_scratch_alloc( fd_sbpf_program_align(), fd_sbpf_program_footprint( &info ) ), &info, rodata );
4851

49-
50-
fd_sbpf_program_t * prog = fd_sbpf_program_new( fd_valloc_malloc( valloc, fd_sbpf_program_align(), fd_sbpf_program_footprint( &info ) ), &info, rodata );
51-
52-
fd_sbpf_syscalls_t * syscalls = fd_sbpf_syscalls_new( fd_valloc_malloc( valloc, fd_sbpf_syscalls_align(), fd_sbpf_syscalls_footprint() ));
52+
fd_sbpf_syscalls_t * syscalls = fd_sbpf_syscalls_new( fd_scratch_alloc( fd_sbpf_syscalls_align(), fd_sbpf_syscalls_footprint() ) );
5353
for( uint const * x = _syscalls; *x; x++ )
5454
fd_sbpf_syscalls_insert( syscalls, (ulong)*x );
5555

src/discof/rpcserver/fd_rpc_service.c

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2292,9 +2292,8 @@ fd_webserver_ws_subscribe(struct json_values* values, ulong conn_id, void * cb_a
22922292

22932293
void
22942294
fd_rpc_create_ctx(fd_rpcserver_args_t * args, fd_rpc_ctx_t ** ctx_p) {
2295-
fd_valloc_t valloc = fd_spad_virtual( args->spad );
2296-
fd_rpc_ctx_t * ctx = (fd_rpc_ctx_t *)fd_valloc_malloc(valloc, alignof(fd_rpc_ctx_t), sizeof(fd_rpc_ctx_t));
2297-
fd_rpc_global_ctx_t * gctx = (fd_rpc_global_ctx_t *)fd_valloc_malloc(valloc, alignof(fd_rpc_global_ctx_t), sizeof(fd_rpc_global_ctx_t));
2295+
fd_rpc_ctx_t * ctx = (fd_rpc_ctx_t *)fd_spad_alloc( args->spad, alignof(fd_rpc_ctx_t), sizeof(fd_rpc_ctx_t) );
2296+
fd_rpc_global_ctx_t * gctx = (fd_rpc_global_ctx_t *)fd_spad_alloc( args->spad, alignof(fd_rpc_global_ctx_t), sizeof(fd_rpc_global_ctx_t) );
22982297
fd_memset(ctx, 0, sizeof(fd_rpc_ctx_t));
22992298
fd_memset(gctx, 0, sizeof(fd_rpc_global_ctx_t));
23002299

@@ -2319,7 +2318,7 @@ fd_rpc_create_ctx(fd_rpcserver_args_t * args, fd_rpc_ctx_t ** ctx_p) {
23192318
gctx->tpu_socket = -1;
23202319
}
23212320

2322-
void * mem = fd_valloc_malloc( valloc, fd_perf_sample_deque_align(), fd_perf_sample_deque_footprint() );
2321+
void * mem = fd_spad_alloc( args->spad, fd_perf_sample_deque_align(), fd_perf_sample_deque_footprint() );
23232322
gctx->perf_samples = fd_perf_sample_deque_join( fd_perf_sample_deque_new( mem ) );
23242323
FD_TEST( gctx->perf_samples );
23252324

src/flamenco/gossip/fd_gossip_spy.c

Lines changed: 9 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -222,8 +222,6 @@ main( int argc,
222222
char ** argv ) {
223223
fd_boot( &argc, &argv );
224224

225-
fd_valloc_t valloc = fd_libc_alloc_virtual();
226-
227225
fd_gossip_config_t config;
228226
fd_memset(&config, 0, sizeof(config));
229227

@@ -243,21 +241,22 @@ main( int argc,
243241

244242
config.shred_version = 4274;
245243

244+
void * yaml_mem = aligned_alloc( fd_flamenco_yaml_align(), fd_flamenco_yaml_footprint() );
245+
FD_TEST( yaml_mem );
246246
fd_flamenco_yaml_t * yamldump =
247-
fd_flamenco_yaml_init( fd_flamenco_yaml_new(
248-
fd_valloc_malloc( valloc, fd_flamenco_yaml_align(), fd_flamenco_yaml_footprint() ) ),
249-
stdout );
247+
fd_flamenco_yaml_init( fd_flamenco_yaml_new( yaml_mem ), stdout );
250248
config.deliver_fun = print_data;
251249
config.deliver_arg = yamldump;
252250
config.send_fun = send_packet;
253251
config.send_arg = NULL;
254252

255253
ulong seed = fd_hash(0, hostname, strnlen(hostname, sizeof(hostname)));
256254

257-
void * shm = fd_valloc_malloc(valloc, fd_gossip_align(), fd_gossip_footprint());
255+
void * shm = aligned_alloc( fd_gossip_align(), fd_gossip_footprint() );
256+
FD_TEST( shm );
258257
fd_gossip_t * glob = fd_gossip_join(fd_gossip_new(shm, seed));
259258

260-
if ( fd_gossip_set_config(glob, &config) )
259+
if( fd_gossip_set_config( glob, &config ) )
261260
return 1;
262261

263262
fd_gossip_peer_addr_t peeraddr;
@@ -277,18 +276,17 @@ main( int argc,
277276
// return 1;
278277
// if ( fd_gossip_add_active_peer(glob, resolve_hostport("entrypoint3.testnet.solana.com:8001", &peeraddr)) )
279278
// return 1;
280-
if ( fd_gossip_add_active_peer(glob, resolve_hostport(":1024", &peeraddr)) )
281-
return 1;
279+
if( fd_gossip_add_active_peer( glob, resolve_hostport( ":1024", &peeraddr ) ) ) return 1;
282280

283281
signal(SIGINT, stop);
284282
signal(SIGPIPE, SIG_IGN);
285283

286284
if ( main_loop(glob, &config, &stopflag) )
287285
return 1;
288286

289-
fd_valloc_free(valloc, fd_flamenco_yaml_delete(yamldump));
287+
free( fd_flamenco_yaml_delete(yamldump) );
290288

291-
fd_valloc_free(valloc, fd_gossip_delete(fd_gossip_leave(glob)));
289+
free( fd_gossip_delete( fd_gossip_leave( glob ) ) );
292290

293291
fd_halt();
294292
return 0;

src/flamenco/repair/fd_repair_tool.c

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -326,8 +326,6 @@ main_loop( int * argc, char *** argv, fd_repair_t * glob, fd_repair_config_t * c
326326
int main(int argc, char **argv) {
327327
fd_boot( &argc, &argv );
328328

329-
fd_valloc_t valloc = fd_libc_alloc_virtual();
330-
331329
fd_repair_config_t config;
332330
fd_memset(&config, 0, sizeof(config));
333331

@@ -348,7 +346,8 @@ int main(int argc, char **argv) {
348346

349347
ulong seed = fd_hash(0, hostname, strnlen(hostname, sizeof(hostname)));
350348

351-
void * shm = fd_valloc_malloc(valloc, fd_repair_align(), fd_repair_footprint());
349+
void * shm = aligned_alloc( fd_repair_align(), fd_repair_footprint() );
350+
FD_TEST( shm );
352351
fd_repair_t * glob = fd_repair_join(fd_repair_new(shm, seed ));
353352

354353
if ( fd_repair_set_config(glob, &config) )
@@ -360,7 +359,7 @@ int main(int argc, char **argv) {
360359
if ( main_loop(&argc, &argv, glob, &config, &stopflag) )
361360
return 1;
362361

363-
fd_valloc_free(valloc, fd_repair_delete(fd_repair_leave(glob) ));
362+
free( fd_repair_delete(fd_repair_leave(glob) ) );
364363

365364
fd_halt();
366365

src/flamenco/runtime/context/fd_exec_instr_ctx.c

Lines changed: 0 additions & 80 deletions
Original file line numberDiff line numberDiff line change
@@ -1,86 +1,6 @@
11
#include "fd_exec_instr_ctx.h"
22
#include "../fd_borrowed_account.h"
33

4-
void *
5-
fd_exec_instr_ctx_new( void * mem ) {
6-
if( FD_UNLIKELY( !mem ) ) {
7-
FD_LOG_WARNING(( "NULL mem" ));
8-
return NULL;
9-
}
10-
11-
if( FD_UNLIKELY( !fd_ulong_is_aligned( (ulong)mem, FD_EXEC_INSTR_CTX_ALIGN ) ) ) {
12-
FD_LOG_WARNING(( "misaligned mem" ));
13-
return NULL;
14-
}
15-
16-
fd_memset(mem, 0, FD_EXEC_INSTR_CTX_FOOTPRINT);
17-
18-
fd_exec_instr_ctx_t * self = (fd_exec_instr_ctx_t *) mem;
19-
20-
FD_COMPILER_MFENCE();
21-
self->magic = FD_EXEC_INSTR_CTX_MAGIC;
22-
FD_COMPILER_MFENCE();
23-
24-
return mem;
25-
}
26-
27-
fd_exec_instr_ctx_t *
28-
fd_exec_instr_ctx_join( void * mem ) {
29-
if( FD_UNLIKELY( !mem ) ) {
30-
FD_LOG_WARNING(( "NULL block" ));
31-
return NULL;
32-
}
33-
34-
fd_exec_instr_ctx_t * ctx = (fd_exec_instr_ctx_t *) mem;
35-
36-
if( FD_UNLIKELY( ctx->magic!=FD_EXEC_INSTR_CTX_MAGIC ) ) {
37-
FD_LOG_WARNING(( "bad magic" ));
38-
return NULL;
39-
}
40-
41-
return ctx;
42-
}
43-
44-
void *
45-
fd_exec_instr_ctx_leave( fd_exec_instr_ctx_t * ctx) {
46-
if( FD_UNLIKELY( !ctx ) ) {
47-
FD_LOG_WARNING(( "NULL block" ));
48-
return NULL;
49-
}
50-
51-
if( FD_UNLIKELY( ctx->magic!=FD_EXEC_INSTR_CTX_MAGIC ) ) {
52-
FD_LOG_WARNING(( "bad magic" ));
53-
return NULL;
54-
}
55-
56-
return (void *) ctx;
57-
}
58-
59-
void *
60-
fd_exec_instr_ctx_delete( void * mem ) {
61-
if( FD_UNLIKELY( !mem ) ) {
62-
FD_LOG_WARNING(( "NULL mem" ));
63-
return NULL;
64-
}
65-
66-
if( FD_UNLIKELY( !fd_ulong_is_aligned( (ulong)mem, FD_EXEC_INSTR_CTX_ALIGN) ) ) {
67-
FD_LOG_WARNING(( "misaligned mem" ));
68-
return NULL;
69-
}
70-
71-
fd_exec_instr_ctx_t * hdr = (fd_exec_instr_ctx_t *)mem;
72-
if( FD_UNLIKELY( hdr->magic!=FD_EXEC_INSTR_CTX_MAGIC ) ) {
73-
FD_LOG_WARNING(( "bad magic" ));
74-
return NULL;
75-
}
76-
77-
FD_COMPILER_MFENCE();
78-
FD_VOLATILE( hdr->magic ) = 0UL;
79-
FD_COMPILER_MFENCE();
80-
81-
return mem;
82-
}
83-
844
int
855
fd_exec_instr_ctx_find_idx_of_instr_account( fd_exec_instr_ctx_t const * ctx,
866
fd_pubkey_t const * pubkey ) {

src/flamenco/runtime/context/fd_exec_instr_ctx.h

Lines changed: 0 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,6 @@ typedef struct fd_borrowed_account fd_borrowed_account_t;
1313
instruction (program invocation). */
1414

1515
struct fd_exec_instr_ctx {
16-
ulong magic; /* ==FD_EXEC_INSTR_CTX_MAGIC */
1716
fd_instr_info_t const * instr; /* The instruction info for this instruction */
1817
fd_exec_txn_ctx_t * txn_ctx; /* The transaction context for this instruction */
1918
fd_sysvar_cache_t const * sysvar_cache;
@@ -25,7 +24,6 @@ struct fd_exec_instr_ctx {
2524

2625
#define FD_EXEC_INSTR_CTX_ALIGN (alignof(fd_exec_instr_ctx_t))
2726
#define FD_EXEC_INSTR_CTX_FOOTPRINT (sizeof (fd_exec_instr_ctx_t))
28-
#define FD_EXEC_INSTR_CTX_MAGIC (0x18964FC6EDAAC5A8UL) /* random */
2927

3028
/* Be careful when using this macro. There may be places where the error
3129
will need to be handled differently. */
@@ -36,20 +34,6 @@ struct fd_exec_instr_ctx {
3634

3735
FD_PROTOTYPES_BEGIN
3836

39-
/* Constructors */
40-
41-
void *
42-
fd_exec_instr_ctx_new( void * mem );
43-
44-
fd_exec_instr_ctx_t *
45-
fd_exec_instr_ctx_join( void * mem );
46-
47-
void *
48-
fd_exec_instr_ctx_leave( fd_exec_instr_ctx_t * ctx );
49-
50-
void *
51-
fd_exec_instr_ctx_delete( void * mem );
52-
5337
/* Operators */
5438

5539
/* Mirrors Agave function solana_sdk::transaction_context::InstructionContext::check_number_of_instruction_accounts

src/flamenco/runtime/tests/harness/fd_elf_harness.c

Lines changed: 5 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -10,9 +10,8 @@ fd_runtime_fuzz_sbpf_load_run( fd_runtime_fuzz_runner_t * runner,
1010
fd_exec_test_elf_loader_effects_t ** output = fd_type_pun( output_ );
1111

1212
fd_sbpf_elf_info_t info;
13-
fd_valloc_t valloc = fd_spad_virtual( runner->spad );
1413

15-
if ( FD_UNLIKELY( !input->has_elf || !input->elf.data ) ){
14+
if( FD_UNLIKELY( !input->has_elf || !input->elf.data ) ) {
1615
return 0UL;
1716
}
1817

@@ -42,14 +41,12 @@ fd_runtime_fuzz_sbpf_load_run( fd_runtime_fuzz_runner_t * runner,
4241
break;
4342
}
4443

45-
void* rodata = fd_valloc_malloc( valloc, FD_SBPF_PROG_RODATA_ALIGN, info.rodata_footprint );
46-
FD_TEST( rodata );
44+
fd_spad_t * spad = runner->spad;
45+
void * rodata = fd_spad_alloc_check( spad, FD_SBPF_PROG_RODATA_ALIGN, info.rodata_footprint );
4746

48-
fd_sbpf_program_t * prog = fd_sbpf_program_new( fd_valloc_malloc( valloc, fd_sbpf_program_align(), fd_sbpf_program_footprint( &info ) ), &info, rodata );
49-
FD_TEST( prog );
47+
fd_sbpf_program_t * prog = fd_sbpf_program_new( fd_spad_alloc_check( spad, fd_sbpf_program_align(), fd_sbpf_program_footprint( &info ) ), &info, rodata );
5048

51-
fd_sbpf_syscalls_t * syscalls = fd_sbpf_syscalls_new( fd_valloc_malloc( valloc, fd_sbpf_syscalls_align(), fd_sbpf_syscalls_footprint() ));
52-
FD_TEST( syscalls );
49+
fd_sbpf_syscalls_t * syscalls = fd_sbpf_syscalls_new( fd_spad_alloc_check( spad, fd_sbpf_syscalls_align(), fd_sbpf_syscalls_footprint() ));
5350

5451
fd_vm_syscall_register_all( syscalls, 0 );
5552

src/flamenco/runtime/tests/harness/fd_vm_harness.c

Lines changed: 9 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -108,8 +108,7 @@ fd_runtime_fuzz_vm_interp_run( fd_runtime_fuzz_runner_t * runner,
108108
return 0UL;
109109
}
110110

111-
fd_spad_t * spad = runner->spad;
112-
fd_valloc_t valloc = fd_spad_virtual( spad );
111+
fd_spad_t * spad = runner->spad;
113112

114113
/* Create effects */
115114
ulong output_end = (ulong) output_buf + output_bufsz;
@@ -180,7 +179,7 @@ do{
180179
Alloc calldests with the expected size (1 bit per ix, rounded up to ulong) */
181180
ulong max_pc = (rodata_sz + 7) / 8;
182181
ulong calldests_footprint = fd_sbpf_calldests_footprint( max_pc );
183-
void * calldests_mem = fd_valloc_malloc( valloc, fd_sbpf_calldests_align(), calldests_footprint );
182+
void * calldests_mem = fd_spad_alloc_check( spad, fd_sbpf_calldests_align(), calldests_footprint );
184183
ulong * calldests = fd_sbpf_calldests_join( fd_sbpf_calldests_new( calldests_mem, max_pc ) );
185184
if( input->vm_ctx.call_whitelist && input->vm_ctx.call_whitelist->size > 0 ) {
186185
memcpy( calldests, input->vm_ctx.call_whitelist->bytes, input->vm_ctx.call_whitelist->size );
@@ -197,7 +196,7 @@ do{
197196
}
198197

199198
/* Setup syscalls. Have them all be no-ops */
200-
fd_sbpf_syscalls_t * syscalls = fd_sbpf_syscalls_new( fd_valloc_malloc( valloc, fd_sbpf_syscalls_align(), fd_sbpf_syscalls_footprint() ) );
199+
fd_sbpf_syscalls_t * syscalls = fd_sbpf_syscalls_new( fd_spad_alloc_check( spad, fd_sbpf_syscalls_align(), fd_sbpf_syscalls_footprint() ) );
201200
fd_vm_syscall_register_slot( syscalls,
202201
instr_ctx->txn_ctx->slot,
203202
&instr_ctx->txn_ctx->features,
@@ -217,11 +216,11 @@ do{
217216
ulong event_data_max = 2048UL;
218217

219218
if (!!tracing_enabled) {
220-
trace = fd_vm_trace_new( fd_valloc_malloc( valloc, fd_vm_trace_align(), fd_vm_trace_footprint( event_max, event_data_max ) ), event_max, event_data_max );
219+
trace = fd_vm_trace_new( fd_spad_alloc_check( spad, fd_vm_trace_align(), fd_vm_trace_footprint( event_max, event_data_max ) ), event_max, event_data_max );
221220
}
222221

223222
/* Setup vm */
224-
fd_vm_t * vm = fd_vm_join( fd_vm_new( fd_valloc_malloc( valloc, fd_vm_align(), fd_vm_footprint() ) ) );
223+
fd_vm_t * vm = fd_vm_join( fd_vm_new( fd_spad_alloc_check( spad, fd_vm_align(), fd_vm_footprint() ) ) );
225224
FD_TEST( vm );
226225

227226
fd_vm_init(
@@ -388,7 +387,6 @@ fd_runtime_fuzz_vm_syscall_run( fd_runtime_fuzz_runner_t * runner,
388387

389388
if( !fd_runtime_fuzz_instr_ctx_create( runner, ctx, input_instr_ctx, skip_extra_checks ) )
390389
goto error;
391-
fd_valloc_t valloc = fd_spad_virtual( runner->spad );
392390

393391
ctx->txn_ctx->instr_trace[0].instr_info = (fd_instr_info_t *)ctx->instr;
394392
ctx->txn_ctx->instr_trace[0].stack_height = 1;
@@ -415,9 +413,10 @@ fd_runtime_fuzz_vm_syscall_run( fd_runtime_fuzz_runner_t * runner,
415413
*effects = (fd_exec_test_syscall_effects_t) FD_EXEC_TEST_SYSCALL_EFFECTS_INIT_ZERO;
416414

417415
/* Set up the VM instance */
416+
fd_spad_t * spad = runner->spad;
418417
fd_sha256_t _sha[1];
419418
fd_sha256_t * sha = fd_sha256_join( fd_sha256_new( _sha ) );
420-
fd_sbpf_syscalls_t * syscalls = fd_sbpf_syscalls_new( fd_valloc_malloc( valloc, fd_sbpf_syscalls_align(), fd_sbpf_syscalls_footprint() ) );
419+
fd_sbpf_syscalls_t * syscalls = fd_sbpf_syscalls_new( fd_spad_alloc_check( spad, fd_sbpf_syscalls_align(), fd_sbpf_syscalls_footprint() ) );
421420
fd_vm_syscall_register_all( syscalls, 0 );
422421

423422
/* Pull out the memory regions */
@@ -426,7 +425,7 @@ fd_runtime_fuzz_vm_syscall_run( fd_runtime_fuzz_runner_t * runner,
426425
}
427426

428427
ulong rodata_sz = input->vm_ctx.rodata ? input->vm_ctx.rodata->size : 0UL;
429-
uchar * rodata = fd_valloc_malloc( valloc, 8UL, rodata_sz );
428+
uchar * rodata = fd_spad_alloc_check( spad, 8UL, rodata_sz );
430429
if ( input->vm_ctx.rodata != NULL ) {
431430
fd_memcpy( rodata, input->vm_ctx.rodata->bytes, rodata_sz );
432431
}
@@ -435,7 +434,7 @@ fd_runtime_fuzz_vm_syscall_run( fd_runtime_fuzz_runner_t * runner,
435434
goto error;
436435
}
437436

438-
fd_vm_t * vm = fd_vm_join( fd_vm_new( fd_valloc_malloc( valloc, fd_vm_align(), fd_vm_footprint() ) ) );
437+
fd_vm_t * vm = fd_vm_join( fd_vm_new( fd_spad_alloc_check( spad, fd_vm_align(), fd_vm_footprint() ) ) );
439438
if ( !vm ) {
440439
goto error;
441440
}

src/flamenco/types/Local.mk

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,11 +2,13 @@ ifdef FD_HAS_INT128
22
$(call add-hdrs,fd_bincode.h fd_types.h fd_types_custom.h fd_types_meta.h fd_types_yaml.h fd_cast.h)
33
$(call add-objs,fd_types fd_types_yaml,fd_flamenco)
44
$(call make-unit-test,test_types_meta,test_types_meta,fd_flamenco fd_ballet fd_util)
5+
$(call make-unit-test,test_types_walk,test_types_walk,fd_flamenco fd_ballet fd_util)
56
$(call make-unit-test,test_types_yaml,test_types_yaml,fd_flamenco fd_ballet fd_util)
67
$(OBJDIR)/obj/flamenco/types/test_types_fixtures.o: $(wildcard src/flamenco/types/fixtures/*.bin) $(wildcard src/flamenco/types/fixtures/*.yml)
78
$(call make-unit-test,test_types_fixtures,test_types_fixtures,fd_flamenco fd_ballet fd_util)
89
$(call make-unit-test,test_cast,test_cast,fd_flamenco fd_ballet fd_util)
910
$(call run-unit-test,test_types_meta)
11+
$(call run-unit-test,test_types_walk)
1012
$(call run-unit-test,test_types_yaml)
1113
$(call run-unit-test,test_types_fixtures)
1214
$(call run-unit-test,test_cast)

0 commit comments

Comments
 (0)