[Vm-dev] [commit][3514] CogVM source as per VMMaker.oscog-eem.1558

commits at squeakvm.org commits at squeakvm.org
Sun Dec 6 02:06:03 UTC 2015


Revision: 3514
Author:   eliot
Date:     2015-12-05 18:06:01 -0800 (Sat, 05 Dec 2015)
Log Message:
-----------
CogVM source as per VMMaker.oscog-eem.1558

Cogit:
Refactor the logic to handle UnimplementedPrimitive and UnfailingPrimitive in a
common routine, passing the result of the primtiiev generator to
#compileFallbackToInterpreterPrimitive:.  Add the notion of CompletePrimitive
for primitives that may fail, but handle all the success cases, hence if a
method including such a primitive doesn't use the error code the Cogit doesn't
have to compile the call to the interpreter primitive as a fallback.

Add genPrimitiveObjectAt to provide fast literal and header access on Spur.

Streamline access to the tag patterns form the Cogit by using macros.

CPIC relocation: fix conflation of unconditional and conditional jumps.

Implement overflow checking for primitive div that works in 32- and 64-bits.

Provide a convenience method to hide the inconvenience of checking for
UndefinedOperation in uses of genJump[Not]SmallInteger:.

Refactor to share genInnerPrimitiveStringAt: between 32- and 64-bit Spur obj
reps.

x64 Cogit: rationalise concretize"Op"RR into two routines in both x64 and x86.

Avoid using isCallPrecedingReturnPC: for testing if compileInterpreterPrimitive
used a CallFull or a JumpFull to invoke the prim, hence allowing
isCallPrecedingReturnPC:to only have to apply to calls used for sends, and
hence reuse x86's isCallPrecedingReturnPC: for x64.

Fix genPrimitiveClosureValue for 64-bits (use genJumpImmediate: to exclude
non-cogged methods).

Plugins: Include the file sync prim in the FilePrims plugin.

Modified Paths:
--------------
    branches/Cog/nsspursrc/plugins/AioPlugin/AioPlugin.c
    branches/Cog/nsspursrc/plugins/BMPReadWriterPlugin/BMPReadWriterPlugin.c
    branches/Cog/nsspursrc/plugins/DSAPrims/DSAPrims.c
    branches/Cog/nsspursrc/plugins/DropPlugin/DropPlugin.c
    branches/Cog/nsspursrc/plugins/FileCopyPlugin/FileCopyPlugin.c
    branches/Cog/nsspursrc/plugins/FloatArrayPlugin/FloatArrayPlugin.c
    branches/Cog/nsspursrc/plugins/FloatMathPlugin/FloatMathPlugin.c
    branches/Cog/nsspursrc/plugins/ImmX11Plugin/ImmX11Plugin.c
    branches/Cog/nsspursrc/plugins/JPEGReadWriter2Plugin/JPEGReadWriter2Plugin.c
    branches/Cog/nsspursrc/plugins/Matrix2x3Plugin/Matrix2x3Plugin.c
    branches/Cog/nsspursrc/plugins/MiscPrimitivePlugin/MiscPrimitivePlugin.c
    branches/Cog/nsspursrc/plugins/RePlugin/RePlugin.c
    branches/Cog/nsspursrc/plugins/SecurityPlugin/SecurityPlugin.c
    branches/Cog/nsspursrc/plugins/SocketPlugin/SocketPlugin.c
    branches/Cog/nsspursrc/plugins/SoundPlugin/SoundPlugin.c
    branches/Cog/nsspursrc/plugins/SqueakSSL/SqueakSSL.c
    branches/Cog/nsspursrc/plugins/UUIDPlugin/UUIDPlugin.c
    branches/Cog/nsspursrc/vm/cogit.h
    branches/Cog/nsspursrc/vm/cogitARMv5.c
    branches/Cog/nsspursrc/vm/cogitIA32.c
    branches/Cog/nsspursrc/vm/cointerp.c
    branches/Cog/nsspursrc/vm/cointerp.h
    branches/Cog/nsspursrc/vm/gcc3x-cointerp.c
    branches/Cog/nsspurstack64src/vm/gcc3x-interp.c
    branches/Cog/nsspurstack64src/vm/interp.c
    branches/Cog/nsspurstacksrc/vm/gcc3x-interp.c
    branches/Cog/nsspurstacksrc/vm/interp.c
    branches/Cog/processors/IA32/bochs/cpu/mult64.cc
    branches/Cog/spursistasrc/vm/cogit.h
    branches/Cog/spursistasrc/vm/cogitARMv5.c
    branches/Cog/spursistasrc/vm/cogitIA32.c
    branches/Cog/spursistasrc/vm/cointerp.c
    branches/Cog/spursistasrc/vm/cointerp.h
    branches/Cog/spursistasrc/vm/gcc3x-cointerp.c
    branches/Cog/spursrc/vm/cogit.h
    branches/Cog/spursrc/vm/cogitARMv5.c
    branches/Cog/spursrc/vm/cogitIA32.c
    branches/Cog/spursrc/vm/cointerp.c
    branches/Cog/spursrc/vm/cointerp.h
    branches/Cog/spursrc/vm/gcc3x-cointerp.c
    branches/Cog/spurstack64src/vm/gcc3x-interp.c
    branches/Cog/spurstack64src/vm/interp.c
    branches/Cog/spurstacksrc/vm/gcc3x-interp.c
    branches/Cog/spurstacksrc/vm/interp.c
    branches/Cog/src/plugins/ADPCMCodecPlugin/ADPCMCodecPlugin.c
    branches/Cog/src/plugins/AioPlugin/AioPlugin.c
    branches/Cog/src/plugins/B3DAcceleratorPlugin/B3DAcceleratorPlugin.c
    branches/Cog/src/plugins/BMPReadWriterPlugin/BMPReadWriterPlugin.c
    branches/Cog/src/plugins/CameraPlugin/CameraPlugin.c
    branches/Cog/src/plugins/CroquetPlugin/CroquetPlugin.c
    branches/Cog/src/plugins/DSAPrims/DSAPrims.c
    branches/Cog/src/plugins/DropPlugin/DropPlugin.c
    branches/Cog/src/plugins/FFTPlugin/FFTPlugin.c
    branches/Cog/src/plugins/FileCopyPlugin/FileCopyPlugin.c
    branches/Cog/src/plugins/FilePlugin/FilePlugin.c
    branches/Cog/src/plugins/FloatArrayPlugin/FloatArrayPlugin.c
    branches/Cog/src/plugins/FloatMathPlugin/FloatMathPlugin.c
    branches/Cog/src/plugins/GeniePlugin/GeniePlugin.c
    branches/Cog/src/plugins/HostWindowPlugin/HostWindowPlugin.c
    branches/Cog/src/plugins/IA32ABI/IA32ABI.c
    branches/Cog/src/plugins/ImmX11Plugin/ImmX11Plugin.c
    branches/Cog/src/plugins/InternetConfigPlugin/InternetConfigPlugin.c
    branches/Cog/src/plugins/JPEGReadWriter2Plugin/JPEGReadWriter2Plugin.c
    branches/Cog/src/plugins/JoystickTabletPlugin/JoystickTabletPlugin.c
    branches/Cog/src/plugins/LocalePlugin/LocalePlugin.c
    branches/Cog/src/plugins/MIDIPlugin/MIDIPlugin.c
    branches/Cog/src/plugins/MacMenubarPlugin/MacMenubarPlugin.c
    branches/Cog/src/plugins/Matrix2x3Plugin/Matrix2x3Plugin.c
    branches/Cog/src/plugins/MiscPrimitivePlugin/MiscPrimitivePlugin.c
    branches/Cog/src/plugins/Mpeg3Plugin/Mpeg3Plugin.c
    branches/Cog/src/plugins/QuicktimePlugin/QuicktimePlugin.c
    branches/Cog/src/plugins/RePlugin/RePlugin.c
    branches/Cog/src/plugins/ScratchPlugin/ScratchPlugin.c
    branches/Cog/src/plugins/SecurityPlugin/SecurityPlugin.c
    branches/Cog/src/plugins/SerialPlugin/SerialPlugin.c
    branches/Cog/src/plugins/SocketPlugin/SocketPlugin.c
    branches/Cog/src/plugins/SoundCodecPrims/SoundCodecPrims.c
    branches/Cog/src/plugins/SoundPlugin/SoundPlugin.c
    branches/Cog/src/plugins/SqueakSSL/SqueakSSL.c
    branches/Cog/src/plugins/StarSqueakPlugin/StarSqueakPlugin.c
    branches/Cog/src/plugins/UUIDPlugin/UUIDPlugin.c
    branches/Cog/src/plugins/UnicodePlugin/UnicodePlugin.c
    branches/Cog/src/plugins/WeDoPlugin/WeDoPlugin.c
    branches/Cog/src/plugins/XDisplayControlPlugin/XDisplayControlPlugin.c
    branches/Cog/src/vm/cogit.h
    branches/Cog/src/vm/cogitARMv5.c
    branches/Cog/src/vm/cogitIA32.c
    branches/Cog/src/vm/cointerp.c
    branches/Cog/src/vm/cointerp.h
    branches/Cog/src/vm/cointerpmt.c
    branches/Cog/src/vm/cointerpmt.h
    branches/Cog/src/vm/gcc3x-cointerp.c
    branches/Cog/src/vm/gcc3x-cointerpmt.c
    branches/Cog/stacksrc/vm/gcc3x-interp.c
    branches/Cog/stacksrc/vm/interp.c

Property Changed:
----------------
    branches/Cog/platforms/Cross/vm/sqSCCSVersion.h

Modified: branches/Cog/nsspursrc/plugins/AioPlugin/AioPlugin.c
===================================================================
--- branches/Cog/nsspursrc/plugins/AioPlugin/AioPlugin.c	2015-12-03 23:09:55 UTC (rev 3513)
+++ branches/Cog/nsspursrc/plugins/AioPlugin/AioPlugin.c	2015-12-06 02:06:01 UTC (rev 3514)
@@ -1,5 +1,5 @@
 /* Automatically generated by
-	VMPluginCodeGenerator VMMaker.oscog-eem.1325 uuid: a0bb0f7f-5e6e-48a7-bf73-fa5d135e06c0
+	VMPluginCodeGenerator VMMaker.oscog-eem.1559 uuid: 52385182-ad6d-4bdc-975a-7328fd81b6da
    from
 	UnixAioPlugin VMConstruction-Plugins-AioPlugin-eem.18 uuid: c426ab70-05a2-43a1-a899-e324aaf8f92f
  */
@@ -43,9 +43,6 @@
 #include "sqMemoryAccess.h"
 
 
