@@ -306,9 +306,13 @@ static void add_lostval_parent(jl_value_t* parent)
306
306
} \
307
307
} while(0);
308
308
309
+ #define verify_parent1 (ty ,obj ,slot ,arg1 ) verify_parent(ty,obj,slot,arg1)
310
+ #define verify_parent2 (ty ,obj ,slot ,arg1 ,arg2 ) verify_parent(ty,obj,slot,arg1,arg2)
311
+
309
312
#else
310
313
#define verify_val (v )
311
- #define verify_parent (ty ,obj ,slot ,args ...)
314
+ #define verify_parent1 (ty ,obj ,slot ,arg1 )
315
+ #define verify_parent2 (ty ,obj ,slot ,arg1 ,arg2 )
312
316
#endif
313
317
314
318
#ifdef OBJPROFILE
@@ -1408,7 +1412,7 @@ static void gc_mark_stack(jl_value_t* ta, jl_gcframe_t *s, ptrint_t offset, int
1408
1412
else {
1409
1413
for (size_t i = 0 ; i < nr ; i ++ ) {
1410
1414
if (rts [i ] != NULL ) {
1411
- verify_parent ("task" , ta , & rts [i ], "stack(%d)" , i );
1415
+ verify_parent2 ("task" , ta , & rts [i ], "stack(%d)" , i );
1412
1416
gc_push_root (rts [i ], d );
1413
1417
}
1414
1418
}
@@ -1428,10 +1432,10 @@ NOINLINE static int gc_mark_module(jl_module_t *m, int d)
1428
1432
gc_setmark_buf (b , gc_bits (m ));
1429
1433
#ifdef GC_VERIFY
1430
1434
void * vb = gc_val_buf (b );
1431
- verify_parent ("module" , m , & vb , "binding_buff" );
1435
+ verify_parent1 ("module" , m , & vb , "binding_buff" );
1432
1436
#endif
1433
1437
if (b -> value != NULL ) {
1434
- verify_parent ("module" , m , & b -> value , "binding(%s)" , b -> name -> name );
1438
+ verify_parent2 ("module" , m , & b -> value , "binding(%s)" , b -> name -> name );
1435
1439
refyoung |= gc_push_root (b -> value , d );
1436
1440
}
1437
1441
if (b -> type != (jl_value_t * )jl_any_type ) {
@@ -1447,7 +1451,7 @@ NOINLINE static int gc_mark_module(jl_module_t *m, int d)
1447
1451
refyoung |= gc_push_root (m -> usings .items [i ], d );
1448
1452
}
1449
1453
if (m -> constant_table ) {
1450
- verify_parent ("module" , m , & m -> constant_table , "constant_table" );
1454
+ verify_parent1 ("module" , m , & m -> constant_table , "constant_table" );
1451
1455
refyoung |= gc_push_root (m -> constant_table , d );
1452
1456
}
1453
1457
return refyoung ;
@@ -1540,7 +1544,7 @@ static int push_root(jl_value_t *v, int d, int bits)
1540
1544
for (size_t i = 0 ; i < l ; i ++ ) {
1541
1545
jl_value_t * elt = data [i ];
1542
1546
if (elt != NULL ) {
1543
- verify_parent ("tuple" , v , & data [i ], "elem(%d)" , i );
1547
+ verify_parent2 ("tuple" , v , & data [i ], "elem(%d)" , i );
1544
1548
refyoung |= gc_push_root (elt , d );
1545
1549
}
1546
1550
}
@@ -1581,7 +1585,7 @@ static int push_root(jl_value_t *v, int d, int bits)
1581
1585
else if (a -> how == 1 ) {
1582
1586
#ifdef GC_VERIFY
1583
1587
void * val_buf = gc_val_buf ((char * )a -> data - a -> offset * a -> elsize );
1584
- verify_parent ("array" , v , & val_buf , "buffer ('loc' addr is meaningless)" );
1588
+ verify_parent1 ("array" , v , & val_buf , "buffer ('loc' addr is meaningless)" );
1585
1589
#endif
1586
1590
gc_setmark_buf ((char * )a -> data - a -> offset * a -> elsize , gc_bits (v ));
1587
1591
}
@@ -1597,7 +1601,7 @@ static int push_root(jl_value_t *v, int d, int bits)
1597
1601
for (size_t i = 0 ; i < l ; i ++ ) {
1598
1602
jl_value_t * elt = ((jl_value_t * * )data )[i ];
1599
1603
if (elt != NULL ) {
1600
- verify_parent ("array" , v , & ((jl_value_t * * )data )[i ], "elem(%d)" , i );
1604
+ verify_parent2 ("array" , v , & ((jl_value_t * * )data )[i ], "elem(%d)" , i );
1601
1605
refyoung |= gc_push_root (elt , d );
1602
1606
}
1603
1607
// try to split large array marking (incremental mark TODO)
@@ -1641,7 +1645,7 @@ static int push_root(jl_value_t *v, int d, int bits)
1641
1645
jl_value_t * * slot = (jl_value_t * * )((char * )v + fields [i ].offset + sizeof (void * ));
1642
1646
jl_value_t * fld = * slot ;
1643
1647
if (fld ) {
1644
- verify_parent ("object" , v , slot , "field(%d)" , i );
1648
+ verify_parent2 ("object" , v , slot , "field(%d)" , i );
1645
1649
//children[ci++] = fld;
1646
1650
refyoung |= gc_push_root (fld , d );
1647
1651
}
0 commit comments