I was looking over the tests in t/op/pushaction.t and it occurs to me that these three ops (pushaction, pushmark, popmark) are all pretty useless as they are currently defined. Back when Parrot was more stack-based, these opcodes added ways to manipulate the global stack, manually rewind the environment to previous positions, and insert event handlers (including subroutine on-exit event handlers). With Parrot no longer being stack-based, most of these capabilities no longer exist. We cannot, for instance, use these opcodes to add an on-exit handler to a subroutine. In fact, if you look at the tests in pushaction.t, you will see we have tests that depend on not being able to do this.
I proposed deprecation of these opcodes previously in TT #876 [1], though the proposal hasn't garnered any attention. I would like to do two things now: 1) Add deprecation notices for these opcodes to be ripped out after 2.0. I don't think much (if any) existing functionality anywhere depends on these ops. 2) Add functionality to Context PMC to implement on-exit handlers. I have some ideas for this but would like to discuss it more. Sound good? --Andrew Whitworth _______________________________________________ http://lists.parrot.org/mailman/listinfo/parrot-dev