-/*** Constants ***/
-
-
 /*** Function Prototypes ***/
 static void aioForwardwithDataandFlags(int fd, void *data, int flags);
 static sqInt fileDescriptorFrom(sqInt aSQFileByteArray);

Modified: branches/Cog/nsspursrc/plugins/BMPReadWriterPlugin/BMPReadWriterPlugin.c
===================================================================
--- branches/Cog/nsspursrc/plugins/BMPReadWriterPlugin/BMPReadWriterPlugin.c	2015-12-03 23:09:55 UTC (rev 3513)
+++ branches/Cog/nsspursrc/plugins/BMPReadWriterPlugin/BMPReadWriterPlugin.c	2015-12-06 02:06:01 UTC (rev 3514)
@@ -1,9 +1,9 @@
 /* Automatically generated by
-	VMPluginCodeGenerator VMMaker.oscog-eem.1325 uuid: a0bb0f7f-5e6e-48a7-bf73-fa5d135e06c0
+	VMPluginCodeGenerator VMMaker.oscog-eem.1559 uuid: 52385182-ad6d-4bdc-975a-7328fd81b6da
    from
-	BMPReadWriterPlugin VMMaker.oscog-eem.1325 uuid: a0bb0f7f-5e6e-48a7-bf73-fa5d135e06c0
+	BMPReadWriterPlugin VMMaker.oscog-eem.1559 uuid: 52385182-ad6d-4bdc-975a-7328fd81b6da
  */
-static char __buildInfo[] = "BMPReadWriterPlugin VMMaker.oscog-eem.1325 uuid: a0bb0f7f-5e6e-48a7-bf73-fa5d135e06c0 " __DATE__ ;
+static char __buildInfo[] = "BMPReadWriterPlugin VMMaker.oscog-eem.1559 uuid: 52385182-ad6d-4bdc-975a-7328fd81b6da " __DATE__ ;
 
 
 
@@ -36,9 +36,6 @@
 #include "sqMemoryAccess.h"
 
 
-/*** Constants ***/
-
-
 /*** Function Prototypes ***/
 EXPORT(const char*) getModuleName(void);
 EXPORT(sqInt) primitiveRead24BmpLine(void);
@@ -75,9 +72,9 @@
 struct VirtualMachine* interpreterProxy;
 static const char *moduleName =
 #ifdef SQUEAK_BUILTIN_PLUGIN
-	"BMPReadWriterPlugin VMMaker.oscog-eem.1325 (i)"
+	"BMPReadWriterPlugin VMMaker.oscog-eem.1559 (i)"
 #else
-	"BMPReadWriterPlugin VMMaker.oscog-eem.1325 (e)"
+	"BMPReadWriterPlugin VMMaker.oscog-eem.1559 (e)"
 #endif
 ;
 

Modified: branches/Cog/nsspursrc/plugins/DSAPrims/DSAPrims.c
===================================================================
--- branches/Cog/nsspursrc/plugins/DSAPrims/DSAPrims.c	2015-12-03 23:09:55 UTC (rev 3513)
+++ branches/Cog/nsspursrc/plugins/DSAPrims/DSAPrims.c	2015-12-06 02:06:01 UTC (rev 3514)
@@ -1,9 +1,9 @@
 /* Automatically generated by
-	VMPluginCodeGenerator VMMaker.oscog-eem.1325 uuid: a0bb0f7f-5e6e-48a7-bf73-fa5d135e06c0
+	VMPluginCodeGenerator VMMaker.oscog-eem.1559 uuid: 52385182-ad6d-4bdc-975a-7328fd81b6da
    from
-	DSAPlugin VMMaker.oscog-eem.1325 uuid: a0bb0f7f-5e6e-48a7-bf73-fa5d135e06c0
+	DSAPlugin VMMaker.oscog-eem.1559 uuid: 52385182-ad6d-4bdc-975a-7328fd81b6da
  */
-static char __buildInfo[] = "DSAPlugin VMMaker.oscog-eem.1325 uuid: a0bb0f7f-5e6e-48a7-bf73-fa5d135e06c0 " __DATE__ ;
+static char __buildInfo[] = "DSAPlugin VMMaker.oscog-eem.1559 uuid: 52385182-ad6d-4bdc-975a-7328fd81b6da " __DATE__ ;
 
 
 
@@ -36,9 +36,6 @@
 #include "sqMemoryAccess.h"
 
 
-/*** Constants ***/
-
-
 /*** Function Prototypes ***/
 static sqInt addBackDivisorDigitShift(sqInt digitShift);
 static sqInt bigDivideLoop(void);
@@ -91,9 +88,9 @@
 struct VirtualMachine* interpreterProxy;
 static const char *moduleName =
 #ifdef SQUEAK_BUILTIN_PLUGIN
-	"DSAPrims VMMaker.oscog-eem.1325 (i)"
+	"DSAPrims VMMaker.oscog-eem.1559 (i)"
 #else
-	"DSAPrims VMMaker.oscog-eem.1325 (e)"
+	"DSAPrims VMMaker.oscog-eem.1559 (e)"
 #endif
 ;
 static sqInt remainderDigitCount;

Modified: branches/Cog/nsspursrc/plugins/DropPlugin/DropPlugin.c
===================================================================
--- branches/Cog/nsspursrc/plugins/DropPlugin/DropPlugin.c	2015-12-03 23:09:55 UTC (rev 3513)
+++ branches/Cog/nsspursrc/plugins/DropPlugin/DropPlugin.c	2015-12-06 02:06:01 UTC (rev 3514)
@@ -1,9 +1,9 @@
 /* Automatically generated by
-	VMPluginCodeGenerator VMMaker.oscog-eem.1325 uuid: a0bb0f7f-5e6e-48a7-bf73-fa5d135e06c0
+	VMPluginCodeGenerator VMMaker.oscog-eem.1559 uuid: 52385182-ad6d-4bdc-975a-7328fd81b6da
    from
-	DropPlugin VMMaker.oscog-eem.1325 uuid: a0bb0f7f-5e6e-48a7-bf73-fa5d135e06c0
+	DropPlugin VMMaker.oscog-eem.1559 uuid: 52385182-ad6d-4bdc-975a-7328fd81b6da
  */
-static char __buildInfo[] = "DropPlugin VMMaker.oscog-eem.1325 uuid: a0bb0f7f-5e6e-48a7-bf73-fa5d135e06c0 " __DATE__ ;
+static char __buildInfo[] = "DropPlugin VMMaker.oscog-eem.1559 uuid: 52385182-ad6d-4bdc-975a-7328fd81b6da " __DATE__ ;
 
 
 
@@ -37,9 +37,6 @@
 #include "sqMemoryAccess.h"
 
 
-/*** Constants ***/
-
-
 /*** Function Prototypes ***/
 EXPORT(const char*) getModuleName(void);
 EXPORT(sqInt) initialiseModule(void);
@@ -77,9 +74,9 @@
 struct VirtualMachine* interpreterProxy;
 static const char *moduleName =
 #ifdef SQUEAK_BUILTIN_PLUGIN
-	"DropPlugin VMMaker.oscog-eem.1325 (i)"
+	"DropPlugin VMMaker.oscog-eem.1559 (i)"
 #else
-	"DropPlugin VMMaker.oscog-eem.1325 (e)"
+	"DropPlugin VMMaker.oscog-eem.1559 (e)"
 #endif
 ;
 

Modified: branches/Cog/nsspursrc/plugins/FileCopyPlugin/FileCopyPlugin.c
===================================================================
--- branches/Cog/nsspursrc/plugins/FileCopyPlugin/FileCopyPlugin.c	2015-12-03 23:09:55 UTC (rev 3513)
+++ branches/Cog/nsspursrc/plugins/FileCopyPlugin/FileCopyPlugin.c	2015-12-06 02:06:01 UTC (rev 3514)
@@ -1,9 +1,9 @@
 /* Automatically generated by
-	SmartSyntaxPluginCodeGenerator VMMaker.oscog-eem.1468 uuid: 2b6a8fd8-cddf-447d-bee4-11d53d2ef9bc
+	SmartSyntaxPluginCodeGenerator VMMaker.oscog-eem.1559 uuid: 52385182-ad6d-4bdc-975a-7328fd81b6da
    from
-	FileCopyPlugin VMMaker.oscog-eem.1468 uuid: 2b6a8fd8-cddf-447d-bee4-11d53d2ef9bc
+	FileCopyPlugin VMMaker.oscog-eem.1559 uuid: 52385182-ad6d-4bdc-975a-7328fd81b6da
  */
-static char __buildInfo[] = "FileCopyPlugin VMMaker.oscog-eem.1468 uuid: 2b6a8fd8-cddf-447d-bee4-11d53d2ef9bc " __DATE__ ;
+static char __buildInfo[] = "FileCopyPlugin VMMaker.oscog-eem.1559 uuid: 52385182-ad6d-4bdc-975a-7328fd81b6da " __DATE__ ;
 
 
 
@@ -36,9 +36,6 @@
 #include "sqMemoryAccess.h"
 
 
-/*** Constants ***/
-
-
 /*** Function Prototypes ***/
 EXPORT(const char*) getModuleName(void);
 EXPORT(sqInt) primitiveFileCopyNamedTo(void);
@@ -71,9 +68,9 @@
 struct VirtualMachine* interpreterProxy;
 static const char *moduleName =
 #ifdef SQUEAK_BUILTIN_PLUGIN
-	"FileCopyPlugin VMMaker.oscog-eem.1468 (i)"
+	"FileCopyPlugin VMMaker.oscog-eem.1559 (i)"
 #else
-	"FileCopyPlugin VMMaker.oscog-eem.1468 (e)"
+	"FileCopyPlugin VMMaker.oscog-eem.1559 (e)"
 #endif
 ;
 

Modified: branches/Cog/nsspursrc/plugins/FloatArrayPlugin/FloatArrayPlugin.c
===================================================================
--- branches/Cog/nsspursrc/plugins/FloatArrayPlugin/FloatArrayPlugin.c	2015-12-03 23:09:55 UTC (rev 3513)
+++ branches/Cog/nsspursrc/plugins/FloatArrayPlugin/FloatArrayPlugin.c	2015-12-06 02:06:01 UTC (rev 3514)
@@ -1,9 +1,9 @@
 /* Automatically generated by
-	VMPluginCodeGenerator VMMaker.oscog-eem.1325 uuid: a0bb0f7f-5e6e-48a7-bf73-fa5d135e06c0
+	VMPluginCodeGenerator VMMaker.oscog-eem.1559 uuid: 52385182-ad6d-4bdc-975a-7328fd81b6da
    from
-	FloatArrayPlugin VMMaker.oscog-eem.1325 uuid: a0bb0f7f-5e6e-48a7-bf73-fa5d135e06c0
+	FloatArrayPlugin VMMaker.oscog-eem.1559 uuid: 52385182-ad6d-4bdc-975a-7328fd81b6da
  */
