pushaction, pushmark, popmark

Andrew Whitworth wknight8111 at gmail.com
Sat Nov 14 20:28:32 UTC 2009

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

More information about the parrot-dev mailing list