======**sqInt ioExit(void)**====== #define browserPluginReturnIfNeeded() **Parms**: NONE **return**: NONE, fake return of zero **From**: Interpreter **Why**: To decide if we should exit the interpreter loop **Responsibility**: In the early days of running the virtual machine as a browser plugin it was designed that the VM would run on the same Thread as the browser, this required us to run the interpreter loop for a number of milliseconds then terminate control back to the caller so the browser's main thread could gain control. The browserPluginReturnIfNeeded would then get control every couple of milliseconds on a unconditional jump backwards, or on a message send, or on calling a primitive. **MacIntosh** //os-9/OSXCarbon// #define browserPluginReturnIfNeeded() if (plugInTimeToReturn()) {ReturnFromInterpret();} Where plugInTimeToReturn is returns true if gQuitNowRightNow is true. #define ReturnFromInterpret() return //Cocoa:// See iPhone **iPhone** #define browserPluginReturnIfNeeded() if (plugInTimeToReturn()) {ReturnFromInterpret();} Where plugInTimeToReturn is returns true if gQuitNowRightNow is true. #define ReturnFromInterpret() return For testing of memory leakage we enable this so that we can terminate the interpreter loop on 'quit' **Unix** **Windows** **BUGS**