]> gitweb.factorcode.org Git - factor.git/commitdiff
Version 4 compatible image format with reserved fields defined for forwards compatibi... 2591/head
authornomennescio <nomennescio@factorcode.org>
Tue, 22 Aug 2023 20:09:00 +0000 (22:09 +0200)
committernomennescio <nomennescio@factorcode.org>
Tue, 22 Aug 2023 20:09:00 +0000 (22:09 +0200)
Also supports current version 4 image format with undefined fields.
Note that since issue #2580 was solved, new images saved will have zero-initialized fields,
but there's no such guarantee for older version 4 images.

vm/image.hpp

index 8006e328fb10be18a5a7adeeb9c16bfc2e4ada57..67b1b3c8bb3b16df595e953a4f2013a1c765ad71 100644 (file)
@@ -15,17 +15,17 @@ struct image_header {
   cell version;
   // base address of data heap when image was saved
   cell data_relocation_base;
-  // size of data heap
+  // <>0 : size of data heap, ==0 : version4_escape
   union { cell data_size; cell version4_escape; };
   // base address of code heap when image was saved
   cell code_relocation_base;
   // size of code heap
   cell code_size;
 
-  union { cell reserved_1; cell escaped_data_size; };
-  cell reserved_2;
-  cell reserved_3;
-  cell reserved_4;
+  union { cell reserved_1; cell escaped_data_size; }; // undefined if data_size <>0, stores size of data heap otherwise
+  cell reserved_2; // undefined if data_size <>0, 0 otherwise
+  cell reserved_3; // undefined if data_size <>0, 0 otherwise
+  cell reserved_4; // undefined if data_size <>0, 0 otherwise
 
   // Initial user environment
   cell special_objects[special_object_count];