-static char __buildInfo[] = "FloatArrayPlugin VMMaker.oscog-eem.1325 uuid: a0bb0f7f-5e6e-48a7-bf73-fa5d135e06c0 " __DATE__ ;
+static char __buildInfo[] = "FloatArrayPlugin VMMaker.oscog-eem.1559 uuid: 52385182-ad6d-4bdc-975a-7328fd81b6da " __DATE__ ;
 
 
 
@@ -36,9 +36,6 @@
 #include "sqMemoryAccess.h"
 
 
-/*** Constants ***/
-
-
 /*** Function Prototypes ***/
 EXPORT(const char*) getModuleName(void);
 EXPORT(sqInt) primitiveAddFloatArray(void);
@@ -109,9 +106,9 @@
 struct VirtualMachine* interpreterProxy;
 static const char *moduleName =
 #ifdef SQUEAK_BUILTIN_PLUGIN
-	"FloatArrayPlugin VMMaker.oscog-eem.1325 (i)"
+	"FloatArrayPlugin VMMaker.oscog-eem.1559 (i)"
 #else
-	"FloatArrayPlugin VMMaker.oscog-eem.1325 (e)"
+	"FloatArrayPlugin VMMaker.oscog-eem.1559 (e)"
 #endif
 ;
 

Modified: branches/Cog/nsspursrc/plugins/FloatMathPlugin/FloatMathPlugin.c
===================================================================
--- branches/Cog/nsspursrc/plugins/FloatMathPlugin/FloatMathPlugin.c	2015-12-03 23:09:55 UTC (rev 3513)
+++ branches/Cog/nsspursrc/plugins/FloatMathPlugin/FloatMathPlugin.c	2015-12-06 02:06:01 UTC (rev 3514)
@@ -1,9 +1,9 @@
 /* Automatically generated by
-	VMPluginCodeGenerator VMMaker.oscog-eem.1325 uuid: a0bb0f7f-5e6e-48a7-bf73-fa5d135e06c0
+	VMPluginCodeGenerator VMMaker.oscog-eem.1559 uuid: 52385182-ad6d-4bdc-975a-7328fd81b6da
    from
-	FloatMathPlugin VMMaker.oscog-eem.1325 uuid: a0bb0f7f-5e6e-48a7-bf73-fa5d135e06c0
+	FloatMathPlugin VMMaker.oscog-eem.1559 uuid: 52385182-ad6d-4bdc-975a-7328fd81b6da
  */
-static char __buildInfo[] = "FloatMathPlugin VMMaker.oscog-eem.1325 uuid: a0bb0f7f-5e6e-48a7-bf73-fa5d135e06c0 " __DATE__ ;
+static char __buildInfo[] = "FloatMathPlugin VMMaker.oscog-eem.1559 uuid: 52385182-ad6d-4bdc-975a-7328fd81b6da " __DATE__ ;
 
 
 
@@ -37,9 +37,6 @@
 #include "sqMemoryAccess.h"
 
 
-/*** Constants ***/
-
-
 /*** Function Prototypes ***/
 static sqInt floatExponentBits(void);
 EXPORT(const char*) getModuleName(void);
@@ -96,9 +93,9 @@
 struct VirtualMachine* interpreterProxy;
 static const char *moduleName =
 #ifdef SQUEAK_BUILTIN_PLUGIN
-	"FloatMathPlugin VMMaker.oscog-eem.1325 (i)"
+	"FloatMathPlugin VMMaker.oscog-eem.1559 (i)"
 #else
-	"FloatMathPlugin VMMaker.oscog-eem.1325 (e)"
+	"FloatMathPlugin VMMaker.oscog-eem.1559 (e)"
 #endif
 ;
 

Modified: branches/Cog/nsspursrc/plugins/ImmX11Plugin/ImmX11Plugin.c
===================================================================
--- branches/Cog/nsspursrc/plugins/ImmX11Plugin/ImmX11Plugin.c	2015-12-03 23:09:55 UTC (rev 3513)
+++ branches/Cog/nsspursrc/plugins/ImmX11Plugin/ImmX11Plugin.c	2015-12-06 02:06:01 UTC (rev 3514)
@@ -1,9 +1,9 @@
 /* Automatically generated by
-	SmartSyntaxPluginCodeGenerator VMMaker.oscog-eem.1468 uuid: 2b6a8fd8-cddf-447d-bee4-11d53d2ef9bc
+	SmartSyntaxPluginCodeGenerator VMMaker.oscog-eem.1559 uuid: 52385182-ad6d-4bdc-975a-7328fd81b6da
    from
-	ImmX11Plugin VMMaker.oscog-eem.1468 uuid: 2b6a8fd8-cddf-447d-bee4-11d53d2ef9bc
+	ImmX11Plugin VMMaker.oscog-eem.1559 uuid: 52385182-ad6d-4bdc-975a-7328fd81b6da
  */
-static char __buildInfo[] = "ImmX11Plugin VMMaker.oscog-eem.1468 uuid: 2b6a8fd8-cddf-447d-bee4-11d53d2ef9bc " __DATE__ ;
+static char __buildInfo[] = "ImmX11Plugin VMMaker.oscog-eem.1559 uuid: 52385182-ad6d-4bdc-975a-7328fd81b6da " __DATE__ ;
 
 
 
@@ -42,9 +42,6 @@
 #include "sqMemoryAccess.h"
 
 
-/*** Constants ***/
-
-
 /*** Function Prototypes ***/
 EXPORT(const char*) getModuleName(void);
 EXPORT(sqInt) initialiseModule(void);
@@ -110,9 +107,9 @@
 struct VirtualMachine* interpreterProxy;
 static const char *moduleName =
 #ifdef SQUEAK_BUILTIN_PLUGIN
-	"ImmX11Plugin VMMaker.oscog-eem.1468 (i)"
+	"ImmX11Plugin VMMaker.oscog-eem.1559 (i)"
 #else
-	"ImmX11Plugin VMMaker.oscog-eem.1468 (e)"
+	"ImmX11Plugin VMMaker.oscog-eem.1559 (e)"
 #endif
 ;
 

Modified: branches/Cog/nsspursrc/plugins/JPEGReadWriter2Plugin/JPEGReadWriter2Plugin.c
===================================================================
--- branches/Cog/nsspursrc/plugins/JPEGReadWriter2Plugin/JPEGReadWriter2Plugin.c	2015-12-03 23:09:55 UTC (rev 3513)
+++ branches/Cog/nsspursrc/plugins/JPEGReadWriter2Plugin/JPEGReadWriter2Plugin.c	2015-12-06 02:06:01 UTC (rev 3514)
@@ -1,9 +1,9 @@
 /* Automatically generated by
-	SmartSyntaxPluginCodeGenerator VMMaker.oscog-eem.1468 uuid: 2b6a8fd8-cddf-447d-bee4-11d53d2ef9bc
+	SmartSyntaxPluginCodeGenerator VMMaker.oscog-eem.1559 uuid: 52385182-ad6d-4bdc-975a-7328fd81b6da
    from
-	JPEGReadWriter2Plugin VMMaker.oscog-eem.1468 uuid: 2b6a8fd8-cddf-447d-bee4-11d53d2ef9bc
+	JPEGReadWriter2Plugin VMMaker.oscog-eem.1559 uuid: 52385182-ad6d-4bdc-975a-7328fd81b6da
  */
-static char __buildInfo[] = "JPEGReadWriter2Plugin VMMaker.oscog-eem.1468 uuid: 2b6a8fd8-cddf-447d-bee4-11d53d2ef9bc " __DATE__ ;
+static char __buildInfo[] = "JPEGReadWriter2Plugin VMMaker.oscog-eem.1559 uuid: 52385182-ad6d-4bdc-975a-7328fd81b6da " __DATE__ ;
 
 
 
@@ -37,9 +37,6 @@
 #include "sqMemoryAccess.h"
 
 
-/*** Constants ***/
-
-
 /*** Function Prototypes ***/
 EXPORT(const char*) getModuleName(void);
 EXPORT(sqInt) initialiseModule(void);
@@ -100,9 +97,9 @@
 struct VirtualMachine* interpreterProxy;
 static const char *moduleName =
 #ifdef SQUEAK_BUILTIN_PLUGIN
-	"JPEGReadWriter2Plugin VMMaker.oscog-eem.1468 (i)"
+	"JPEGReadWriter2Plugin VMMaker.oscog-eem.1559 (i)"
 #else
-	"JPEGReadWriter2Plugin VMMaker.oscog-eem.1468 (e)"
+	"JPEGReadWriter2Plugin VMMaker.oscog-eem.1559 (e)"
 #endif
 ;
 

Modified: branches/Cog/nsspursrc/plugins/Matrix2x3Plugin/Matrix2x3Plugin.c
===================================================================
--- branches/Cog/nsspursrc/plugins/Matrix2x3Plugin/Matrix2x3Plugin.c	2015-12-03 23:09:55 UTC (rev 3513)
+++ branches/Cog/nsspursrc/plugins/Matrix2x3Plugin/Matrix2x3Plugin.c	2015-12-06 02:06:01 UTC (rev 3514)
@@ -1,9 +1,9 @@
 /* Automatically generated by
-	VMPluginCodeGenerator VMMaker.oscog-eem.1451 uuid: 35560bfb-1823-47e2-a964-8906c9d43890
+	VMPluginCodeGenerator VMMaker.oscog-eem.1559 uuid: 52385182-ad6d-4bdc-975a-7328fd81b6da
    from
-	Matrix2x3Plugin VMMaker.oscog-eem.1451 uuid: 35560bfb-1823-47e2-a964-8906c9d43890
+	Matrix2x3Plugin VMMaker.oscog-eem.1559 uuid: 52385182-ad6d-4bdc-975a-7328fd81b6da
  */
-static char __buildInfo[] = "Matrix2x3Plugin VMMaker.oscog-eem.1451 uuid: 35560bfb-1823-47e2-a964-8906c9d43890 " __DATE__ ;
+static char __buildInfo[] = "Matrix2x3Plugin VMMaker.oscog-eem.1559 uuid: 52385182-ad6d-4bdc-975a-7328fd81b6da " __DATE__ ;
 
 
 
@@ -36,9 +36,6 @@
 #include "sqMemoryAccess.h"
 
 
