@@ -653,13 +653,15 @@ static int jl_serialize_generic(jl_serializer_state *s, jl_value_t *v) JL_GC_DIS
653
653
return 0 ;
654
654
}
655
655
656
- static void jl_serialize_code_instance (jl_serializer_state * s , jl_code_instance_t * codeinst , int skip_partial_opaque , int internal ) JL_GC_DISABLED
656
+ static void jl_serialize_code_instance (jl_serializer_state * s , jl_code_instance_t * codeinst ,
657
+ int skip_partial_opaque , int internal ,
658
+ int force ) JL_GC_DISABLED
657
659
{
658
660
if (internal > 2 ) {
659
661
while (codeinst && !codeinst -> relocatability )
660
662
codeinst = codeinst -> next ;
661
663
}
662
- if (jl_serialize_generic (s , (jl_value_t * )codeinst )) {
664
+ if (! force && jl_serialize_generic (s , (jl_value_t * )codeinst )) {
663
665
return ;
664
666
}
665
667
assert (codeinst != NULL ); // handle by jl_serialize_generic, but this makes clang-sa happy
@@ -680,7 +682,7 @@ static void jl_serialize_code_instance(jl_serializer_state *s, jl_code_instance_
680
682
if (write_ret_type && codeinst -> rettype_const &&
681
683
jl_typeis (codeinst -> rettype_const , jl_partial_opaque_type )) {
682
684
if (skip_partial_opaque ) {
683
- jl_serialize_code_instance (s , codeinst -> next , skip_partial_opaque , internal );
685
+ jl_serialize_code_instance (s , codeinst -> next , skip_partial_opaque , internal , 0 );
684
686
return ;
685
687
}
686
688
else {
@@ -707,7 +709,7 @@ static void jl_serialize_code_instance(jl_serializer_state *s, jl_code_instance_
707
709
jl_serialize_value (s , jl_nothing );
708
710
}
709
711
write_uint8 (s -> s , codeinst -> relocatability );
710
- jl_serialize_code_instance (s , codeinst -> next , skip_partial_opaque , internal );
712
+ jl_serialize_code_instance (s , codeinst -> next , skip_partial_opaque , internal , 0 );
711
713
}
712
714
713
715
enum METHOD_SERIALIZATION_MODE {
@@ -968,10 +970,10 @@ static void jl_serialize_value_(jl_serializer_state *s, jl_value_t *v, int as_li
968
970
}
969
971
jl_serialize_value (s , (jl_value_t * )backedges );
970
972
jl_serialize_value (s , (jl_value_t * )NULL ); //callbacks
971
- jl_serialize_code_instance (s , mi -> cache , 1 , internal );
973
+ jl_serialize_code_instance (s , mi -> cache , 1 , internal , 0 );
972
974
}
973
975
else if (jl_is_code_instance (v )) {
974
- jl_serialize_code_instance (s , (jl_code_instance_t * )v , 0 , 2 );
976
+ jl_serialize_code_instance (s , (jl_code_instance_t * )v , 0 , 2 , 1 );
975
977
}
976
978
else if (jl_typeis (v , jl_module_type )) {
977
979
jl_serialize_module (s , (jl_module_t * )v );
0 commit comments