Skip to content

Commit 7275a66

Browse files
committed
Serialize/deserialize v-table and method cache from STable.
1 parent ffeec9c commit 7275a66

File tree

1 file changed

+12
-2
lines changed

1 file changed

+12
-2
lines changed

src/6model/serialization.c

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -455,7 +455,11 @@ static void serialize_stable(PARROT_INTERP, SerializationWriter *writer, PMC *st
455455
write_obj_ref(interp, writer, st->HOW);
456456
write_obj_ref(interp, writer, st->WHAT);
457457

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]);
459463

460464
/* Type check cache. */
461465
write_int_func(interp, writer, st->type_check_cache_length);
@@ -983,7 +987,13 @@ static void deserialize_stable(PARROT_INTERP, SerializationReader *reader, INTVA
983987
st->HOW = read_obj_ref(interp, reader);
984988
st->WHAT = read_obj_ref(interp, reader);
985989

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);
987997

988998
/* Type check cache. */
989999
st->type_check_cache_length = read_int_func(interp, reader);

0 commit comments

Comments
 (0)