-/*** Constants ***/
-
-
 /*** Function Prototypes ***/
 EXPORT(const char*) getModuleName(void);
 static float * loadArgumentMatrix(sqInt matrix);
@@ -114,9 +111,9 @@
 static double m23ResultY;
 static const char *moduleName =
 #ifdef SQUEAK_BUILTIN_PLUGIN
-	"Matrix2x3Plugin VMMaker.oscog-eem.1451 (i)"
+	"Matrix2x3Plugin VMMaker.oscog-eem.1559 (i)"
 #else
-	"Matrix2x3Plugin VMMaker.oscog-eem.1451 (e)"
+	"Matrix2x3Plugin VMMaker.oscog-eem.1559 (e)"
 #endif
 ;
 

Modified: branches/Cog/nsspursrc/plugins/MiscPrimitivePlugin/MiscPrimitivePlugin.c
===================================================================
--- branches/Cog/nsspursrc/plugins/MiscPrimitivePlugin/MiscPrimitivePlugin.c	2015-12-03 23:09:55 UTC (rev 3513)
+++ branches/Cog/nsspursrc/plugins/MiscPrimitivePlugin/MiscPrimitivePlugin.c	2015-12-06 02:06:01 UTC (rev 3514)
@@ -1,17 +1,17 @@
 /* Automatically generated by
-	VMPluginCodeGenerator VMMaker.oscog-eem.1468 uuid: 2b6a8fd8-cddf-447d-bee4-11d53d2ef9bc
+	VMPluginCodeGenerator VMMaker.oscog-eem.1559 uuid: 52385182-ad6d-4bdc-975a-7328fd81b6da
    from
-	MiscPrimitivePlugin VMMaker.oscog-eem.1468 uuid: 2b6a8fd8-cddf-447d-bee4-11d53d2ef9bc
-	Bitmap * Graphics-eem.317 uuid: 93cbbfd8-00b5-48d8-9ef6-174661f41fa7
-	ByteArray * Collections-ul.655 uuid: 179eb75e-eb8d-4c16-8934-158921d1ff81
-	ByteString * Collections-ul.655 uuid: 179eb75e-eb8d-4c16-8934-158921d1ff81
-	SampledSound Sound-topa.43 uuid: c1c2b948-6c86-4cf8-877d-1620433f558e
+	MiscPrimitivePlugin VMMaker.oscog-eem.1559 uuid: 52385182-ad6d-4bdc-975a-7328fd81b6da
+	Bitmap * Graphics-tpr.319 uuid: ea659db8-1afb-4241-9600-37ed16edd7b6
+	ByteArray * Collections-eem.672 uuid: 9b35923c-464e-4b66-8541-2e307f79186b
+	ByteString * Collections-eem.672 uuid: 9b35923c-464e-4b66-8541-2e307f79186b
+	SampledSound Sound-nice.46 uuid: b477c1a5-5650-43b0-8105-1867382b077c
  */
-static char __buildInfo[] = "MiscPrimitivePlugin VMMaker.oscog-eem.1468 uuid: 2b6a8fd8-cddf-447d-bee4-11d53d2ef9bc\n\
-Bitmap * Graphics-eem.317 uuid: 93cbbfd8-00b5-48d8-9ef6-174661f41fa7\n\
-ByteArray * Collections-ul.655 uuid: 179eb75e-eb8d-4c16-8934-158921d1ff81\n\
-ByteString * Collections-ul.655 uuid: 179eb75e-eb8d-4c16-8934-158921d1ff81\n\
-SampledSound Sound-topa.43 uuid: c1c2b948-6c86-4cf8-877d-1620433f558e " __DATE__ ;
+static char __buildInfo[] = "MiscPrimitivePlugin VMMaker.oscog-eem.1559 uuid: 52385182-ad6d-4bdc-975a-7328fd81b6da\n\
+Bitmap * Graphics-tpr.319 uuid: ea659db8-1afb-4241-9600-37ed16edd7b6\n\
+ByteArray * Collections-eem.672 uuid: 9b35923c-464e-4b66-8541-2e307f79186b\n\
+ByteString * Collections-eem.672 uuid: 9b35923c-464e-4b66-8541-2e307f79186b\n\
+SampledSound Sound-nice.46 uuid: b477c1a5-5650-43b0-8105-1867382b077c " __DATE__ ;
 
 
 
@@ -44,9 +44,6 @@
 #include "sqMemoryAccess.h"
 
 
-/*** Constants ***/
-
-
 /*** Function Prototypes ***/
 static sqInt encodeBytesOfinat(sqInt anInt, unsigned char *ba, sqInt i);
 static sqInt encodeIntinat(sqInt anInt, unsigned char *ba, sqInt i);
@@ -90,9 +87,9 @@
 struct VirtualMachine* interpreterProxy;
 static const char *moduleName =
 #ifdef SQUEAK_BUILTIN_PLUGIN
-	"MiscPrimitivePlugin VMMaker.oscog-eem.1468 (i)"
+	"MiscPrimitivePlugin VMMaker.oscog-eem.1559 (i)"
 #else
-	"MiscPrimitivePlugin VMMaker.oscog-eem.1468 (e)"
+	"MiscPrimitivePlugin VMMaker.oscog-eem.1559 (e)"
 #endif
 ;
 

Modified: branches/Cog/nsspursrc/plugins/RePlugin/RePlugin.c
===================================================================
--- branches/Cog/nsspursrc/plugins/RePlugin/RePlugin.c	2015-12-03 23:09:55 UTC (rev 3513)
+++ branches/Cog/nsspursrc/plugins/RePlugin/RePlugin.c	2015-12-06 02:06:01 UTC (rev 3514)
@@ -1,9 +1,9 @@
 /* Automatically generated by
-	SmartSyntaxPluginCodeGenerator VMMaker.oscog-eem.1468 uuid: 2b6a8fd8-cddf-447d-bee4-11d53d2ef9bc
+	SmartSyntaxPluginCodeGenerator VMMaker.oscog-eem.1559 uuid: 52385182-ad6d-4bdc-975a-7328fd81b6da
    from
-	RePlugin VMMaker.oscog-eem.1468 uuid: 2b6a8fd8-cddf-447d-bee4-11d53d2ef9bc
+	RePlugin VMMaker.oscog-eem.1559 uuid: 52385182-ad6d-4bdc-975a-7328fd81b6da
  */
-static char __buildInfo[] = "RePlugin VMMaker.oscog-eem.1468 uuid: 2b6a8fd8-cddf-447d-bee4-11d53d2ef9bc " __DATE__ ;
+static char __buildInfo[] = "RePlugin VMMaker.oscog-eem.1559 uuid: 52385182-ad6d-4bdc-975a-7328fd81b6da " __DATE__ ;
 
 
 
@@ -37,9 +37,6 @@
 #include "sqMemoryAccess.h"
 
 
-/*** Constants ***/
-
-
 /*** Function Prototypes ***/
 static sqInt allocateByteArrayAndSetRcvrExtraPtrFrom(sqInt anExtraPtr);
 static sqInt allocateByteArrayAndSetRcvrPCREPtrFromPCRE(sqInt aPCREPtr);
@@ -123,9 +120,9 @@
 static sqInt matchFlags;
 static const char *moduleName =
 #ifdef SQUEAK_BUILTIN_PLUGIN
-	"RePlugin VMMaker.oscog-eem.1468 (i)"
+	"RePlugin VMMaker.oscog-eem.1559 (i)"
 #else
-	"RePlugin VMMaker.oscog-eem.1468 (e)"
+	"RePlugin VMMaker.oscog-eem.1559 (e)"
 #endif
 ;
 static int netMemory = 0;

Modified: branches/Cog/nsspursrc/plugins/SecurityPlugin/SecurityPlugin.c
===================================================================
--- branches/Cog/nsspursrc/plugins/SecurityPlugin/SecurityPlugin.c	2015-12-03 23:09:55 UTC (rev 3513)
+++ branches/Cog/nsspursrc/plugins/SecurityPlugin/SecurityPlugin.c	2015-12-06 02:06:01 UTC (rev 3514)
@@ -1,9 +1,9 @@
 /* Automatically generated by
-	VMPluginCodeGenerator VMMaker.oscog-eem.1325 uuid: a0bb0f7f-5e6e-48a7-bf73-fa5d135e06c0
+	VMPluginCodeGenerator VMMaker.oscog-eem.1559 uuid: 52385182-ad6d-4bdc-975a-7328fd81b6da
    from
-	SecurityPlugin VMMaker.oscog-eem.1325 uuid: a0bb0f7f-5e6e-48a7-bf73-fa5d135e06c0
+	SecurityPlugin VMMaker.oscog-eem.1559 uuid: 52385182-ad6d-4bdc-975a-7328fd81b6da
  */
-static char __buildInfo[] = "SecurityPlugin VMMaker.oscog-eem.1325 uuid: a0bb0f7f-5e6e-48a7-bf73-fa5d135e06c0 " __DATE__ ;
+static char __buildInfo[] = "SecurityPlugin VMMaker.oscog-eem.1559 uuid: 52385182-ad6d-4bdc-975a-7328fd81b6da " __DATE__ ;
 
 
 
@@ -37,9 +37,6 @@
 #include "sqMemoryAccess.h"
 
 
-/*** Constants ***/
-
-
 /*** Function Prototypes ***/
 EXPORT(const char*) getModuleName(void);
 EXPORT(sqInt) initialiseModule(void);
@@ -93,9 +90,9 @@
 struct VirtualMachine* interpreterProxy;
 static const char *moduleName =
 #ifdef SQUEAK_BUILTIN_PLUGIN
-	"SecurityPlugin VMMaker.oscog-eem.1325 (i)"
+	"SecurityPlugin VMMaker.oscog-eem.1559 (i)"
 #else
-	"SecurityPlugin VMMaker.oscog-eem.1325 (e)"
+	"SecurityPlugin VMMaker.oscog-eem.1559 (e)"
 #endif
 ;
 

Modified: branches/Cog/nsspursrc/plugins/SocketPlugin/SocketPlugin.c
===================================================================
--- branches/Cog/nsspursrc/plugins/SocketPlugin/SocketPlugin.c	2015-12-03 23:09:55 UTC (rev 3513)
+++ branches/Cog/nsspursrc/plugins/SocketPlugin/SocketPlugin.c	2015-12-06 02:06:01 UTC (rev 3514)
@@ -1,9 +1,9 @@
 /* Automatically generated by
-	SmartSyntaxPluginCodeGenerator VMMaker.oscog-eem.1468 uuid: 2b6a8fd8-cddf-447d-bee4-11d53d2ef9bc
+	SmartSyntaxPluginCodeGenerator VMMaker.oscog-eem.1559 uuid: 52385182-ad6d-4bdc-975a-7328fd81b6da
    from
-	SocketPlugin VMMaker.oscog-eem.1468 uuid: 2b6a8fd8-cddf-447d-bee4-11d53d2ef9bc
+	SocketPlugin VMMaker.oscog-eem.1559 uuid: 52385182-ad6d-4bdc-975a-7328fd81b6da
  */
