The problem is we need to somehow un-optimize while we're running. That is most likely a very very hard thing to do, so another solution is probably needed.
It is, indeed, a very hard problem. It's solvable if you disallow several classes of optimization (basically ones that involve code motion) that make things less than optimal. You can also scatter a lot of tests for invalidations and have the notification system set the flags, though there are still code motion problems there. (Loops are particularly troublesome)
--
Dan
--------------------------------------"it's like this"------------------- Dan Sugalski even samurai [EMAIL PROTECTED] have teddy bears and even teddy bears get drunk