Arghhhhh. Damned!
It is a pity that we get a system that is so fragile to change. Changing compiledMethod to real objects would help too.
Stef
Marcus Denker wrote:
What does Traits have do do with this?
Quite a bit. The traits installation adds two variables to Behavior (traitComposition and localSelectors) and it looks like this isn't as harmless for the VM as most people (including myself) thought. It seems like there are a few places where the class name is assumed in a specific position, including Interpreter>>printNameOfClass:count: and Interpreter>>classNameOf:is:. The latter is what's causing the problem since it is used by Interpreter>>is:KindOf: which in turn is used by SmartSyntaxPluginCodeGenerator>>ccgLoad:expr:asKindOf:from: which is applied as the generic prologue for classes that have no more specific type checks (in this case we have a Form argument to which this applies).
Therefore, all primitives using this pattern will fail with post 6706 images. What's potentially worse is that we don't know where else any of those functions are being used (I wonder if they are used in the FFI for some of the type checks...)
Fixing this will not be easy - if a VM change is required it means that older images will fail on newer VMs and vice versa.
Cheers,
- Andreas