-static char __buildInfo[] = "SocketPlugin VMMaker.oscog-eem.1468 uuid: 2b6a8fd8-cddf-447d-bee4-11d53d2ef9bc " __DATE__ ;
+static char __buildInfo[] = "SocketPlugin VMMaker.oscog-eem.1559 uuid: 52385182-ad6d-4bdc-975a-7328fd81b6da " __DATE__ ;
 
 
 
@@ -37,9 +37,6 @@
 #include "sqMemoryAccess.h"
 
 
-/*** Constants ***/
-
-
 /*** Function Prototypes ***/
 EXPORT(const char*) getModuleName(void);
 EXPORT(sqInt) initialiseModule(void);
@@ -176,9 +173,9 @@
 struct VirtualMachine* interpreterProxy;
 static const char *moduleName =
 #ifdef SQUEAK_BUILTIN_PLUGIN
-	"SocketPlugin VMMaker.oscog-eem.1468 (i)"
+	"SocketPlugin VMMaker.oscog-eem.1559 (i)"
 #else
-	"SocketPlugin VMMaker.oscog-eem.1468 (e)"
+	"SocketPlugin VMMaker.oscog-eem.1559 (e)"
 #endif
 ;
 static void * sCCLOPfn;

Modified: branches/Cog/nsspursrc/plugins/SoundPlugin/SoundPlugin.c
===================================================================
--- branches/Cog/nsspursrc/plugins/SoundPlugin/SoundPlugin.c	2015-12-03 23:09:55 UTC (rev 3513)
+++ branches/Cog/nsspursrc/plugins/SoundPlugin/SoundPlugin.c	2015-12-06 02:06:01 UTC (rev 3514)
@@ -1,9 +1,9 @@
 /* Automatically generated by
-	SmartSyntaxPluginCodeGenerator VMMaker.oscog-eem.1468 uuid: 2b6a8fd8-cddf-447d-bee4-11d53d2ef9bc
+	SmartSyntaxPluginCodeGenerator VMMaker.oscog-eem.1559 uuid: 52385182-ad6d-4bdc-975a-7328fd81b6da
    from
-	SoundPlugin VMMaker.oscog-eem.1468 uuid: 2b6a8fd8-cddf-447d-bee4-11d53d2ef9bc
+	SoundPlugin VMMaker.oscog-eem.1559 uuid: 52385182-ad6d-4bdc-975a-7328fd81b6da
  */
-static char __buildInfo[] = "SoundPlugin VMMaker.oscog-eem.1468 uuid: 2b6a8fd8-cddf-447d-bee4-11d53d2ef9bc " __DATE__ ;
+static char __buildInfo[] = "SoundPlugin VMMaker.oscog-eem.1559 uuid: 52385182-ad6d-4bdc-975a-7328fd81b6da " __DATE__ ;
 
 
 
@@ -37,9 +37,6 @@
 #include "sqMemoryAccess.h"
 
 
-/*** Constants ***/
-
-
 /*** Function Prototypes ***/
 EXPORT(const char*) getModuleName(void);
 EXPORT(sqInt) initialiseModule(void);
@@ -107,9 +104,9 @@
 struct VirtualMachine* interpreterProxy;
 static const char *moduleName =
 #ifdef SQUEAK_BUILTIN_PLUGIN
-	"SoundPlugin VMMaker.oscog-eem.1468 (i)"
+	"SoundPlugin VMMaker.oscog-eem.1559 (i)"
 #else
-	"SoundPlugin VMMaker.oscog-eem.1468 (e)"
+	"SoundPlugin VMMaker.oscog-eem.1559 (e)"
 #endif
 ;
 

Modified: branches/Cog/nsspursrc/plugins/SqueakSSL/SqueakSSL.c
===================================================================
--- branches/Cog/nsspursrc/plugins/SqueakSSL/SqueakSSL.c	2015-12-03 23:09:55 UTC (rev 3513)
+++ branches/Cog/nsspursrc/plugins/SqueakSSL/SqueakSSL.c	2015-12-06 02:06:01 UTC (rev 3514)
@@ -1,9 +1,9 @@
 /* Automatically generated by
-	VMPluginCodeGenerator VMMaker.oscog-eem.1325 uuid: a0bb0f7f-5e6e-48a7-bf73-fa5d135e06c0
+	VMPluginCodeGenerator VMMaker.oscog-eem.1559 uuid: 52385182-ad6d-4bdc-975a-7328fd81b6da
    from
-	SqueakSSLPlugin VMMaker.oscog-eem.1325 uuid: a0bb0f7f-5e6e-48a7-bf73-fa5d135e06c0
+	SqueakSSLPlugin VMMaker.oscog-eem.1559 uuid: 52385182-ad6d-4bdc-975a-7328fd81b6da
  */
-static char __buildInfo[] = "SqueakSSLPlugin VMMaker.oscog-eem.1325 uuid: a0bb0f7f-5e6e-48a7-bf73-fa5d135e06c0 " __DATE__ ;
+static char __buildInfo[] = "SqueakSSLPlugin VMMaker.oscog-eem.1559 uuid: 52385182-ad6d-4bdc-975a-7328fd81b6da " __DATE__ ;
 
 
 
@@ -37,9 +37,6 @@
 #include "sqMemoryAccess.h"
 
 
-/*** Constants ***/
-
-
 /*** Function Prototypes ***/
 EXPORT(const char*) getModuleName(void);
 EXPORT(sqInt) primitiveAccept(void);
@@ -98,9 +95,9 @@
 struct VirtualMachine* interpreterProxy;
 static const char *moduleName =
 #ifdef SQUEAK_BUILTIN_PLUGIN
-	"SqueakSSL VMMaker.oscog-eem.1325 (i)"
+	"SqueakSSL VMMaker.oscog-eem.1559 (i)"
 #else
-	"SqueakSSL VMMaker.oscog-eem.1325 (e)"
+	"SqueakSSL VMMaker.oscog-eem.1559 (e)"
 #endif
 ;
 

Modified: branches/Cog/nsspursrc/plugins/UUIDPlugin/UUIDPlugin.c
===================================================================
--- branches/Cog/nsspursrc/plugins/UUIDPlugin/UUIDPlugin.c	2015-12-03 23:09:55 UTC (rev 3513)
+++ branches/Cog/nsspursrc/plugins/UUIDPlugin/UUIDPlugin.c	2015-12-06 02:06:01 UTC (rev 3514)
@@ -1,9 +1,9 @@
 /* Automatically generated by
-	SmartSyntaxPluginCodeGenerator VMMaker.oscog-eem.1468 uuid: 2b6a8fd8-cddf-447d-bee4-11d53d2ef9bc
+	SmartSyntaxPluginCodeGenerator VMMaker.oscog-eem.1559 uuid: 52385182-ad6d-4bdc-975a-7328fd81b6da
    from
-	UUIDPlugin VMMaker.oscog-eem.1468 uuid: 2b6a8fd8-cddf-447d-bee4-11d53d2ef9bc
+	UUIDPlugin VMMaker.oscog-eem.1559 uuid: 52385182-ad6d-4bdc-975a-7328fd81b6da
  */
-static char __buildInfo[] = "UUIDPlugin VMMaker.oscog-eem.1468 uuid: 2b6a8fd8-cddf-447d-bee4-11d53d2ef9bc " __DATE__ ;
+static char __buildInfo[] = "UUIDPlugin VMMaker.oscog-eem.1559 uuid: 52385182-ad6d-4bdc-975a-7328fd81b6da " __DATE__ ;
 
 
 
@@ -37,9 +37,6 @@
 #include "sqMemoryAccess.h"
 
 
-/*** Constants ***/
-
-
 /*** Function Prototypes ***/
 EXPORT(const char*) getModuleName(void);
 EXPORT(sqInt) initialiseModule(void);
@@ -72,9 +69,9 @@
 struct VirtualMachine* interpreterProxy;
 static const char *moduleName =
 #ifdef SQUEAK_BUILTIN_PLUGIN
-	"UUIDPlugin VMMaker.oscog-eem.1468 (i)"
+	"UUIDPlugin VMMaker.oscog-eem.1559 (i)"
 #else
-	"UUIDPlugin VMMaker.oscog-eem.1468 (e)"
+	"UUIDPlugin VMMaker.oscog-eem.1559 (e)"
 #endif
 ;
 

Modified: branches/Cog/nsspursrc/vm/cogit.h
===================================================================
--- branches/Cog/nsspursrc/vm/cogit.h	2015-12-03 23:09:55 UTC (rev 3513)
+++ branches/Cog/nsspursrc/vm/cogit.h	2015-12-06 02:06:01 UTC (rev 3514)
@@ -1,5 +1,5 @@
 /* Automatically generated by
-	CCodeGenerator VMMaker.oscog-eem.1543 uuid: 7ab33230-086d-4b21-a335-26f16100a3b4
+	CCodeGenerator VMMaker.oscog-eem.1559 uuid: 52385182-ad6d-4bdc-975a-7328fd81b6da
  */
 
 

Modified: branches/Cog/nsspursrc/vm/cogitARMv5.c
===================================================================
--- branches/Cog/nsspursrc/vm/cogitARMv5.c	2015-12-03 23:09:55 UTC (rev 3513)
+++ branches/Cog/nsspursrc/vm/cogitARMv5.c	2015-12-06 02:06:01 UTC (rev 3514)
@@ -1,9 +1,9 @@
 /* Automatically generated by
-	CCodeGenerator VMMaker.oscog-eem.1543 uuid: 7ab33230-086d-4b21-a335-26f16100a3b4
+	CCodeGenerator VMMaker.oscog-eem.1559 uuid: 52385182-ad6d-4bdc-975a-7328fd81b6da
    from
-	StackToRegisterMappingCogit VMMaker.oscog-eem.1543 uuid: 7ab33230-086d-4b21-a335-26f16100a3b4
+	StackToRegisterMappingCogit VMMaker.oscog-eem.1559 uuid: 52385182-ad6d-4bdc-975a-7328fd81b6da
  */
