2009/3/23 Michael van der Gulik mikevdg@gmail.com:
On 3/23/09, Michael van der Gulik mikevdg@gmail.com wrote:
When I next have time (Tuesday evening?) I'll submit a patch for this:
- rename primSetInputSemaphore: to primSetInputSemaphoreIndex:.
- Add checks in the VM: must be a SmallInteger, must be a valid index in
the external objects table, must point to a Semaphore.
- Add error handling code in the method itself.
I tried with some success, but now my compiled VM just starts up with a black box in the top left, the rest of the screen is white and about 80% CPU is consumed. This is on Linux after accidently closing the VMMaker window and reopening it.
Is this a common occurance that is easy to fix?
this is beyond my experience. I tried to build VM on linux only once, and don't remember any serious problems with it.
My attempt at fixing the input semaphore problem is attached to http://bugs.squeak.org/view.php?id=7320, if anybody has interest. I can't test it because of the above problem.
The original Interpreter>>primitiveInputSemaphore has problems. It does not pop off the stack if the C code fails. "TheInputSemaphore" is nil, and gets translated to "null" in interp.c.
when primitive fails, it should keep the original stack state unchanged, because it then used to enter a method, where primitive located.
Gulik.