<div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><br><br><div class="gmail_quote"><div dir="ltr">On Wed, 5 Dec 2018 at 18:45, Nicolas Cellier <<a href="mailto:nicolas.cellier.aka.nice@gmail.com">nicolas.cellier.aka.nice@gmail.com</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"> <div dir="ltr"><div dir="ltr"><div>Hi Ben,</div><div>I did not follow all the thread in detail, but a lot of missing definitions like alloca  were in platform specific support headers:</div><div><br></div><div><a href="https://github.com/OpenSmalltalk/opensmalltalk-vm/blob/Cog/platforms/win32/vm/sqPlatformSpecific.h" target="_blank">https://github.com/OpenSmalltalk/opensmalltalk-vm/blob/Cog/platforms/win32/vm/sqPlatformSpecific.h</a></div><div><br></div><div>The fact that minheadless seems a 
(better ?)

re-organisation of sources (I guess with a better separation of concerns) does not mean that we have to re-invent everything.</div><div>It's just there under our hands.<br></div></div></div></blockquote><div><br></div><div>I don't think much is being reinvented. Its just minheadless branched before much work on 64-bit Windows.  </div><div>sqPlatformSpecific.h is very much reused,  as borne out by this diff...</div><div><br></div><div><div><font face="monospace, monospace" color="#9900ff">.../platforms/win32/vm/sqPlatformSpecific.h                     .../platforms/minheadless/windows/sqPlatformSpecific-Win32.h</font></div><div><font face="monospace, monospace">/* win32 sqPlatformSpecific.h -- Platform-specific prototypes   /* win32 sqPlatformSpecific.h -- Platform-specific prototypes</font></div><div><font face="monospace, monospace">/* How to use this file:                                        /* How to use this file:</font></div><div><font face="monospace, monospace">   This file is for general platform-specific macros and decl      This file is for general platform-specific macros and decl</font></div><div><font face="monospace, monospace">   The goal is to keep most of the other header files generic      The goal is to keep most of the other header files generic</font></div><div><font face="monospace, monospace">   To override a definition or macro from sq.h, you must firs      To override a definition or macro from sq.h, you must firs</font></div><div><font face="monospace, monospace">   provide the new definition.                                     provide the new definition.</font></div><div><font face="monospace, monospace">*/                                                              */</font></div><div><font face="monospace, monospace" color="#9900ff">#if _WIN32 || _WIN64                                          | #ifdef WIN32</font></div><div><font face="monospace, monospace">/* Override necessary definitions */                            /* Override necessary definitions */</font></div><div><font face="monospace, monospace">#undef putchar                                                  #undef putchar</font></div><div><font face="monospace, monospace">#include "sqWin32Alloc.h"                                       #include "sqWin32Alloc.h"</font></div><div><br></div><div><font face="monospace, monospace">#ifdef _MSC_VER                                                 #ifdef _MSC_VER</font></div><div><font face="monospace, monospace">#include <windows.h>                                            #include <windows.h></font></div><div><font face="monospace, monospace">#define HAVE_BOOLEAN 1 /* for jpegReaderWriter plugin compati   #define HAVE_BOOLEAN 1 /* for jpegReaderWriter plugin compati</font></div><div><font face="monospace, monospace">#endif                                                          #endif</font></div><div><br></div><div><font face="monospace, monospace">#ifdef _MSC_VER                                                 #ifdef _MSC_VER</font></div><div><font face="monospace, monospace">#define squeakFileOffsetType __int64                            #define squeakFileOffsetType __int64</font></div><div><font face="monospace, monospace">#else                                                           #else</font></div><div><font face="monospace, monospace">#define squeakFileOffsetType unsigned long long                 #define squeakFileOffsetType unsigned long long</font></div><div><font face="monospace, monospace">#endif                                                          #endif</font></div><div><font face="monospace, monospace"><br></font></div><div><font face="monospace, monospace">#ifdef WIN32_FILE_SUPPORT                                       #ifdef WIN32_FILE_SUPPORT</font></div><div><font face="monospace, monospace"><br></font></div><div><font face="monospace, monospace">#undef sqImageFile                                              #undef sqImageFile</font></div><div><font face="monospace, monospace">#undef sqImageFileClose                                         #undef sqImageFileClose</font></div><div><font face="monospace, monospace">#undef sqImageFileOpen                                          #undef sqImageFileOpen</font></div><div><font face="monospace, monospace">#undef sqImageFilePosition                                      #undef sqImageFilePosition</font></div><div><font face="monospace, monospace">#undef sqImageFileRead                                          #undef sqImageFileRead</font></div><div><font face="monospace, monospace">#undef sqImageFileSeek                                          #undef sqImageFileSeek</font></div><div><font face="monospace, monospace">#undef sqImageFileSeekEnd                                       #undef sqImageFileSeekEnd</font></div><div><font face="monospace, monospace">#undef sqImageFileWrite                                         #undef sqImageFileWrite</font></div><div><font face="monospace, monospace"><br></font></div><div><font face="monospace, monospace">#define sqImageFile usqIntptr_t                                 #define sqImageFile usqIntptr_t</font></div><div><font face="monospace, monospace">sqInt sqImageFileClose(sqImageFile h);                          sqInt sqImageFileClose(sqImageFile h);</font></div><div><font face="monospace, monospace">sqImageFile sqImageFileOpen(const char *fileName, const char    sqImageFile sqImageFileOpen(const char *fileName, const char </font></div><div><font face="monospace, monospace">squeakFileOffsetType sqImageFilePosition(sqImageFile h);        squeakFileOffsetType sqImageFilePosition(sqImageFile h);</font></div><div><font face="monospace, monospace">size_t sqImageFileRead(void *ptr, size_t sz, size_t count, sq   size_t sqImageFileRead(void *ptr, size_t sz, size_t count, sq</font></div><div><font face="monospace, monospace">squeakFileOffsetType sqImageFileSeek(sqImageFile h, squeakFil   squeakFileOffsetType sqImageFileSeek(sqImageFile h, squeakFil</font></div><div><font face="monospace, monospace">squeakFileOffsetType sqImageFileSeekEnd(sqImageFile h, squeak   squeakFileOffsetType sqImageFileSeekEnd(sqImageFile h, squeak</font></div><div><font face="monospace, monospace">size_t sqImageFileWrite(const void *ptr, size_t sz, size_t co   size_t sqImageFileWrite(const void *ptr, size_t sz, size_t co</font></div><div><font face="monospace, monospace">#else /* when no WIN32_FILE_SUPPORT, add necessary stub for u   #else /* when no WIN32_FILE_SUPPORT, add necessary stub for u</font></div><div><font face="monospace, monospace">#include <stdlib.h>                                             #include <stdlib.h></font></div><div><font face="monospace, monospace">#include <io.h> /* _get_osfhandle */                            #include <io.h> /* _get_osfhandle */</font></div><div><font face="monospace, monospace">                                                              <font color="#9900ff">> #ifndef PATH_MAX</font></font></div><div><font face="monospace, monospace">#define PATH_MAX _MAX_PATH                                      #define PATH_MAX _MAX_PATH</font></div><div><font face="monospace, monospace">                                                              <font color="#9900ff">> #endif</font></font></div><div><span style="font-family:monospace,monospace"><br></span></div><div><span style="font-family:monospace,monospace">#define fsync(filenumber) FlushFileBuffers((HANDLE)_get_osfha   #define fsync(filenumber) FlushFileBuffers((HANDLE)_get_osfha</span><br></div><div><font face="monospace, monospace">#endif /* WIN32_FILE_SUPPORT */                                 #endif /* WIN32_FILE_SUPPORT */</font></div><div><font face="monospace, monospace"><br></font></div><div><font face="monospace, monospace">/* pluggable primitive support */                               /* pluggable primitive support */</font></div><div><font face="monospace, monospace">#if defined(_MSC_VER) || defined(__MINGW32__)                   #if defined(_MSC_VER) || defined(__MINGW32__)</font></div><div><font face="monospace, monospace">#  undef EXPORT                                                 #  undef EXPORT</font></div><div><font face="monospace, monospace">#  define EXPORT(returnType) __declspec( dllexport ) returnTy   #  define EXPORT(returnType) __declspec( dllexport ) returnTy</font></div><div><font face="monospace, monospace">#  undef VM_EXPORT                                              #  undef VM_EXPORT</font></div><div><font face="monospace, monospace">#  define VM_EXPORT __declspec( dllexport )                     #  define VM_EXPORT __declspec( dllexport )</font></div><div><font face="monospace, monospace" color="#9900ff">                                                              > #  if defined(BUILD_VM_CORE) && !defined(VM_CORE_STATIC)</font></div><div><font face="monospace, monospace" color="#9900ff">                                                              > #    undef VM_FUNCTION_EXPORT</font></div><div><font color="#9900ff" face="monospace, monospace">                                                              > #    define VM_FUNCTION_EXPORT(returnType) __declspec( dllexport ) returnType</font></div><div><font face="monospace, monospace" color="#9900ff">                                                              > #  else</font></div><div><font face="monospace, monospace" color="#9900ff">                                                              > #    undef VM_FUNCTION_EXPORT</font></div><div><font color="#9900ff" face="monospace, monospace">                                                              > #    define VM_FUNCTION_EXPORT(returnType) __declspec( dllimport ) returnType</font></div><div><font face="monospace, monospace" color="#9900ff">                                                              > #  endif</font></div><div><span style="font-family:monospace,monospace">#endif </span><span style="font-family:monospace,monospace"> </span><font face="monospace, monospace">                                                        #endif</font></div><div><font face="monospace, monospace"><br></font></div><div><font face="monospace, monospace"><br></font></div><div><font face="monospace, monospace">/* missing functions */                                         /* missing functions */</font></div><div><font face="monospace, monospace">#ifdef _MSC_VER                                                 #ifdef _MSC_VER</font></div><div><font face="monospace, monospace">/* see on msdn the list of functions available                  /* see on msdn the list of functions available</font></div><div><font face="monospace, monospace"> *  CRT Alphabetical Function Reference                          *  CRT Alphabetical Function Reference</font></div><div><font face="monospace, monospace"> *  <a href="https://msdn.microsoft.com/en-US/library/634ca0c2.aspx">https://msdn.microsoft.com/en-US/library/634ca0c2.aspx</a> */    *  <a href="https://msdn.microsoft.com/en-US/library/634ca0c2.aspx">https://msdn.microsoft.com/en-US/library/634ca0c2.aspx</a> */</font></div><div><font face="monospace, monospace">#  include <malloc.h>                                           #  include <malloc.h></font></div><div><font face="monospace, monospace">#  include <float.h>                                            #  include <float.h></font></div><div><font face="monospace, monospace">#  ifndef alloca                                                #  ifndef alloca</font></div><div><font face="monospace, monospace">#    define alloca _alloca                                      #    define alloca _alloca</font></div><div><font face="monospace, monospace">#  endif                                                        #  endif</font></div><div><font face="monospace, monospace">#  if _MSC_VER < 1800 /* not available before MSVC 2013 */      #  if _MSC_VER < 1800 /* not available before MSVC 2013 */</font></div><div><font face="monospace, monospace">#    define atoll(x)              _atoi64(x)                    #    define atoll(x)              _atoi64(x)</font></div><div><font face="monospace, monospace">#    define strtoll(beg,end,base) _strtoi64(beg,end,base)       #    define strtoll(beg,end,base) _strtoi64(beg,end,base)</font></div><div><font face="monospace, monospace">     double round(double);                                           double round(double);</font></div><div><font face="monospace, monospace">#  endif                                                        #  endif</font></div><div><font face="monospace, monospace">#  if _MSC_VER < 1900 /* not available before MSVC 2015 */      #  if _MSC_VER < 1900 /* not available before MSVC 2015 */</font></div><div><font face="monospace, monospace">#    define snprintf _snprintf                                  #    define snprintf _snprintf</font></div><div><font face="monospace, monospace">#    ifndef isnan                                               #    ifndef isnan</font></div><div><font face="monospace, monospace">#      define isnan _isnan                                      #      define isnan _isnan</font></div><div><font face="monospace, monospace">#    endif                                                      #    endif</font></div><div><font face="monospace, monospace">#  endif                                                        #  endif</font></div><div><font face="monospace, monospace">#  if _MSC_VER < 1300 /* maybe not available before MSVC 7.0    #  if _MSC_VER < 1300 /* maybe not available before MSVC 7.0 </font></div><div><font face="monospace, monospace">#    define fabsf(x)    ((float)fabs((double)(x)))              #    define fabsf(x)    ((float)fabs((double)(x)))</font></div><div><font face="monospace, monospace">#  endif                                                        #  endif</font></div><div><font face="monospace, monospace">#  define bzero(pointer,size) ZeroMemory(pointer,size)          #  define bzero(pointer,size) ZeroMemory(pointer,size)</font></div><div><font face="monospace, monospace" color="#9900ff">                                                              > #else</font></div><div><font face="monospace, monospace" color="#9900ff">                                                              > #  include <string.h></font></div><div><font face="monospace, monospace" color="#9900ff">                                                              > #  define bzero(pointer,size) memset(pointer, 0, size)</font></div><div><font face="monospace, monospace">#endif                                                          #endif</font></div><div><font face="monospace, monospace"><br></font></div><div><font face="monospace, monospace">#ifdef __GNUC__                                                 #ifdef __GNUC__</font></div><div><font face="monospace, monospace">#  if __GNUC__ < 3                                              #  if __GNUC__ < 3</font></div><div><font face="monospace, monospace">#    define fabsf(x)    ((float)fabs((double)(x))) /* not sur   #    define fabsf(x)    ((float)fabs((double)(x))) /* not sur</font></div><div><font face="monospace, monospace">#  endif                                                        #  endif</font></div><div><font face="monospace, monospace">#endif                                                          #endif</font></div><div><font face="monospace, monospace"><br></font></div><div><font face="monospace, monospace">#else                                                           #else</font></div><div><font face="monospace, monospace" color="#9900ff">error "Not Win32 or Win64!"                                   | error "Not Win32!"</font></div><div><font face="monospace, monospace" color="#9900ff">#endif /* _WIN32 || _WIN64 */                                 | #endif /* WIN32 */</font></div><div><font face="monospace, monospace"><br></font></div><div><font face="monospace, monospace">int ioSetCursorARGB(sqInt bitsIndex, sqInt w, sqInt h, sqInt    int ioSetCursorARGB(sqInt bitsIndex, sqInt w, sqInt h, sqInt </font></div><div><font face="monospace, monospace"><br></font></div><div><font face="monospace, monospace">/* poll and profile thread priorities.  The stack vm uses a t   /* poll and profile thread priorities.  The stack vm uses a t</font></div><div><font face="monospace, monospace"> * VM to poll for I/O, check for delay expiry et al at regula    * VM to poll for I/O, check for delay expiry et al at regula</font></div><div><font face="monospace, monospace"> * VMs use a thread to sample the pc for VM profiling.  The p    * VMs use a thread to sample the pc for VM profiling.  The p</font></div><div><font face="monospace, monospace"> * to have a priority higher than the main VM thread and the     * to have a priority higher than the main VM thread and the </font></div><div><font face="monospace, monospace"> * to have a priority higher than the poll thread to be able     * to have a priority higher than the poll thread to be able </font></div><div><font face="monospace, monospace"> * We would like POLL_THREAD_PRIORITY to be THREAD_PRIORITY_T    * We would like POLL_THREAD_PRIORITY to be THREAD_PRIORITY_T</font></div><div><font face="monospace, monospace"> * but SetThreadPriority fails with this value on Windows XP.    * but SetThreadPriority fails with this value on Windows XP.</font></div><div><font face="monospace, monospace"> *                                                               *</font></div><div><font face="monospace, monospace"> * N.B. THREAD_PRIORITY_TIME_CRITICAL a.k.a. THREAD_BASE_PRIO    * N.B. THREAD_PRIORITY_TIME_CRITICAL a.k.a. THREAD_BASE_PRIO</font></div><div><font face="monospace, monospace"> *      THREAD_PRIORITY_MAX a.k.a. THREAD_BASE_PRIORITY_MAX      *      THREAD_PRIORITY_MAX a.k.a. THREAD_BASE_PRIORITY_MAX</font></div><div><font face="monospace, monospace"> * See WinBase.h & WinNT.h.                                      * See WinBase.h & WinNT.h.</font></div><div><font face="monospace, monospace"> */                                                              */</font></div><div><font face="monospace, monospace">#if STACKVM                                                     #if STACKVM</font></div><div><font face="monospace, monospace"># define POLL_THREAD_PRIORITY THREAD_PRIORITY_HIGHEST           # define POLL_THREAD_PRIORITY THREAD_PRIORITY_HIGHEST</font></div><div><font face="monospace, monospace">#endif /* STACKVM */                                            #endif /* STACKVM */</font></div><div><font face="monospace, monospace">#define PROF_THREAD_PRIORITY THREAD_PRIORITY_TIME_CRITICAL      #define PROF_THREAD_PRIORITY THREAD_PRIORITY_TIME_CRITICAL</font></div><div><font face="monospace, monospace"><br></font></div><div><font face="monospace, monospace">#if COGVM                                                       #if COGVM</font></div><div><font face="monospace, monospace">extern void sqMakeMemoryExecutableFromTo(usqIntptr_t, usqIntp   extern void sqMakeMemoryExecutableFromTo(usqIntptr_t, usqIntp</font></div><div><font face="monospace, monospace">extern void sqMakeMemoryNotExecutableFromTo(usqIntptr_t, usqI   extern void sqMakeMemoryNotExecutableFromTo(usqIntptr_t, usqI</font></div><div><font face="monospace, monospace"><br></font></div><div><font face="monospace, monospace">extern int isCFramePointerInUse(void);                          extern int isCFramePointerInUse(void);</font></div><div><font face="monospace, monospace">extern int osCogStackPageHeadroom(void);                        extern int osCogStackPageHeadroom(void);</font></div><div><font face="monospace, monospace">extern void reportMinimumUnusedHeadroom(void);                  extern void reportMinimumUnusedHeadroom(void);</font></div><div><font face="monospace, monospace">#endif                                                          #endif</font></div><div><font face="monospace, monospace"><br></font></div><div><font face="monospace, monospace">/* Thread support for thread-safe signalSemaphoreWithIndex an   /* Thread support for thread-safe signalSemaphoreWithIndex an</font></div><div><font face="monospace, monospace">#if STACKVM || NewspeakVM                                       #if STACKVM || NewspeakVM</font></div><div><font face="monospace, monospace"># define sqLowLevelYield() Sleep(0)                             # define sqLowLevelYield() Sleep(0)</font></div><div><font face="monospace, monospace">/* these are used both in the STACKVM & the COGMTVM */          /* these are used both in the STACKVM & the COGMTVM */</font></div><div><font face="monospace, monospace"># define sqOSThread void *                                      # define sqOSThread void *</font></div><div><font face="monospace, monospace"># define ioOSThreadsEqual(a,b) ((a) == (b))                     # define ioOSThreadsEqual(a,b) ((a) == (b))</font></div><div><font face="monospace, monospace"># if COGMTVM                                                    # if COGMTVM</font></div><div><font face="monospace, monospace">/* Please read the comment for CogThreadManager in the VMMake   /* Please read the comment for CogThreadManager in the VMMake</font></div><div><font face="monospace, monospace"> * documentation of this API.                                    * documentation of this API.</font></div><div><font face="monospace, monospace"> */                                                              */</font></div><div><font face="monospace, monospace">#  define sqOSSemaphore void *                                  #  define sqOSSemaphore void *</font></div><div><font face="monospace, monospace">#  if !ForCOGMTVMImplementation /* this is a read-only export   #  if !ForCOGMTVMImplementation /* this is a read-only export</font></div><div><font face="monospace, monospace">extern const unsigned long tltiIndex;                           extern const unsigned long tltiIndex;</font></div><div><font face="monospace, monospace">#  endif                                                        #  endif</font></div><div><font face="monospace, monospace">#  define ioGetThreadLocalThreadIndex() ((long)TlsGetValue(tl   #  define ioGetThreadLocalThreadIndex() ((long)TlsGetValue(tl</font></div><div><font face="monospace, monospace">#  define ioSetThreadLocalThreadIndex(v) (TlsSetValue(tltiInd   #  define ioSetThreadLocalThreadIndex(v) (TlsSetValue(tltiInd</font></div><div><font face="monospace, monospace">#  define ioTransferTimeslice() Sleep(0)                        #  define ioTransferTimeslice() Sleep(0)</font></div><div><font face="monospace, monospace">#  define ioMilliSleep(ms) Sleep(ms)                            #  define ioMilliSleep(ms) Sleep(ms)</font></div><div><font face="monospace, monospace"># endif /* COGMTVM */                                           # endif /* COGMTVM */</font></div><div><font face="monospace, monospace">#endif /* STACKVM || NewspeakVM */                              #endif /* STACKVM || NewspeakVM */</font></div><div><font face="monospace, monospace"><br></font></div><div><font face="monospace, monospace">#if defined(__GNUC__)                                           #if defined(__GNUC__)</font></div><div><font face="monospace, monospace"># if !defined(VM_LABEL)                                         # if !defined(VM_LABEL)</font></div><div><font face="monospace, monospace">#       define VM_LABEL(foo) asm("\n.globl L" #foo "\nL" #foo   #       define VM_LABEL(foo) asm("\n.globl L" #foo "\nL" #foo</font></div><div><font face="monospace, monospace"># endif                                                         # endif</font></div><div><font face="monospace, monospace">#endif                                                          #endif</font></div><div><font face="monospace, monospace">#if !defined(VM_LABEL) || COGVM                                 #if !defined(VM_LABEL) || COGVM</font></div><div><font face="monospace, monospace"># undef VM_LABEL                                                # undef VM_LABEL</font></div><div><font face="monospace, monospace" color="#9900ff"># define VM_LABEL(foo) ((void)0)                              | # define VM_LABEL(foo) 0</font></div><div><font face="monospace, monospace">#endif                                                          #endif</font></div><div><font face="monospace, monospace"><br></font></div><div><font face="monospace, monospace"><div><font color="#9900ff">/* Define the fields in a struct _CONTEXT as returned by GetThreadContext that</font></div><div><font color="#9900ff"> * represent the program counter and frame pointer on the current architecture.</font></div><div><font color="#9900ff"> */</font></div><div><font color="#9900ff">#if defined(_M_IX86) || defined(_M_I386) || defined(_X86_) || defined(i386) || defined(__i386__)</font></div><div><font color="#9900ff">#<span style="white-space:pre">     </span>define CONTEXT_PC Eip</font></div><div><font color="#9900ff">#<span style="white-space:pre">     </span>define CONTEXT_FP Ebp</font></div><div><font color="#9900ff">#<span style="white-space:pre">     </span>define CONTEXT_SP Esp</font></div><div><font color="#9900ff">#elif defined(x86_64) || defined(__x86_64) || defined(__x86_64__) || defined(__amd64) || defined(__amd64__) || defined(x64) || defined(_M_AMD64) || defined(_M_X64) || defined(_M_IA64)</font></div><div><font color="#9900ff">#<span style="white-space:pre">    </span>define CONTEXT_PC Rip</font></div><div><font color="#9900ff">#<span style="white-space:pre">     </span>define CONTEXT_FP Rbp</font></div><div><font color="#9900ff">#<span style="white-space:pre">     </span>define CONTEXT_SP Rsp</font></div><div><font color="#9900ff">#else</font></div><div><font color="#9900ff"># error "unknown architecture, program counter field undefined"</font></div><div><font color="#9900ff">#endif</font></div><div><div><font color="#9900ff">                                                              > #ifdef _MSC_VER</font></div><div><font color="#9900ff">                                                              > /* disable "function XXXX: no return value" */</font></div><div><font color="#9900ff">                                                              > #pragma warning(disable:4035)</font></div><div><font color="#9900ff">                                                              > /* optional C SEH macros */</font></div><div><font color="#9900ff">                                                              > #define TRY __try</font></div><div><font color="#9900ff">                                                              > #define EXCEPT(filter) __except(filter)</font></div><div><font color="#9900ff">                                                              > #define FINALLY __finally</font></div><div><font color="#9900ff">                                                              > #else</font></div><div><font color="#9900ff">                                                              > /* optional C SEH macros */</font></div><div><font color="#9900ff">                                                              > #define TRY</font></div><div><font color="#9900ff">                                                              > #define EXCEPT(filter) if (0)</font></div><div><font color="#9900ff">                                                              > #define FINALLY</font></div><div><font color="#9900ff">                                                              > #endif</font></div></div><div><br></div><div><br></div></font></div></div><div>But perhaps instead of my change to "platforms/Cross/plugins/IA32ABI/x64win64abicc.c" here... </div><div>    <a href="https://github.com/OpenSmalltalk/opensmalltalk-vm/pull/313/files#diff-00b8ad306e9c6bb4c8dab2e5b65a1ff8R41">https://github.com/OpenSmalltalk/opensmalltalk-vm/pull/313/files#diff-00b8ad306e9c6bb4c8dab2e5b65a1ff8R41</a></div><div>it would have been better to include "sqPlatformSpecific.h" ?  Or would that be heavy handed? I don't know.</div><div>At the time it seemed reasonable to echo the similar define here...</div><div>   platforms/Cross/plugins/IA32ABI/ia32abicc.c:   # define alloca _alloca</div><div><br></div><div>cheers -ben</div><div><br></div><div>P.S. It might be good to reconcile the two files, but I don't know enough about all the changes myself.</div><div>And to avoid divergence maybe(??) one file should #include the other instead of being a copy. </div><div>Or would that be a bad??</div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div class="gmail_quote"><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">
</blockquote></div>
</blockquote></div></div></div></div></div></div></div></div></div></div></div></div>