-static char __buildInfo[] = "StackToRegisterMappingCogit VMMaker.oscog-eem.1543 uuid: 7ab33230-086d-4b21-a335-26f16100a3b4 " __DATE__ ;
+static char __buildInfo[] = "StackToRegisterMappingCogit VMMaker.oscog-eem.1559 uuid: 52385182-ad6d-4bdc-975a-7328fd81b6da " __DATE__ ;
 char *__cogitBuildInfo = __buildInfo;
 
 
@@ -168,6 +168,7 @@
 #define CmpOpcode 10
 #define CmpRdRd 111
 #define CmpRR 90
+#define CompletePrimitive 4
 #define ConcreteIPReg 12
 #define ConcreteVarBaseReg 10
 #define ConstZero 1
@@ -391,6 +392,7 @@
 #define TstCqR 101
 #define TstOpcode 8
 #define UnfailingPrimitive 3
+#define UnimplementedOperation 2
 #define UnimplementedPrimitive -7
 #define ValueIndex 1
 #define VarBaseReg -20
@@ -438,6 +440,7 @@
 static sqInt NoDbgRegParms literal32BeforeFollowingAddress(AbstractInstruction * self_in_literal32BeforeFollowingAddress, sqInt followingAddress);
 static sqInt NoDbgRegParms numCheckFeaturesOpcodes(AbstractInstruction * self_in_numCheckFeaturesOpcodes);
 static AbstractInstruction * NoDbgRegParms relocateJumpLongBeforeFollowingAddressby(AbstractInstruction * self_in_relocateJumpLongBeforeFollowingAddressby, sqInt pc, sqInt delta);
+static AbstractInstruction * NoDbgRegParms relocateJumpLongConditionalBeforeFollowingAddressby(AbstractInstruction * self_in_relocateJumpLongConditionalBeforeFollowingAddressby, sqInt pc, sqInt delta);
 static AbstractInstruction * NoDbgRegParms resolveJumpTarget(AbstractInstruction * self_in_resolveJumpTarget);
 static sqInt NoDbgRegParms rewriteConditionalJumpLongAttarget(AbstractInstruction * self_in_rewriteConditionalJumpLongAttarget, sqInt callSiteReturnAddress, sqInt callTargetAddress);
 static sqInt NoDbgRegParms setLabelOffset(AbstractInstruction * self_in_setLabelOffset, sqInt aValue);
@@ -565,6 +568,7 @@
 static CogMethod * NoDbgRegParms cmHomeMethod(CogBlockMethod * self_in_cmHomeMethod);
 static sqInt NoDbgRegParms isBranch(BytecodeDescriptor * self_in_isBranch);
 static sqInt NoDbgRegParms isUnconditionalBranch(BytecodeDescriptor * self_in_isUnconditionalBranch);
+static AbstractInstruction * NoDbgRegParms gAddCqR(sqInt quickConstant, sqInt reg);
 static AbstractInstruction * NoDbgRegParms gAndCqR(sqInt quickConstant, sqInt reg);
 static AbstractInstruction * NoDbgRegParms gArithmeticShiftRightRR(sqInt reg1, sqInt reg2);
 extern sqInt abortOffset(void);
@@ -857,7 +861,7 @@
 static sqInt NoDbgRegParms genInnerPrimitiveNewWithArg(sqInt retNoffset);
 static sqInt NoDbgRegParms genInnerPrimitiveNew(sqInt retNoffset);
 static sqInt NoDbgRegParms genInnerPrimitiveStringAtPut(sqInt retNoffset);
-static sqInt NoDbgRegParms genInnerPrimitiveStringAt(sqInt retNoffset);
+static AbstractInstruction * NoDbgRegParms genJumpIsSmallIntegerValuescratch(sqInt aRegister, sqInt scratchReg);
 static AbstractInstruction * NoDbgRegParms genJumpNotSmallIntegerInScratchReg(sqInt aRegister);
 static AbstractInstruction * NoDbgRegParms genJumpNotSmallInteger(sqInt aRegister);
 static AbstractInstruction * NoDbgRegParms genJumpSmallInteger(sqInt aRegister);
@@ -903,7 +907,9 @@
 static sqInt NoDbgRegParms genInnerPrimitiveAsCharacterinReg(sqInt retNOffset, sqInt reg);
 static sqInt NoDbgRegParms genInnerPrimitiveCharacterValue(sqInt retNOffset);
 static sqInt NoDbgRegParms genInnerPrimitiveIdenticalorNotIf(sqInt retNoffset, sqInt orNot);
+static sqInt NoDbgRegParms genInnerPrimitiveObjectAt(sqInt retNOffset);
 static sqInt NoDbgRegParms genInnerPrimitiveSize(sqInt retNoffset);
+static sqInt NoDbgRegParms genInnerPrimitiveStringAt(sqInt retNoffset);
 static AbstractInstruction * NoDbgRegParms genJumpImmediate(sqInt aRegister);
 static AbstractInstruction * NoDbgRegParms genJumpNotCharacterInScratchReg(sqInt reg);
 static sqInt NoDbgRegParms genNewArrayOfSizeinitialized(sqInt size, sqInt initialized);
@@ -917,7 +923,6 @@
 static sqInt getActiveContextAllocatesInMachineCode(void);
 static sqInt hasSpurMemoryManagerAPI(void);
 static sqInt NoDbgRegParms inlineCacheTagIsYoung(sqInt cacheTag);
-static sqInt isSmallIntegerTagNonZero(void);
 static AbstractInstruction * NoDbgRegParms jumpNotCharacterUnsignedValueInRegister(sqInt reg);
 static sqInt NoDbgRegParms markAndTraceLiteralinatpc(sqInt literal, CogMethod *cogMethodOrNil, usqInt address);
 static void NoDbgRegParms markAndTraceLiteralinat(sqInt literal, CogMethod *cogMethod, sqInt *address);
@@ -966,7 +971,7 @@
 static sqInt resetForBlockCompile(void);
 static sqInt saveForBlockCompile(void);
 static sqInt compileBlockDispatch(void);
-static sqInt compileFallbackToInterpreterPrimitive(void);
+static sqInt NoDbgRegParms compileFallbackToInterpreterPrimitive(sqInt code);
 static void compileGetErrorCode(void);
 static sqInt NoDbgRegParms compileInterpreterPrimitive(void (*primitiveRoutine)(void));
 static void NoDbgRegParms compileOpenPICnumArgs(sqInt selector, sqInt numArgs);
@@ -1150,6 +1155,7 @@
 static sqInt genPrimitiveNewMethod(void);
 static sqInt genPrimitiveNewWithArg(void);
 static sqInt genPrimitiveNotIdentical(void);
+static sqInt genPrimitiveObjectAt(void);
 static sqInt genPrimitivePerform(void);
 static sqInt genPrimitiveQuo(void);
 static sqInt genPrimitiveSize(void);
@@ -1887,7 +1893,7 @@
 static sqInt picMissTrampolines[4];
 static void (*postCompileHook)(CogMethod *);
 static BytecodeDescriptor * prevBCDescriptor;
-static AbstractInstruction * primInvokeLabel;
+static AbstractInstruction * primInvokeInstruction;
 static sqInt primitiveIndex;
 static AbstractInstruction * primSetFunctionLabel;
 void (*realCECallCogCodePopReceiverAndClassRegs)(void);
@@ -2233,6 +2239,20 @@
 	return self_in_relocateJumpLongBeforeFollowingAddressby;
 }
 
+
+/*	Relocate a long conditional jump before pc. Default to relocating a
+	non-conditional jump.
+	Processors that have different formats for conditional and unconditional
+	jumps override. */
+
+	/* CogAbstractInstruction>>#relocateJumpLongConditionalBeforeFollowingAddress:by: */
+static AbstractInstruction * NoDbgRegParms
+relocateJumpLongConditionalBeforeFollowingAddressby(AbstractInstruction * self_in_relocateJumpLongConditionalBeforeFollowingAddressby, sqInt pc, sqInt delta)
+{
+	relocateJumpLongBeforeFollowingAddressby(self_in_relocateJumpLongConditionalBeforeFollowingAddressby, pc, delta);
+	return self_in_relocateJumpLongConditionalBeforeFollowingAddressby;
+}
+
 	/* CogAbstractInstruction>>#resolveJumpTarget */
 static AbstractInstruction * NoDbgRegParms
 resolveJumpTarget(AbstractInstruction * self_in_resolveJumpTarget)
@@ -6786,8 +6806,8 @@
 }
 
 
-/*	Assuming mcpc is a return pc answer if the instruction before it is a
-	call. 
+/*	Assuming mcpc is a send return pc answer if the instruction before it is a
+	call (not a CallFull).
  */
 /*	There are two types of calls: BL and/BLX encoding */
 
@@ -7670,6 +7690,14 @@
  || ((self_in_isUnconditionalBranch->isBranchFalse))));
 }
 
+	/* Cogit>>#AddCq:R: */
+static AbstractInstruction * NoDbgRegParms
+gAddCqR(sqInt quickConstant, sqInt reg)
+{
+	/* begin gen:quickConstant:operand: */
+	return checkQuickConstantforInstruction(quickConstant, genoperandoperand(AddCqR, quickConstant, reg));
+}
+
 	/* Cogit>>#AndCq:R: */
 static AbstractInstruction * NoDbgRegParms
 gAndCqR(sqInt quickConstant, sqInt reg)
@@ -11046,12 +11074,12 @@
 generateMapAtstart(sqInt addressOrNull, sqInt startAddress)
 {
     unsigned char annotation;
-    sqInt delta;
+    usqInt delta;
     sqInt i;
     AbstractInstruction *instruction;
     sqInt length;
-    sqInt location;
-    sqInt mapEntry;
+    usqInt location;
+    usqInt mapEntry;
     sqInt maxDelta;
     usqInt mcpc;
 
@@ -13915,8 +13943,8 @@
 	{ genFastPrimFail, -1, 0 },
 	{ genFastPrimFail, -1, 0 },
 	{ genFastPrimFail, -1, 0 },
+	{ genPrimitiveObjectAt, 1, 0 },
 	{ 0, -1, 0 },
-	{ 0, -1, 0 },
 	{ genPrimitiveNew, -1, 0 },
 	{ genPrimitiveNewWithArg, -1, 0 },
 	{ 0, -1, 0 },
@@ -14293,7 +14321,12 @@
 			 && (((((usqInt)cPIC)) + ((cPIC->blockSize))) >= (((usqInt)entryPoint))))) {
 			targetMethod = ((CogMethod *) (entryPoint - cmNoCheckEntryOffset));
 			assert(((targetMethod->cmType)) == CMMethod);
-			relocateJumpLongBeforeFollowingAddressby(backEnd, pc, -(delta - ((targetMethod->objectHeader))));
+			if (i == 1) {
+				relocateJumpLongBeforeFollowingAddressby(backEnd, pc, -(delta - ((targetMethod->objectHeader))));
+			}
+			else {
+				relocateJumpLongConditionalBeforeFollowingAddressby(backEnd, pc, -(delta - ((targetMethod->objectHeader))));
+			}
 		}
 	}
 	assert(((cPIC->cPICNumCases)) > 0);
