syg/iontrail — pull request #2 by pnkfelix (2012-12-31 16:32:40+00:00)
Title: Refactor MInstructionVisitor into a pure and concrete classes.

Refactor MInstructionVisitor into an abstract superclass and a
concrete subclass with asserting default implementations for all the
visit methods.

This semi-refactoring is something Niko and Felix talked about doing last Friday (and again on Monday).

My selection of what to tag as UNSAFE/SAFE/IMPOSSIBLE (where IMPOSSIBLE reimplements the old asserting default) was somewhat arbitrary and biased towards being very conservative. So there's a good chance that several of these ops could be upgraded (from IMPOSSIBLE to UNSAFE and from UNSAFE to SAFE).

(I said "semi-refactoring" above because it has made some of the newly added entries in ParallelArrayANalysis SAFE_OP's and UNSAFE_OP's, which is strictly speaking an expansion on the prior set of methods. If someone wants me to, I can rewrite this as a pure refactoring patch and a separate functionality-adding patch.)