if (h.version != image_version)
fatal_error("Bad image: version number check failed", h.version);
+ if (!h.version4_escape) h.data_size=h.escaped_data_size, h.escaped_data_size=0;
+
load_data_heap(file, &h, p);
load_code_heap(file, &h, p);
cell version;
// base address of data heap when image was saved
cell data_relocation_base;
- // size of heap
- cell data_size;
+ // <>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;
- cell reserved_1;
- 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];