@@ -18052,118 +18085,22 @@
 }
 
 
-/*	Implement the guts of primitiveStringAt; dispatch on size */
+/*	Generate a test for aRegister containing an integer value in the
+	SmallInteger range, and a jump if so, answering the jump.
+	c.f. Spur32BitMemoryManager>>isIntegerValue: */
 
-	/* CogObjectRepresentationFor32BitSpur>>#genInnerPrimitiveStringAt: */
-static sqInt NoDbgRegParms
-genInnerPrimitiveStringAt(sqInt retNoffset)
+	/* CogObjectRepresentationFor32BitSpur>>#genJumpIsSmallIntegerValue:scratch: */
+static AbstractInstruction * NoDbgRegParms
+genJumpIsSmallIntegerValuescratch(sqInt aRegister, sqInt scratchReg)
 {
-    AbstractInstruction *done;
-    sqInt formatReg;
-    AbstractInstruction *jumpBadIndex;
-    AbstractInstruction *jumpBytesOutOfBounds;
-    AbstractInstruction *jumpIsBytes;
-    AbstractInstruction *jumpIsShorts;
-    AbstractInstruction *jumpIsWords;
-    AbstractInstruction *jumpNotIndexable;
-    AbstractInstruction *jumpShortsOutOfBounds;
-    AbstractInstruction *jumpWordsOutOfBounds;
-    AbstractInstruction *jumpWordTooBig;
-    sqInt operandOne;
-    sqInt quickConstant;
-    sqInt quickConstant1;
-    sqInt quickConstant2;
-    sqInt quickConstant3;
-
-
-	/* c.f. StackInterpreter>>stSizeOf: SpurMemoryManager>>lengthOf:format: fixedFieldsOf:format:length: */
-
-	/* begin MoveR:R: */
-	genoperandoperand(MoveRR, Arg0Reg, Arg1Reg);
-	jumpBadIndex = genJumpNotSmallInteger(Arg0Reg);
-	genConvertSmallIntegerToIntegerInReg(Arg1Reg);
-	/* begin SubCq:R: */
-	/* begin gen:quickConstant:operand: */
-	checkQuickConstantforInstruction(1, genoperandoperand(SubCqR, 1, Arg1Reg));
-	genGetFormatOfintoleastSignificantHalfOfBaseHeaderIntoScratch(ReceiverResultReg, (formatReg = SendNumArgsReg), null);
-	genGetNumSlotsOfinto(ReceiverResultReg, ClassReg);
-	/* begin CmpCq:R: */
-	quickConstant = firstByteFormat();
-	/* begin gen:quickConstant:operand: */
-	checkQuickConstantforInstruction(quickConstant, genoperandoperand(CmpCqR, quickConstant, formatReg));
-	/* begin JumpGreaterOrEqual: */
-	jumpIsBytes = genConditionalBranchoperand(JumpGreaterOrEqual, ((sqInt)0));
-	/* begin CmpCq:R: */
-	quickConstant1 = firstShortFormat();
-	/* begin gen:quickConstant:operand: */
-	checkQuickConstantforInstruction(quickConstant1, genoperandoperand(CmpCqR, quickConstant1, formatReg));
-	/* begin JumpGreaterOrEqual: */
-	jumpIsShorts = genConditionalBranchoperand(JumpGreaterOrEqual, ((sqInt)0));
-	/* begin CmpCq:R: */
-	quickConstant2 = firstLongFormat();
-	/* begin gen:quickConstant:operand: */
-	checkQuickConstantforInstruction(quickConstant2, genoperandoperand(CmpCqR, quickConstant2, formatReg));
-	/* begin JumpGreaterOrEqual: */
-	jumpIsWords = genConditionalBranchoperand(JumpGreaterOrEqual, ((sqInt)0));
-	/* begin Jump: */
-	jumpNotIndexable = genoperand(Jump, ((sqInt)0));
-	jmpTarget(jumpIsBytes, gLogicalShiftLeftCqR(shiftForWord(), ClassReg));
-	/* begin AndCq:R: */
-	/* begin gen:quickConstant:operand: */
-	checkQuickConstantforInstruction(BytesPerWord - 1, genoperandoperand(AndCqR, BytesPerWord - 1, formatReg));
-	/* begin SubR:R: */
-	genoperandoperand(SubRR, formatReg, ClassReg);
-	/* begin CmpR:R: */
-	genoperandoperand(CmpRR, Arg1Reg, ClassReg);
-	/* begin JumpBelowOrEqual: */
-	jumpBytesOutOfBounds = genConditionalBranchoperand(JumpBelowOrEqual, ((sqInt)0));
-	/* begin AddCq:R: */
-	/* begin gen:quickConstant:operand: */
-	checkQuickConstantforInstruction(BaseHeaderSize, genoperandoperand(AddCqR, BaseHeaderSize, Arg1Reg));
-	/* begin MoveXbr:R:R: */
-	genoperandoperandoperand(MoveXbrRR, Arg1Reg, ReceiverResultReg, ReceiverResultReg);
-	/* begin Label */
-	done = genoperandoperand(Label, (labelCounter += 1), bytecodePC);
-	genConvertIntegerToCharacterInReg(ReceiverResultReg);
-	/* begin RetN: */
-	genoperand(RetN, retNoffset);
-	jmpTarget(jumpIsShorts, gLogicalShiftLeftCqR((shiftForWord()) - 1, ClassReg));
-	/* begin AndCq:R: */
-	/* begin gen:quickConstant:operand: */
-	checkQuickConstantforInstruction(1, genoperandoperand(AndCqR, 1, formatReg));
-	/* begin SubR:R: */
-	genoperandoperand(SubRR, formatReg, ClassReg);
-	/* begin CmpR:R: */
-	genoperandoperand(CmpRR, Arg1Reg, ClassReg);
-	/* begin JumpBelowOrEqual: */
-	jumpShortsOutOfBounds = genConditionalBranchoperand(JumpBelowOrEqual, ((sqInt)0));
-	/* begin AddR:R: */
-	genoperandoperand(AddRR, Arg1Reg, ReceiverResultReg);
-	/* begin MoveM16:r:R: */
-	/* begin gen:quickConstant:operand:operand: */
-	checkQuickConstantforInstruction(BaseHeaderSize, genoperandoperandoperand(MoveM16rR, BaseHeaderSize, ReceiverResultReg, ReceiverResultReg));
-	/* begin Jump: */
-	genoperand(Jump, ((sqInt)done));
-	jmpTarget(jumpIsWords, gCmpRR(Arg1Reg, ClassReg));
-	/* begin JumpBelowOrEqual: */
-	jumpWordsOutOfBounds = genConditionalBranchoperand(JumpBelowOrEqual, ((sqInt)0));
-	/* begin AddCq:R: */
-	/* begin gen:quickConstant:operand: */
-	operandOne = ((usqInt) BaseHeaderSize) >> (shiftForWord());
-	checkQuickConstantforInstruction(operandOne, genoperandoperand(AddCqR, operandOne, Arg1Reg));
-	/* begin MoveXwr:R:R: */
-	genoperandoperandoperand(MoveXwrRR, Arg1Reg, ReceiverResultReg, TempReg);
-	/* begin SubCq:R: */
-	quickConstant3 = ((usqInt) BaseHeaderSize) >> (shiftForWord());
-	/* begin gen:quickConstant:operand: */
-	checkQuickConstantforInstruction(quickConstant3, genoperandoperand(SubCqR, quickConstant3, Arg1Reg));
-	jumpWordTooBig = jumpNotCharacterUnsignedValueInRegister(TempReg);
-	/* begin MoveR:R: */
-	genoperandoperand(MoveRR, TempReg, ReceiverResultReg);
-	/* begin Jump: */
-	genoperand(Jump, ((sqInt)done));
-	jmpTarget(jumpBytesOutOfBounds, jmpTarget(jumpShortsOutOfBounds, jmpTarget(jumpWordsOutOfBounds, jmpTarget(jumpWordTooBig, jmpTarget(jumpNotIndexable, jmpTarget(jumpBadIndex, gLabel()))))));
-	return 0;
+	return (/* begin MoveR:R: */
+	genoperandoperand(MoveRR, aRegister, scratchReg),
+	/* begin ArithmeticShiftRightCq:R: */
+	genoperandoperand(ArithmeticShiftRightCqR, 1, scratchReg),
+	/* begin XorR:R: */
+	genoperandoperand(XorRR, aRegister, scratchReg),
+	/* begin JumpLess: */
+	genConditionalBranchoperand(JumpLess, ((sqInt)0)));
 }
 
 	/* CogObjectRepresentationFor32BitSpur>>#genJumpNotSmallIntegerInScratchReg: */
@@ -19276,10 +19213,18 @@
 genInnerPrimitiveAsCharacterinReg(sqInt retNOffset, sqInt reg)
 {
     AbstractInstruction *jumpNotInt;
+    AbstractInstruction *jumpNotInt1;
     AbstractInstruction *jumpOutOfRange;
 
 	if (reg != ReceiverResultReg) {
-		jumpNotInt = genJumpNotSmallInteger(reg);
+		/* begin genJumpNotSmallInteger:scratch: */
+		jumpNotInt1 = genJumpNotSmallInteger(reg);
+		if ((((sqInt)jumpNotInt1)) == UnimplementedOperation) {
+			/* begin MoveR:R: */
+			genoperandoperand(MoveRR, reg, TempReg);
+			jumpNotInt1 = genJumpNotSmallIntegerInScratchReg(TempReg);
+		}
+		jumpNotInt = jumpNotInt1;
 	}
 	/* begin MoveR:R: */
 	genoperandoperand(MoveRR, reg, TempReg);
@@ -19351,7 +19296,64 @@
 	return 0;
 }
 
