>>278
> 3 + 4 時は…

自己レスです。(Squeak で、かつ旧 VM でですが)どうなっているか調べてみたら、
VM 内でプリミティブとしてコールされる + 関数(Squeak の場合 primitiveAdd )と
バイトコード実行時にコールされる + 関数(同、bytecodePrimAdd )は別物なんですね。

通常は bytecodePrimAdd がコールされ、整数/整数とかでなければメッセージを送信、
#perform: などで呼んだ場合は primitiveAdd がコールされ、それが失敗すると
プリミティブに続いて記述してあるフォールバックコードが実行されるというカラクリでした。