Version 1 (modified by plobsing, 4 years ago)

--

With Parrot 2.0, we deprecated much of the current freeze/thaw system in order to replace the current system with a more pluggable one.

The Plan

  • Replace visit_info with PMCs (tentatively named ImageIOFreeze and ImageIOThaw) which:
    • satisfy the interface visit_info provides PMCs being frozen/thawed.
    • provide an interface (preferably vtable) for src/pmc_freeze.c to use.
  • Convert src/pmc_freeze.c into a driver around these PMCs. All encoding/decoding logic should be in the PMCs
  • Create alternate reader/writer/visitor PMCs to eg: provide a simple text representation (which might allow PASM to contain all information in PBC); provide a size accumulator (TT #362)

Longer Term

  • Add bytecode management to the freeze/thaw PMC interface somehow (TT #1359)
  • Eliminate freeze, thaw, and other vtable interfaces in preference of a generic visit vtable, which changes behaviour based on flags (eg: mark becomes: visit pushing PMCs and strings, no order information required; thaw becomes: visit shifting ints, strings, and nums, ordering information required)