|
16 | 16 | #define HEADER_SIZE 4 * 9
|
17 | 17 | #define DEP_TABLE_ENTRY_SIZE 8
|
18 | 18 | #define STABLE_TABLE_ENTRY_SIZE 8
|
19 |
| -#define OBJECTS_TABLE_ENTRY_SIZE 12 |
| 19 | +#define OBJECTS_TABLE_ENTRY_SIZE 16 |
20 | 20 |
|
21 | 21 | /* Some guesses. */
|
22 | 22 | #define DEFAULT_STABLE_DATA_SIZE 4096
|
@@ -262,6 +262,7 @@ static void serialize_object(PARROT_INTERP, SerializationWriter *writer, PMC *ob
|
262 | 262 | write_int32(writer->root.objects_table, offset, sc);
|
263 | 263 | write_int32(writer->root.objects_table, offset + 4, sc_idx);
|
264 | 264 | write_int32(writer->root.objects_table, offset + 8, writer->objects_data_offset);
|
| 265 | + write_int32(writer->root.objects_table, offset + 12, IS_CONCRETE(obj) ? 1 : 0); |
265 | 266 |
|
266 | 267 | /* Increment count of objects in the table. */
|
267 | 268 | writer->root.num_objects++;
|
@@ -613,6 +614,8 @@ static void deserialize_object(PARROT_INTERP, SerializationReader *reader, INTVA
|
613 | 614 | /* Delegate to its deserialization REPR function. */
|
614 | 615 | reader->reading_object = 1;
|
615 | 616 | reader->objects_data_offset = read_int32(obj_table_row, 8);
|
| 617 | + if ((read_int32(obj_table_row, 12) & 1) != 1) |
| 618 | + MARK_AS_TYPE_OBJECT(obj); |
616 | 619 | if (REPR(obj)->deserialize)
|
617 | 620 | REPR(obj)->deserialize(interp, STABLE(obj), OBJECT_BODY(obj), reader);
|
618 | 621 | else
|
|
0 commit comments