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
-Dave
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.