@@ -455,7 +455,11 @@ static void serialize_stable(PARROT_INTERP, SerializationWriter *writer, PMC *st
455
455
write_obj_ref (interp , writer , st -> HOW );
456
456
write_obj_ref (interp , writer , st -> WHAT );
457
457
458
- /* XXX Method cache and v-table. */
458
+ /* Method cache and v-table. */
459
+ write_ref_func (interp , writer , st -> method_cache );
460
+ write_int_func (interp , writer , st -> vtable_length );
461
+ for (i = 0 ; i < st -> vtable_length ; i ++ )
462
+ write_ref_func (interp , writer , st -> vtable [i ]);
459
463
460
464
/* Type check cache. */
461
465
write_int_func (interp , writer , st -> type_check_cache_length );
@@ -983,7 +987,13 @@ static void deserialize_stable(PARROT_INTERP, SerializationReader *reader, INTVA
983
987
st -> HOW = read_obj_ref (interp , reader );
984
988
st -> WHAT = read_obj_ref (interp , reader );
985
989
986
- /* XXX Method cache and v-table. */
990
+ /* Method cache and v-table. */
991
+ st -> method_cache = read_ref_func (interp , reader );
992
+ st -> vtable_length = read_int_func (interp , reader );
993
+ if (st -> vtable_length > 0 )
994
+ st -> vtable = mem_sys_allocate (st -> vtable_length * sizeof (PMC * ));
995
+ for (i = 0 ; i < st -> vtable_length ; i ++ )
996
+ st -> vtable [i ] = read_ref_func (interp , reader );
987
997
988
998
/* Type check cache. */
989
999
st -> type_check_cache_length = read_int_func (interp , reader );
0 commit comments