So more changes in packfile and related files, including: - all packfile segments share a common header which is effectively the format of a byte_code segment - all packfile segments conforming to this format are unpacked with the default_unpack routine, which just sets up a pointer to the data if they are mmap()ed (and are in native format) or makes a copy of the data, which means: - byte_code doesn't get copied anymore, when the PBC is mmap()ed - and: self modifying code is a nono - but we don't ;-) - segments with more or differing data have their own pack/unpack functions - The segments are aligned on 4 op boundarys, as well as bytecode - when mmap()ing the PBC fails, it gets read by IO - the pdump utility got two new switches -t (terse), -d (disassemble)
Imcc changes: - adapted for above packfile - more tests - "perl t/harness -c" runs via new format PBC files (and shows 4 errors due to fixup quirks with evaled code in PBC :) Some TODOs or leftovers: - still (or more) wordsize issues with unpacking: to solve these IMHO the fetch_xxx should look like xxx PackFile_fetch_xxx(struct PackFile *pf, ptr_t **stream); advancing the stream ptr by one packfile wordsize, or doing whatever is necessary on CRAY or such - BTW does some has a spare CRAY for testing at home, just send it over - small one with less then 5kW heat emission prefered. Similar changes for the other packfile fetch functions + fetch_sv(). Or: Create external conversion program? - 8/12 byte float issues are still the same - are these formats really portable, or should we try to store ASCII equivalents? - The directory based approach now should be fully recursive allowing for nested dirs - of course untested, but ... leo