Hi Guys -
Just FYI, I found a major bug in the callback support I posted earlier. The problem occurs if one fails a primitive *after* a callback has been invoked like here:
Squeak -> (primitive) -> Plugin Plugin -> (callback) -> Squeak Plugin <- (return) <- Squeak Squeak <- (failure) <- Plugin
In such a case, the method being activated by the primitive failure is not the method originally invoking the primitive but rather the one that returned from the callback. More technically speaking, the interpreter's newMethod isn't preserved which causes the effect described above. The attached version fixes the problem by preserving newMethod across callback enter/return.
Cheers, - Andreas
vm-dev@lists.squeakfoundation.org