With Parrot 2.0, we deprecated much of the current freeze/thaw system in order to replace the old system with a more pluggable, PMC-based one. Using PMCs to do freeze/thaw gives a couple opportunities.

Potential Improvements

  • make freeze/thaw aware of surrounding packfile to avoid generating useless headers.
  • make freeze/thaw aware of surrounding packfile in order to use strings from the constant table
  • create a deep cloning visitor
  • create a text format serializer/deserializer

Remaining Short-commings

  • Parrot_visit_loop_{visit,thawfinish} should use iterator interface (get_bool, shift_pmc) in stead of array interface (elements, get_pmc_keyed_int)
  • freeze/thaw and sub's (and similar objects) are still shaky. Sane handling of bytecode is yet to be achieved.