This an update of the 32/64 bit clean changes for AsyncFilePlugin that I originally posted November 2007. This update adds the platform support changes for Windows and OS X. These are not tested, but consist of straightforward changes to type declarations and removal of unneeded casts, so I expect no problems.
I'm adding the Windows and Mac OS patches in hopes that this will make it easier to adopt the plugin changes in VMMaker and Subversion in a coordinated way. On Linux, the AsyncFilePlugin compiles cleanly and works on all combinations of 32/64 bit VM and image. Windows and Mac OS will hopefully be problem free, and there is no RiscOS version of the plugin.
Note that VmUpdates-1007-dtl.cs is included in this collection of patches, but this should really be considered part of the base 32/64 bit clean VM changes, which currently consist of: VmUpdates-1001-dtl.cs VmUpdates-1002-dtl.cs VmUpdates-1003-dtl.cs VmUpdates-1004-dtl.cs VmUpdates-1005-dtl.cs VmUpdates-1006-dtl.cs VmUpdates-1007-dtl.cs JMM-VmUpdates32bitclean.cs
The diff and change set files are:
VmUpdates-1007-dtl.6.cs Fix object pointer arithmetic for #asOop: in plugins. Changes SmartSyntaxPluginCodeGenerator>>generateCoerceToObjectFromPtr:on: to handle address arithmetic for 32bit/64bit image and host.
VMMBytesPerWord-dtl.1.cs These changes make the current values of #bytesPerWord and #baseHeaderSize visible to plugins to enable clean address calculations on 64bit machines.
VMMBytesPerWord-withCPP-dtl.1.cs VMMBytesPerWord-dtl conflicts with VMMakerCppTranslation-dtl. This patch merges the two. Ignore this if you are not using VMMakerCppTranslation-dtl.
AsyncFilePluginFixes-dtl.1.cs These changes fix address calculation problems on 64 bit machines and enable the plugin to work on all combinations of 32bit/64bit image and host. Corresponding changes are required in the external support code, which will affect all platforms (hence a coordinated change of VMMaker and SVN sources is required).
platforms-Cross-plugins-AsynchFilePlugin-AsynchFilePlugin.h.diff Patch for AsynchFilePlugin header. Affects all platforms.
platforms-unix-plugins-AsynchFilePlugin-sqUnixAsynchFile.c.diff Patch for unix AsynchFilePlugin support code. Similar patches will be required for other platforms.
platforms-win32-plugins-AsynchFilePlugin-sqWin32AsyncFilePrims.c.diff The Windows changes compile, but I have not tested the result. The changes just involve removing type casts and minor changes from int to sqInt, so I expect that the result will be fine.
platforms-Mac_OS-plugins-AsynchFilePlugin-sqMacAsyncFilePrims.c.diff Added changes for Mac OS. These are not tested, but straightforward enough that they should work without further modification.