Skip to content

Commit a88d0b8

Browse files
committed
Serialize/deserialize CArray representation's REPR data. Should fix pre-compilation of things that use CArray based types.
1 parent 232518c commit a88d0b8

File tree

1 file changed

+20
-0
lines changed

1 file changed

+20
-0
lines changed

src/6model/reprs/CArray.c

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -274,6 +274,24 @@ static STable * get_elem_stable(PARROT_INTERP, STable *st) {
274274
return STABLE(repr_data->elem_type);
275275
}
276276

277+
/* Serializes the REPR data. */
278+
static void serialize_repr_data(PARROT_INTERP, STable *st, SerializationWriter *writer) {
279+
CArrayREPRData *repr_data = (CArrayREPRData *)st->REPR_data;
280+
if (!repr_data->elem_size)
281+
fill_repr_data(interp, st);
282+
writer->write_int(interp, writer, repr_data->elem_size);
283+
writer->write_ref(interp, writer, repr_data->elem_type);
284+
writer->write_int(interp, writer, repr_data->elem_kind);
285+
}
286+
287+
/* Deserializes the REPR data. */
288+
static void deserialize_repr_data(PARROT_INTERP, STable *st, SerializationReader *reader) {
289+
CArrayREPRData *repr_data = st->REPR_data = mem_sys_allocate_zeroed(sizeof(CArrayREPRData));
290+
repr_data->elem_size = reader->read_int(interp, reader);
291+
repr_data->elem_type = reader->read_ref(interp, reader);
292+
repr_data->elem_kind = reader->read_int(interp, reader);
293+
}
294+
277295
/* Initializes the CArray representation. */
278296
REPROps * CArray_initialize(PARROT_INTERP,
279297
PMC * (* wrap_object_func_ptr) (PARROT_INTERP, void *obj),
@@ -302,6 +320,8 @@ REPROps * CArray_initialize(PARROT_INTERP,
302320
this_repr->idx_funcs->make_hole = make_hole;
303321
this_repr->idx_funcs->delete_elems = delete_elems;
304322
this_repr->idx_funcs->get_elem_stable = get_elem_stable;
323+
this_repr->serialize_repr_data = serialize_repr_data;
324+
this_repr->deserialize_repr_data = deserialize_repr_data;
305325

306326
return this_repr;
307327
}

0 commit comments

Comments
 (0)