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

Reply via email to