2.2 VM Porting Notes

Maloney johnm at wdi.disney.com
Sun Sep 27 21:15:47 UTC 1998


For those of you maintinging ports of the Squeak VM, here are
a few quick notes on new features of the 2.2 VM.

1. Support for masked cursors was added. You'll need to implement:

   ioSetCursorWithMask(
      int cursorBitsIndex, int cursorMaskIndex, int offsetX, int offsetY);

perhaps by simply ignoring the mask argument. I did look at the
Win32 API and believe that Windows supports the same kind of cursor
masking as the Mac. See the comment in sqMacWindow.c for what it
should do.

2. You may need to override the definition of ioLowResMSecs()
in sq.h. (You can do this by #undefining it and replacing it with
your own version in "sqPlatformSpecific.h". This is needed to fix
a performance problem in the Mac's handling of timer interrupts.
Thanks to Bob Arning for noticing the problem.

3. Asynchronous file I/O primitives have been added to support
some work internal to Disney. Feel free to stub these out; they
are not used by any code in the distribution image. Of course,
you may also wish to implement them, as they are very useful
when you wish to overlap high-bandwidth disk I/O and other 
compuation! We're not entirely sure where we are going with
asynchronous file I/O, so this primitive interface may change.

4. We added support for the DEC Itsy to "sqConfig.h"; it isn't
like to have any effect on other systems. We also changed the
Acorn- and Itsy-related flag "LITTLE_ENDIAN" to "LITTLE_ENDIAN_BITBLT"
because "LITTLE_ENDIAN" conflicts with a flag defined by the Gnu C compiler.

5. NOTE: Unix/Linux socket bug fix needed!
Lex discovered a difference in the behavior of sqSocketReceiveDataAvailable()
under Linux and the Mac that was masking a Squeak-level bug on the
Linux platform. To make this function work the same across platforms,
it should return "false" if the socket has become disconnected.
It currently returns "true" on Linux and possibly other Unix platforms
due to something about the way the "select()" system call works, I believe.
(Andreas: could you make sure the Win32 VM returns "false" when the
socket is unconnected? It probably does already, but I haven't tested
it. It might behave differently under NT and Win95.) Let me know if you
need further clarification on this.

6. New primitives have been added to the automatically generated files
sqMiscPrims.c and sqSoundPrims.c. Be sure to re-generate these files from
a 2.2 image before you rebuild the VM.

I think that about covers changes to the VM support code, but please feel
free to ask if I missed anything.

	-- John





More information about the Squeak-dev mailing list