Hi,

We have a couple of bits of OO stuff missing in Parrot.

The callmethodsupercc op isn't implemented. I'm thinking for this we need a variant of find_method, which does the required skipping over the current class?

We'll also need to work out how to do callmethodnextcc too, which is another find_method variant, I guess. It occurs to me that if we're doing a next method style thing, then we know what the last method was, and we can pass that as a "resume from this point" style thing, and if possible that can be optimized somehow later to do something better than the obvious going through the lookup process until we find the current method and then returning the one we find after that.

Even with super implemented, this doesn't help me with a more immediate issue. I need to take a PMC, subclass it with a high level class, then override one of the v-table methods in PIR. All this I can do fine. But what I can't see how to do with what we currently have (neither spec'd nor implemented), is to invoke the super of the v-table method. For example, you might want to override assign_pmc to do some check on the value, and then call the original v-table method in the PMC we inherited from to actually stash the value being assigned somewhere. What should this look like at a PIR level? In fact, this last issue is the main one I'm blocking on at the moment.

Thanks,

Jonathan

Reply via email to