Version 3 (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. If possible make this driver implementable in PIR, to make explanations easier to end users and allow for creating clones of the driver with slight modifications from PIR.
  • 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)