+	/* CogObjectRepresentationForSpur>>#genInnerPrimitiveObjectAt: */
+static sqInt NoDbgRegParms
+genInnerPrimitiveObjectAt(sqInt retNOffset)
+{
+    sqInt destReg;
+    sqInt headerReg;
+    AbstractInstruction *jumpBadIndex;
+    AbstractInstruction *jumpBounds;
+    AbstractInstruction *jumpNotCogMethod;
+    AbstractInstruction *jumpNotHeaderIndex;
+    sqInt offset;
+    sqInt operandOne;
+    sqInt quickConstant;
 
+
+	/* get header into Arg1Reg... */
+
+	jumpBadIndex = genJumpNotSmallInteger(Arg0Reg);
+	/* begin MoveMw:r:R: */
+	destReg = (headerReg = Arg1Reg);
+	/* begin gen:quickConstant:operand:operand: */
+	checkQuickConstantforInstruction(BaseHeaderSize, genoperandoperandoperand(MoveMwrR, BaseHeaderSize, ReceiverResultReg, destReg));
+	jumpNotCogMethod = genJumpSmallInteger(headerReg);
+	/* begin MoveMw:r:R: */
+	offset = offsetof(CogMethod, methodHeader);
+	/* begin gen:quickConstant:operand:operand: */
+	checkQuickConstantforInstruction(offset, genoperandoperandoperand(MoveMwrR, offset, headerReg, headerReg));
+	jmpTarget(jumpNotCogMethod, gCmpCqR(((1 << 1) | 1), Arg0Reg));
+	/* begin JumpNonZero: */
+	jumpNotHeaderIndex = genConditionalBranchoperand(JumpNonZero, ((sqInt)0));
+	/* begin MoveR:R: */
+	genoperandoperand(MoveRR, headerReg, ReceiverResultReg);
+	/* begin RetN: */
+	genoperand(RetN, retNOffset);
+	jmpTarget(jumpNotHeaderIndex, gAndCqR((((alternateHeaderNumLiteralsMask()) << 1) | 1), headerReg));
+	/* begin SubCq:R: */
+	quickConstant = (((1 << 1) | 1)) - (smallIntegerTag());
+	/* begin gen:quickConstant:operand: */
+	checkQuickConstantforInstruction(quickConstant, genoperandoperand(SubCqR, quickConstant, Arg0Reg));
+	/* begin CmpR:R: */
+	genoperandoperand(CmpRR, headerReg, Arg0Reg);
+	/* begin JumpAbove: */
+	jumpBounds = genConditionalBranchoperand(JumpAbove, ((sqInt)0));
+	genConvertSmallIntegerToIntegerInReg(Arg0Reg);
+	/* begin AddCq:R: */
+	/* begin gen:quickConstant:operand: */
+	operandOne = ((usqInt) BaseHeaderSize) >> (shiftForWord());
+	checkQuickConstantforInstruction(operandOne, genoperandoperand(AddCqR, operandOne, Arg0Reg));
+	/* begin MoveXwr:R:R: */
+	genoperandoperandoperand(MoveXwrRR, Arg0Reg, ReceiverResultReg, ReceiverResultReg);
+	/* begin RetN: */
+	genoperand(RetN, retNOffset);
+	jmpTarget(jumpBounds, gAddCqR((((1 << 1) | 1)) - (smallIntegerTag()), Arg0Reg));
+	jmpTarget(jumpBadIndex, gLabel());
+	return CompletePrimitive;
+}
+
+
 /*	c.f. StackInterpreter>>stSizeOf: lengthOf:baseHeader:format:
 	fixedFieldsOf:format:length: 
  */
@@ -19470,6 +19472,130 @@
 	return 0;
 }
 
+
+/*	Implement the guts of primitiveStringAt; dispatch on size */
+
+	/* CogObjectRepresentationForSpur>>#genInnerPrimitiveStringAt: */
+static sqInt NoDbgRegParms
+genInnerPrimitiveStringAt(sqInt retNoffset)
+{
+    AbstractInstruction *done;
+    sqInt formatReg;
+    AbstractInstruction *jumpBadIndex;
+    AbstractInstruction *jumpBytesOutOfBounds;
+    AbstractInstruction *jumpIsBytes;
+    AbstractInstruction *jumpIsShorts;
+    AbstractInstruction *jumpIsWords;
+    AbstractInstruction *jumpNotIndexable;
+    AbstractInstruction *jumpNotInt;
+    AbstractInstruction *jumpShortsOutOfBounds;
+    AbstractInstruction *jumpWordsOutOfBounds;
+    AbstractInstruction *jumpWordTooBig;
+    sqInt operandOne;
+    sqInt quickConstant;
+    sqInt quickConstant1;
+    sqInt quickConstant2;
+    sqInt quickConstant3;
+
+
+	/* c.f. StackInterpreter>>stSizeOf: SpurMemoryManager>>lengthOf:format: fixedFieldsOf:format:length: */
+
+	/* begin MoveR:R: */
+	genoperandoperand(MoveRR, Arg0Reg, Arg1Reg);
+	/* begin genJumpNotSmallInteger:scratch: */
+	jumpNotInt = genJumpNotSmallInteger(Arg0Reg);
+	if ((((sqInt)jumpNotInt)) == UnimplementedOperation) {
+		/* begin MoveR:R: */
+		genoperandoperand(MoveRR, Arg0Reg, TempReg);
+		jumpNotInt = genJumpNotSmallIntegerInScratchReg(TempReg);
+	}
+	jumpBadIndex = jumpNotInt;
+	genConvertSmallIntegerToIntegerInReg(Arg1Reg);
+	/* begin SubCq:R: */
+	/* begin gen:quickConstant:operand: */
+	checkQuickConstantforInstruction(1, genoperandoperand(SubCqR, 1, Arg1Reg));
+	genGetFormatOfintoleastSignificantHalfOfBaseHeaderIntoScratch(ReceiverResultReg, (formatReg = SendNumArgsReg), null);
+	genGetNumSlotsOfinto(ReceiverResultReg, ClassReg);
+	/* begin CmpCq:R: */
+	quickConstant = firstByteFormat();
+	/* begin gen:quickConstant:operand: */
+	checkQuickConstantforInstruction(quickConstant, genoperandoperand(CmpCqR, quickConstant, formatReg));
+	/* begin JumpGreaterOrEqual: */
+	jumpIsBytes = genConditionalBranchoperand(JumpGreaterOrEqual, ((sqInt)0));
+	/* begin CmpCq:R: */
+	quickConstant1 = firstShortFormat();
+	/* begin gen:quickConstant:operand: */
+	checkQuickConstantforInstruction(quickConstant1, genoperandoperand(CmpCqR, quickConstant1, formatReg));
+	/* begin JumpGreaterOrEqual: */
+	jumpIsShorts = genConditionalBranchoperand(JumpGreaterOrEqual, ((sqInt)0));
+	/* begin CmpCq:R: */
+	quickConstant2 = firstLongFormat();
+	/* begin gen:quickConstant:operand: */
+	checkQuickConstantforInstruction(quickConstant2, genoperandoperand(CmpCqR, quickConstant2, formatReg));
+	/* begin JumpGreaterOrEqual: */
+	jumpIsWords = genConditionalBranchoperand(JumpGreaterOrEqual, ((sqInt)0));
+	/* begin Jump: */
+	jumpNotIndexable = genoperand(Jump, ((sqInt)0));
+	jmpTarget(jumpIsBytes, gLogicalShiftLeftCqR(shiftForWord(), ClassReg));
+	/* begin AndCq:R: */
+	/* begin gen:quickConstant:operand: */
+	checkQuickConstantforInstruction(BytesPerWord - 1, genoperandoperand(AndCqR, BytesPerWord - 1, formatReg));
+	/* begin SubR:R: */
+	genoperandoperand(SubRR, formatReg, ClassReg);
+	/* begin CmpR:R: */
+	genoperandoperand(CmpRR, Arg1Reg, ClassReg);
+	/* begin JumpBelowOrEqual: */
+	jumpBytesOutOfBounds = genConditionalBranchoperand(JumpBelowOrEqual, ((sqInt)0));
+	/* begin AddCq:R: */
+	/* begin gen:quickConstant:operand: */
+	checkQuickConstantforInstruction(BaseHeaderSize, genoperandoperand(AddCqR, BaseHeaderSize, Arg1Reg));
+	/* begin MoveXbr:R:R: */
+	genoperandoperandoperand(MoveXbrRR, Arg1Reg, ReceiverResultReg, ReceiverResultReg);
+	
+	/* begin Label */
+	done = genoperandoperand(Label, (labelCounter += 1), bytecodePC);
+	genConvertIntegerToCharacterInReg(ReceiverResultReg);
+	/* begin RetN: */
+	genoperand(RetN, retNoffset);
+	jmpTarget(jumpIsShorts, gLogicalShiftLeftCqR((shiftForWord()) - 1, ClassReg));
+	/* begin AndCq:R: */
+	/* begin gen:quickConstant:operand: */
+	checkQuickConstantforInstruction(1, genoperandoperand(AndCqR, 1, formatReg));
+	/* begin SubR:R: */
+	genoperandoperand(SubRR, formatReg, ClassReg);
+	/* begin CmpR:R: */
+	genoperandoperand(CmpRR, Arg1Reg, ClassReg);
+	/* begin JumpBelowOrEqual: */
+	jumpShortsOutOfBounds = genConditionalBranchoperand(JumpBelowOrEqual, ((sqInt)0));
+	/* begin AddR:R: */
+	genoperandoperand(AddRR, Arg1Reg, ReceiverResultReg);
+	/* begin MoveM16:r:R: */
+	/* begin gen:quickConstant:operand:operand: */
+	checkQuickConstantforInstruction(BaseHeaderSize, genoperandoperandoperand(MoveM16rR, BaseHeaderSize, ReceiverResultReg, ReceiverResultReg));
+	/* begin Jump: */
+	genoperand(Jump, ((sqInt)done));
+	jmpTarget(jumpIsWords, gCmpRR(Arg1Reg, ClassReg));
+	/* begin JumpBelowOrEqual: */
+	jumpWordsOutOfBounds = genConditionalBranchoperand(JumpBelowOrEqual, ((sqInt)0));
+	/* begin AddCq:R: */
+	/* begin gen:quickConstant:operand: */
+	operandOne = ((usqInt) BaseHeaderSize) >> (shiftForWord());
+	checkQuickConstantforInstruction(operandOne, genoperandoperand(AddCqR, operandOne, Arg1Reg));
+	/* begin MoveXwr:R:R: */
+	genoperandoperandoperand(MoveXwrRR, Arg1Reg, ReceiverResultReg, TempReg);
+	/* begin SubCq:R: */
+	quickConstant3 = ((usqInt) BaseHeaderSize) >> (shiftForWord());
+	/* begin gen:quickConstant:operand: */
+	checkQuickConstantforInstruction(quickConstant3, genoperandoperand(SubCqR, quickConstant3, Arg1Reg));
+	jumpWordTooBig = jumpNotCharacterUnsignedValueInRegister(TempReg);
+	/* begin MoveR:R: */

@@ Diff output truncated at 50000 characters. @@


More information about the Vm-dev mailing list