[Vm-dev] [commit][3121] CogVM source as per VMMaker.oscog-eem.918

commits at squeakvm.org commits at squeakvm.org
Mon Nov 3 02:55:12 UTC 2014


Revision: 3121
Author:   eliot
Date:     2014-11-02 18:55:09 -0800 (Sun, 02 Nov 2014)
Log Message:
-----------
CogVM source as per VMMaker.oscog-eem.918

Fix bad bug in callPrimitiveBytecode.  Old code skipped past next bytecode.
This broke code depending on ContextPart>>restart, such as Exception>>retry.

And include wchar.h in the interpreter for wint_t (Spur immediate character
printing), since stddef doesn't always define it (on linux of course; elsewhere
it seems to be present).

Modified Paths:
--------------
    branches/Cog/nscogsrc/vm/cointerp.c
    branches/Cog/nscogsrc/vm/cointerp.h
    branches/Cog/nscogsrc/vm/gcc3x-cointerp.c
    branches/Cog/nsspursrc/vm/cointerp.c
    branches/Cog/nsspursrc/vm/cointerp.h
    branches/Cog/nsspursrc/vm/gcc3x-cointerp.c
    branches/Cog/nsspurstacksrc/vm/gcc3x-interp.c
    branches/Cog/nsspurstacksrc/vm/interp.c
    branches/Cog/sistasrc/vm/cointerp.c
    branches/Cog/sistasrc/vm/cointerp.h
    branches/Cog/sistasrc/vm/gcc3x-cointerp.c
    branches/Cog/spursistasrc/vm/cointerp.c
    branches/Cog/spursistasrc/vm/cointerp.h
    branches/Cog/spursistasrc/vm/gcc3x-cointerp.c
    branches/Cog/spursrc/vm/cointerp.c
    branches/Cog/spursrc/vm/cointerp.h
    branches/Cog/spursrc/vm/gcc3x-cointerp.c
    branches/Cog/spurstacksrc/vm/gcc3x-interp.c
    branches/Cog/spurstacksrc/vm/interp.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/nscogsrc/vm/cointerp.c
===================================================================
--- branches/Cog/nscogsrc/vm/cointerp.c	2014-10-31 19:13:28 UTC (rev 3120)
+++ branches/Cog/nscogsrc/vm/cointerp.c	2014-11-03 02:55:09 UTC (rev 3121)
@@ -1,9 +1,9 @@
 /* Automatically generated by
-	CCodeGeneratorGlobalStructure VMMaker.oscog-eem.916 uuid: 79925bdf-769f-446f-8532-f04f0e2f11ae
+	CCodeGeneratorGlobalStructure VMMaker.oscog-eem.918 uuid: 17402dc7-cd8d-4656-8ec9-a74c22c85ac8
    from
-	CoInterpreter VMMaker.oscog-eem.916 uuid: 79925bdf-769f-446f-8532-f04f0e2f11ae
+	CoInterpreter VMMaker.oscog-eem.918 uuid: 17402dc7-cd8d-4656-8ec9-a74c22c85ac8
  */
-static char __buildInfo[] = "CoInterpreter VMMaker.oscog-eem.916 uuid: 79925bdf-769f-446f-8532-f04f0e2f11ae " __DATE__ ;
+static char __buildInfo[] = "CoInterpreter VMMaker.oscog-eem.918 uuid: 17402dc7-cd8d-4656-8ec9-a74c22c85ac8 " __DATE__ ;
 char *__interpBuildInfo = __buildInfo;
 
 
@@ -21,6 +21,7 @@
 
 #include <stddef.h> /* for e.g. alloca */
 #include <setjmp.h>
+#include <wchar.h> /* for wint_t */
 #include "sq.h"
 #include "vmCallback.h"
 #include "sqMemoryFence.h"
@@ -852,7 +853,7 @@
 void printWronglySizedContexts(sqInt printContexts);
 static void restoreHeadersFromtofromandtofrom(sqInt firstIn, sqInt lastIn, sqInt hdrBaseIn, sqInt firstOut, sqInt lastOut, sqInt hdrBaseOut) NoDbgRegParms;
 static void runLeakCheckerForFullGC(sqInt fullGCFlag) NoDbgRegParms;
-static sqInt safeObjectAfter(sqInt oop) NoDbgRegParms;
+static usqInt safeObjectAfter(sqInt oop) NoDbgRegParms;
 static sqInt safePrintStringOf(sqInt oop) NoDbgRegParms;
 static sqInt shortentoIndexableSize(sqInt obj, sqInt nSlots) NoDbgRegParms;
 static sqInt sizeBitsOfSafe(sqInt oop) NoDbgRegParms;
@@ -2087,7 +2088,7 @@
 	/* 574 */ (void (*)(void))0,
 	/* 575 */ (void (*)(void))0,
  0 };
-const char *interpreterVersion = "Newspeak Virtual Machine CoInterpreterPrimitives_VMMaker.oscog-eem.916";
+const char *interpreterVersion = "Newspeak Virtual Machine CoInterpreterPrimitives_VMMaker.oscog-eem.918";
 sqInt minBackwardJumpCountForCompile = MinBackwardJumpCountForCompile /* 40 */;
 volatile int sendTrace;
 
@@ -12958,9 +12959,9 @@
 					? header & (65536 << SmallIntegerShift)
 					: (header & 536871934) != 0))
 				 && ((((sqInt)localIP)) == ((GIV(method) + ((LiteralStart + (literalCountOfMethodHeader(header))) * BytesPerOop)) + BaseHeaderSize))) {
-					localIP += ((((sqInt) header)) < 0
-						? 3
-						: 0);
+					localIP = (localIP + (((((sqInt) header)) < 0
+	? 3
+	: 0))) - 1;
 					/* begin fetchNextBytecode */
 					currentBytecode = (byteAtPointer(++localIP)) + GIV(bytecodeSetSelector);
 
@@ -36627,17 +36628,15 @@
     sqInt header1;
     sqInt header2;
     sqInt header3;
-    sqInt header4;
     usqInt lastWord;
     sqInt newFreeChunk;
     sqInt newOop;
-    sqInt next;
+    usqInt next;
     sqInt oop;
     sqInt realHeader;
     sqInt sz;
     sqInt sz1;
     sqInt sz2;
-    sqInt sz3;
     sqInt target;
     usqInt w;
 
@@ -36648,21 +36647,7 @@
 		/* begin objectAfterWhileForwarding: */
 		header2 = longAt(oop);
 		if ((header2 & MarkBit) == 0) {
-			/* begin objectAfter: */
-			if (!(asserta(oopisLessThan(oop, GIV(freeStart))))) {
-				error("no objects after the end of memory");
-			}
-			if (((longAt(oop)) & TypeMask) == HeaderTypeFree) {
-				sz2 = (longAt(oop)) & AllButTypeMask;
-			}
-			else {
-				/* begin sizeBitsOf: */
-				header3 = longAt(oop);
-				sz2 = ((header3 & TypeMask) == HeaderTypeSizeAndClass
-					? (longAt(oop - (BytesPerWord * 2))) & LongSizeMask
-					: header3 & SizeMask);
-			}
-			next = (oop + sz2) + (headerTypeBytes[(longAt(oop + sz2)) & TypeMask]);
+			next = ((sqInt) (objectAfter(oop)));
 			goto l1;
 		}
 		fwdBlock1 = (header2 & AllButMarkBitAndTypeMask) << 1;
@@ -36677,7 +36662,7 @@
 		else {
 			sz1 = realHeader & SizeMask;
 		}
-		next = (oop + sz1) + (headerTypeBytes[(longAt(oop + sz1)) & TypeMask]);
+		next = ((sqInt) ((oop + sz1) + (headerTypeBytes[(longAt(oop + sz1)) & TypeMask])));
 	l1:	/* end objectAfterWhileForwarding: */;
 		if (!(((longAt(oop)) & TypeMask) == HeaderTypeFree)) {
 
@@ -36731,18 +36716,18 @@
 	}
 	/* begin safeObjectAfter: */
 	if (((longAt(newFreeChunk)) & TypeMask) == HeaderTypeFree) {
-		sz3 = (longAt(newFreeChunk)) & AllButTypeMask;
+		sz2 = (longAt(newFreeChunk)) & AllButTypeMask;
 	}
 	else {
 		/* begin sizeBitsOf: */
-		header4 = longAt(newFreeChunk);
-		sz3 = ((header4 & TypeMask) == HeaderTypeSizeAndClass
+		header3 = longAt(newFreeChunk);
+		sz2 = ((header3 & TypeMask) == HeaderTypeSizeAndClass
 			? (longAt(newFreeChunk - (BytesPerWord * 2))) & LongSizeMask
-			: header4 & SizeMask);
+			: header3 & SizeMask);
 	}
-	next = ((((usqInt)(newFreeChunk + sz3))) >= GIV(freeStart)
+	next = ((((usqInt)(newFreeChunk + sz2))) >= GIV(freeStart)
 		? GIV(freeStart)
-		: (newFreeChunk + sz3) + (headerTypeBytes[(longAt(newFreeChunk + sz3)) & TypeMask]));
+		: (newFreeChunk + sz2) + (headerTypeBytes[(longAt(newFreeChunk + sz2)) & TypeMask]));
 	assert((next == GIV(freeStart))
 	 || (next == (oopFromChunk(GIV(compEnd)))));
 	if (next == GIV(freeStart)) {
@@ -38618,7 +38603,7 @@
 	given object or free chunk in memory. Return freeStart when
 	enumeration is complete. This is for assertion checking only. */
 
-static sqInt
+static usqInt
 safeObjectAfter(sqInt oop)
 {   DECL_MAYBE_SQ_GLOBAL_STRUCT
     sqInt header;

Modified: branches/Cog/nscogsrc/vm/cointerp.h
===================================================================
--- branches/Cog/nscogsrc/vm/cointerp.h	2014-10-31 19:13:28 UTC (rev 3120)
+++ branches/Cog/nscogsrc/vm/cointerp.h	2014-11-03 02:55:09 UTC (rev 3121)
@@ -1,5 +1,5 @@
 /* Automatically generated by
-	CCodeGeneratorGlobalStructure VMMaker.oscog-eem.916 uuid: 79925bdf-769f-446f-8532-f04f0e2f11ae
+	CCodeGeneratorGlobalStructure VMMaker.oscog-eem.918 uuid: 17402dc7-cd8d-4656-8ec9-a74c22c85ac8
  */
 
 

Modified: branches/Cog/nscogsrc/vm/gcc3x-cointerp.c
===================================================================
--- branches/Cog/nscogsrc/vm/gcc3x-cointerp.c	2014-10-31 19:13:28 UTC (rev 3120)
+++ branches/Cog/nscogsrc/vm/gcc3x-cointerp.c	2014-11-03 02:55:09 UTC (rev 3121)
@@ -2,11 +2,11 @@
 
 
 /* Automatically generated by
-	CCodeGeneratorGlobalStructure VMMaker.oscog-eem.916 uuid: 79925bdf-769f-446f-8532-f04f0e2f11ae
+	CCodeGeneratorGlobalStructure VMMaker.oscog-eem.918 uuid: 17402dc7-cd8d-4656-8ec9-a74c22c85ac8
    from
-	CoInterpreter VMMaker.oscog-eem.916 uuid: 79925bdf-769f-446f-8532-f04f0e2f11ae
+	CoInterpreter VMMaker.oscog-eem.918 uuid: 17402dc7-cd8d-4656-8ec9-a74c22c85ac8
  */
-static char __buildInfo[] = "CoInterpreter VMMaker.oscog-eem.916 uuid: 79925bdf-769f-446f-8532-f04f0e2f11ae " __DATE__ ;
+static char __buildInfo[] = "CoInterpreter VMMaker.oscog-eem.918 uuid: 17402dc7-cd8d-4656-8ec9-a74c22c85ac8 " __DATE__ ;
 char *__interpBuildInfo = __buildInfo;
 
 
@@ -24,6 +24,7 @@
 
 #include <stddef.h> /* for e.g. alloca */
 #include <setjmp.h>
+#include <wchar.h> /* for wint_t */
 #include "sqGnu.h"
 #include "vmCallback.h"
 #include "sqMemoryFence.h"
@@ -855,7 +856,7 @@
 void printWronglySizedContexts(sqInt printContexts);
 static void restoreHeadersFromtofromandtofrom(sqInt firstIn, sqInt lastIn, sqInt hdrBaseIn, sqInt firstOut, sqInt lastOut, sqInt hdrBaseOut) NoDbgRegParms;
 static void runLeakCheckerForFullGC(sqInt fullGCFlag) NoDbgRegParms;
-static sqInt safeObjectAfter(sqInt oop) NoDbgRegParms;
+static usqInt safeObjectAfter(sqInt oop) NoDbgRegParms;
 static sqInt safePrintStringOf(sqInt oop) NoDbgRegParms;
 static sqInt shortentoIndexableSize(sqInt obj, sqInt nSlots) NoDbgRegParms;
 static sqInt sizeBitsOfSafe(sqInt oop) NoDbgRegParms;
@@ -2090,7 +2091,7 @@
 	/* 574 */ (void (*)(void))0,
 	/* 575 */ (void (*)(void))0,
  0 };
-const char *interpreterVersion = "Newspeak Virtual Machine CoInterpreterPrimitives_VMMaker.oscog-eem.916";
+const char *interpreterVersion = "Newspeak Virtual Machine CoInterpreterPrimitives_VMMaker.oscog-eem.918";
 sqInt minBackwardJumpCountForCompile = MinBackwardJumpCountForCompile /* 40 */;
 volatile int sendTrace;
 
@@ -12967,9 +12968,9 @@
 					? header & (65536 << SmallIntegerShift)
 					: (header & 536871934) != 0))
 				 && ((((sqInt)localIP)) == ((GIV(method) + ((LiteralStart + (literalCountOfMethodHeader(header))) * BytesPerOop)) + BaseHeaderSize))) {
-					localIP += ((((sqInt) header)) < 0
-						? 3
-						: 0);
+					localIP = (localIP + (((((sqInt) header)) < 0
+	? 3
+	: 0))) - 1;
 					/* begin fetchNextBytecode */
 					currentBytecode = (byteAtPointer(++localIP)) + GIV(bytecodeSetSelector);
 
@@ -36636,17 +36637,15 @@
     sqInt header1;
     sqInt header2;
     sqInt header3;
-    sqInt header4;
     usqInt lastWord;
     sqInt newFreeChunk;
     sqInt newOop;
-    sqInt next;
+    usqInt next;
     sqInt oop;
     sqInt realHeader;
     sqInt sz;
     sqInt sz1;
     sqInt sz2;
-    sqInt sz3;
     sqInt target;
     usqInt w;
 
@@ -36657,21 +36656,7 @@
 		/* begin objectAfterWhileForwarding: */
 		header2 = longAt(oop);
 		if ((header2 & MarkBit) == 0) {
-			/* begin objectAfter: */
-			if (!(asserta(oopisLessThan(oop, GIV(freeStart))))) {
-				error("no objects after the end of memory");
-			}
-			if (((longAt(oop)) & TypeMask) == HeaderTypeFree) {
-				sz2 = (longAt(oop)) & AllButTypeMask;
-			}
-			else {
-				/* begin sizeBitsOf: */
-				header3 = longAt(oop);
-				sz2 = ((header3 & TypeMask) == HeaderTypeSizeAndClass
-					? (longAt(oop - (BytesPerWord * 2))) & LongSizeMask
-					: header3 & SizeMask);
-			}
-			next = (oop + sz2) + (headerTypeBytes[(longAt(oop + sz2)) & TypeMask]);
+			next = ((sqInt) (objectAfter(oop)));
 			goto l1;
 		}
 		fwdBlock1 = (header2 & AllButMarkBitAndTypeMask) << 1;
@@ -36686,7 +36671,7 @@
 		else {
 			sz1 = realHeader & SizeMask;
 		}
-		next = (oop + sz1) + (headerTypeBytes[(longAt(oop + sz1)) & TypeMask]);
+		next = ((sqInt) ((oop + sz1) + (headerTypeBytes[(longAt(oop + sz1)) & TypeMask])));
 	l1:	/* end objectAfterWhileForwarding: */;
 		if (!(((longAt(oop)) & TypeMask) == HeaderTypeFree)) {
 
@@ -36740,18 +36725,18 @@
 	}
 	/* begin safeObjectAfter: */
 	if (((longAt(newFreeChunk)) & TypeMask) == HeaderTypeFree) {
-		sz3 = (longAt(newFreeChunk)) & AllButTypeMask;
+		sz2 = (longAt(newFreeChunk)) & AllButTypeMask;
 	}
 	else {
 		/* begin sizeBitsOf: */
-		header4 = longAt(newFreeChunk);
-		sz3 = ((header4 & TypeMask) == HeaderTypeSizeAndClass
+		header3 = longAt(newFreeChunk);
+		sz2 = ((header3 & TypeMask) == HeaderTypeSizeAndClass
 			? (longAt(newFreeChunk - (BytesPerWord * 2))) & LongSizeMask
-			: header4 & SizeMask);
+			: header3 & SizeMask);
 	}
-	next = ((((usqInt)(newFreeChunk + sz3))) >= GIV(freeStart)
+	next = ((((usqInt)(newFreeChunk + sz2))) >= GIV(freeStart)
 		? GIV(freeStart)
-		: (newFreeChunk + sz3) + (headerTypeBytes[(longAt(newFreeChunk + sz3)) & TypeMask]));
+		: (newFreeChunk + sz2) + (headerTypeBytes[(longAt(newFreeChunk + sz2)) & TypeMask]));
 	assert((next == GIV(freeStart))
 	 || (next == (oopFromChunk(GIV(compEnd)))));
 	if (next == GIV(freeStart)) {
@@ -38627,7 +38612,7 @@
 	given object or free chunk in memory. Return freeStart when
 	enumeration is complete. This is for assertion checking only. */
 
-static sqInt
+static usqInt
 safeObjectAfter(sqInt oop)
 {   DECL_MAYBE_SQ_GLOBAL_STRUCT
     sqInt header;

Modified: branches/Cog/nsspursrc/vm/cointerp.c
===================================================================
--- branches/Cog/nsspursrc/vm/cointerp.c	2014-10-31 19:13:28 UTC (rev 3120)
+++ branches/Cog/nsspursrc/vm/cointerp.c	2014-11-03 02:55:09 UTC (rev 3121)
@@ -1,9 +1,9 @@
 /* Automatically generated by
-	CCodeGeneratorGlobalStructure VMMaker.oscog-eem.916 uuid: 79925bdf-769f-446f-8532-f04f0e2f11ae
+	CCodeGeneratorGlobalStructure VMMaker.oscog-eem.918 uuid: 17402dc7-cd8d-4656-8ec9-a74c22c85ac8
    from
-	CoInterpreter VMMaker.oscog-eem.916 uuid: 79925bdf-769f-446f-8532-f04f0e2f11ae
+	CoInterpreter VMMaker.oscog-eem.918 uuid: 17402dc7-cd8d-4656-8ec9-a74c22c85ac8
  */
-static char __buildInfo[] = "CoInterpreter VMMaker.oscog-eem.916 uuid: 79925bdf-769f-446f-8532-f04f0e2f11ae " __DATE__ ;
+static char __buildInfo[] = "CoInterpreter VMMaker.oscog-eem.918 uuid: 17402dc7-cd8d-4656-8ec9-a74c22c85ac8 " __DATE__ ;
 char *__interpBuildInfo = __buildInfo;
 
 
@@ -21,6 +21,7 @@
 
 #include <stddef.h> /* for e.g. alloca */
 #include <setjmp.h>
+#include <wchar.h> /* for wint_t */
 #include "sq.h"
 #include "vmCallback.h"
 #include "sqMemoryFence.h"
@@ -2337,7 +2338,7 @@
 /*540*/	-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,
 /*560*/	-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1, 0, 0, 0,-1,-1
 	};
-const char *interpreterVersion = "Newspeak Virtual Machine CoInterpreterPrimitives_VMMaker.oscog-eem.916";
+const char *interpreterVersion = "Newspeak Virtual Machine CoInterpreterPrimitives_VMMaker.oscog-eem.918";
 sqInt minBackwardJumpCountForCompile = MinBackwardJumpCountForCompile /* 40 */;
 volatile int sendTrace;
 
@@ -7018,7 +7019,7 @@
 						((((CogMethod *) header2))->methodHeader)));
 				if ((header & (65536 << SmallIntegerShift))
 				 && ((((sqInt)localIP)) == ((GIV(method) + ((LiteralStart + (literalCountOfMethodHeader(header))) * BytesPerOop)) + BaseHeaderSize))) {
-					localIP += 3;
+					localIP = (localIP + (3)) - 1;
 					/* begin fetchNextBytecode */
 					currentBytecode = (byteAtPointer(++localIP)) + GIV(bytecodeSetSelector);
 
@@ -14755,7 +14756,7 @@
 						((((CogMethod *) header2))->methodHeader)));
 				if ((header & (65536 << SmallIntegerShift))
 				 && ((((sqInt)localIP)) == ((GIV(method) + ((LiteralStart + (literalCountOfMethodHeader(header))) * BytesPerOop)) + BaseHeaderSize))) {
-					localIP += 3;
+					localIP = (localIP + (3)) - 1;
 					/* begin fetchNextBytecode */
 					currentBytecode = (byteAtPointer(++localIP)) + GIV(bytecodeSetSelector);
 

Modified: branches/Cog/nsspursrc/vm/cointerp.h
===================================================================
--- branches/Cog/nsspursrc/vm/cointerp.h	2014-10-31 19:13:28 UTC (rev 3120)
+++ branches/Cog/nsspursrc/vm/cointerp.h	2014-11-03 02:55:09 UTC (rev 3121)
@@ -1,5 +1,5 @@
 /* Automatically generated by
-	CCodeGeneratorGlobalStructure VMMaker.oscog-eem.916 uuid: 79925bdf-769f-446f-8532-f04f0e2f11ae
+	CCodeGeneratorGlobalStructure VMMaker.oscog-eem.918 uuid: 17402dc7-cd8d-4656-8ec9-a74c22c85ac8
  */
 
 

Modified: branches/Cog/nsspursrc/vm/gcc3x-cointerp.c
===================================================================
--- branches/Cog/nsspursrc/vm/gcc3x-cointerp.c	2014-10-31 19:13:28 UTC (rev 3120)
+++ branches/Cog/nsspursrc/vm/gcc3x-cointerp.c	2014-11-03 02:55:09 UTC (rev 3121)
@@ -2,11 +2,11 @@
 
 
 /* Automatically generated by
-	CCodeGeneratorGlobalStructure VMMaker.oscog-eem.916 uuid: 79925bdf-769f-446f-8532-f04f0e2f11ae
+	CCodeGeneratorGlobalStructure VMMaker.oscog-eem.918 uuid: 17402dc7-cd8d-4656-8ec9-a74c22c85ac8
    from
-	CoInterpreter VMMaker.oscog-eem.916 uuid: 79925bdf-769f-446f-8532-f04f0e2f11ae
+	CoInterpreter VMMaker.oscog-eem.918 uuid: 17402dc7-cd8d-4656-8ec9-a74c22c85ac8
  */
-static char __buildInfo[] = "CoInterpreter VMMaker.oscog-eem.916 uuid: 79925bdf-769f-446f-8532-f04f0e2f11ae " __DATE__ ;
+static char __buildInfo[] = "CoInterpreter VMMaker.oscog-eem.918 uuid: 17402dc7-cd8d-4656-8ec9-a74c22c85ac8 " __DATE__ ;
 char *__interpBuildInfo = __buildInfo;
 
 
@@ -24,6 +24,7 @@
 
 #include <stddef.h> /* for e.g. alloca */
 #include <setjmp.h>
+#include <wchar.h> /* for wint_t */
 #include "sqGnu.h"
 #include "vmCallback.h"
 #include "sqMemoryFence.h"
@@ -2340,7 +2341,7 @@
 /*540*/	-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,
 /*560*/	-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1, 0, 0, 0,-1,-1
 	};
-const char *interpreterVersion = "Newspeak Virtual Machine CoInterpreterPrimitives_VMMaker.oscog-eem.916";
+const char *interpreterVersion = "Newspeak Virtual Machine CoInterpreterPrimitives_VMMaker.oscog-eem.918";
 sqInt minBackwardJumpCountForCompile = MinBackwardJumpCountForCompile /* 40 */;
 volatile int sendTrace;
 
@@ -7027,7 +7028,7 @@
 						((((CogMethod *) header2))->methodHeader)));
 				if ((header & (65536 << SmallIntegerShift))
 				 && ((((sqInt)localIP)) == ((GIV(method) + ((LiteralStart + (literalCountOfMethodHeader(header))) * BytesPerOop)) + BaseHeaderSize))) {
-					localIP += 3;
+					localIP = (localIP + (3)) - 1;
 					/* begin fetchNextBytecode */
 					currentBytecode = (byteAtPointer(++localIP)) + GIV(bytecodeSetSelector);
 
@@ -14764,7 +14765,7 @@
 						((((CogMethod *) header2))->methodHeader)));
 				if ((header & (65536 << SmallIntegerShift))
 				 && ((((sqInt)localIP)) == ((GIV(method) + ((LiteralStart + (literalCountOfMethodHeader(header))) * BytesPerOop)) + BaseHeaderSize))) {
-					localIP += 3;
+					localIP = (localIP + (3)) - 1;
 					/* begin fetchNextBytecode */
 					currentBytecode = (byteAtPointer(++localIP)) + GIV(bytecodeSetSelector);
 

Modified: branches/Cog/nsspurstacksrc/vm/gcc3x-interp.c
===================================================================
--- branches/Cog/nsspurstacksrc/vm/gcc3x-interp.c	2014-10-31 19:13:28 UTC (rev 3120)
+++ branches/Cog/nsspurstacksrc/vm/gcc3x-interp.c	2014-11-03 02:55:09 UTC (rev 3121)
@@ -2,11 +2,11 @@
 
 
 /* Automatically generated by
-	CCodeGeneratorGlobalStructure VMMaker.oscog-eem.916 uuid: 79925bdf-769f-446f-8532-f04f0e2f11ae
+	CCodeGeneratorGlobalStructure VMMaker.oscog-eem.918 uuid: 17402dc7-cd8d-4656-8ec9-a74c22c85ac8
    from
-	StackInterpreter VMMaker.oscog-eem.916 uuid: 79925bdf-769f-446f-8532-f04f0e2f11ae
+	StackInterpreter VMMaker.oscog-eem.918 uuid: 17402dc7-cd8d-4656-8ec9-a74c22c85ac8
  */
-static char __buildInfo[] = "StackInterpreter VMMaker.oscog-eem.916 uuid: 79925bdf-769f-446f-8532-f04f0e2f11ae " __DATE__ ;
+static char __buildInfo[] = "StackInterpreter VMMaker.oscog-eem.918 uuid: 17402dc7-cd8d-4656-8ec9-a74c22c85ac8 " __DATE__ ;
 char *__interpBuildInfo = __buildInfo;
 
 
@@ -24,6 +24,7 @@
 
 #include <stddef.h> /* for e.g. alloca */
 #include <setjmp.h>
+#include <wchar.h> /* for wint_t */
 #include "sqGnu.h"
 #include "vmCallback.h"
 #include "sqMemoryFence.h"
@@ -2086,7 +2087,7 @@
  0 };
 char * breakSelector;
 sqInt breakSelectorLength = -1;
-const char *interpreterVersion = "Newspeak Virtual Machine StackInterpreterPrimitives_VMMaker.oscog-eem.916";
+const char *interpreterVersion = "Newspeak Virtual Machine StackInterpreterPrimitives_VMMaker.oscog-eem.918";
 volatile int sendTrace;
 sqInt suppressHeartbeatFlag;
 
@@ -6445,7 +6446,7 @@
 				header = longAt((GIV(method) + BaseHeaderSize) + (HeaderIndex << 2));
 				if ((header & (65536 << SmallIntegerShift))
 				 && ((((sqInt)localIP)) == ((GIV(method) + ((LiteralStart + (literalCountOfMethodHeader(header))) * BytesPerOop)) + BaseHeaderSize))) {
-					localIP += 3;
+					localIP = (localIP + (3)) - 1;
 					/* begin fetchNextBytecode */
 					currentBytecode = (byteAtPointer(++localIP)) + GIV(bytecodeSetSelector);
 
@@ -13992,7 +13993,7 @@
 				header = longAt((GIV(method) + BaseHeaderSize) + (HeaderIndex << 2));
 				if ((header & (65536 << SmallIntegerShift))
 				 && ((((sqInt)localIP)) == ((GIV(method) + ((LiteralStart + (literalCountOfMethodHeader(header))) * BytesPerOop)) + BaseHeaderSize))) {
-					localIP += 3;
+					localIP = (localIP + (3)) - 1;
 					/* begin fetchNextBytecode */
 					currentBytecode = (byteAtPointer(++localIP)) + GIV(bytecodeSetSelector);
 

Modified: branches/Cog/nsspurstacksrc/vm/interp.c
===================================================================
--- branches/Cog/nsspurstacksrc/vm/interp.c	2014-10-31 19:13:28 UTC (rev 3120)
+++ branches/Cog/nsspurstacksrc/vm/interp.c	2014-11-03 02:55:09 UTC (rev 3121)
@@ -1,9 +1,9 @@
 /* Automatically generated by
-	CCodeGeneratorGlobalStructure VMMaker.oscog-eem.916 uuid: 79925bdf-769f-446f-8532-f04f0e2f11ae
+	CCodeGeneratorGlobalStructure VMMaker.oscog-eem.918 uuid: 17402dc7-cd8d-4656-8ec9-a74c22c85ac8
    from
-	StackInterpreter VMMaker.oscog-eem.916 uuid: 79925bdf-769f-446f-8532-f04f0e2f11ae
+	StackInterpreter VMMaker.oscog-eem.918 uuid: 17402dc7-cd8d-4656-8ec9-a74c22c85ac8
  */
-static char __buildInfo[] = "StackInterpreter VMMaker.oscog-eem.916 uuid: 79925bdf-769f-446f-8532-f04f0e2f11ae " __DATE__ ;
+static char __buildInfo[] = "StackInterpreter VMMaker.oscog-eem.918 uuid: 17402dc7-cd8d-4656-8ec9-a74c22c85ac8 " __DATE__ ;
 char *__interpBuildInfo = __buildInfo;
 
 
@@ -21,6 +21,7 @@
 
 #include <stddef.h> /* for e.g. alloca */
 #include <setjmp.h>
+#include <wchar.h> /* for wint_t */
 #include "sq.h"
 #include "vmCallback.h"
 #include "sqMemoryFence.h"
@@ -2083,7 +2084,7 @@
  0 };
 char * breakSelector;
 sqInt breakSelectorLength = -1;
-const char *interpreterVersion = "Newspeak Virtual Machine StackInterpreterPrimitives_VMMaker.oscog-eem.916";
+const char *interpreterVersion = "Newspeak Virtual Machine StackInterpreterPrimitives_VMMaker.oscog-eem.918";
 volatile int sendTrace;
 sqInt suppressHeartbeatFlag;
 
@@ -6436,7 +6437,7 @@
 				header = longAt((GIV(method) + BaseHeaderSize) + (HeaderIndex << 2));
 				if ((header & (65536 << SmallIntegerShift))
 				 && ((((sqInt)localIP)) == ((GIV(method) + ((LiteralStart + (literalCountOfMethodHeader(header))) * BytesPerOop)) + BaseHeaderSize))) {
-					localIP += 3;
+					localIP = (localIP + (3)) - 1;
 					/* begin fetchNextBytecode */
 					currentBytecode = (byteAtPointer(++localIP)) + GIV(bytecodeSetSelector);
 
@@ -13983,7 +13984,7 @@
 				header = longAt((GIV(method) + BaseHeaderSize) + (HeaderIndex << 2));
 				if ((header & (65536 << SmallIntegerShift))
 				 && ((((sqInt)localIP)) == ((GIV(method) + ((LiteralStart + (literalCountOfMethodHeader(header))) * BytesPerOop)) + BaseHeaderSize))) {
-					localIP += 3;
+					localIP = (localIP + (3)) - 1;
 					/* begin fetchNextBytecode */
 					currentBytecode = (byteAtPointer(++localIP)) + GIV(bytecodeSetSelector);
 


Property changes on: branches/Cog/platforms/Cross/vm/sqSCCSVersion.h
___________________________________________________________________
Modified: checkindate
   - Fri Oct 31 12:12:06 PDT 2014
   + Sun Nov  2 18:53:51 PST 2014

Modified: branches/Cog/sistasrc/vm/cointerp.c
===================================================================
--- branches/Cog/sistasrc/vm/cointerp.c	2014-10-31 19:13:28 UTC (rev 3120)
+++ branches/Cog/sistasrc/vm/cointerp.c	2014-11-03 02:55:09 UTC (rev 3121)
@@ -1,9 +1,9 @@
 /* Automatically generated by
-	CCodeGeneratorGlobalStructure VMMaker.oscog-eem.916 uuid: 79925bdf-769f-446f-8532-f04f0e2f11ae
+	CCodeGeneratorGlobalStructure VMMaker.oscog-eem.918 uuid: 17402dc7-cd8d-4656-8ec9-a74c22c85ac8
    from
-	CoInterpreter VMMaker.oscog-eem.916 uuid: 79925bdf-769f-446f-8532-f04f0e2f11ae
+	CoInterpreter VMMaker.oscog-eem.918 uuid: 17402dc7-cd8d-4656-8ec9-a74c22c85ac8
  */
-static char __buildInfo[] = "CoInterpreter VMMaker.oscog-eem.916 uuid: 79925bdf-769f-446f-8532-f04f0e2f11ae " __DATE__ ;
+static char __buildInfo[] = "CoInterpreter VMMaker.oscog-eem.918 uuid: 17402dc7-cd8d-4656-8ec9-a74c22c85ac8 " __DATE__ ;
 char *__interpBuildInfo = __buildInfo;
 
 
@@ -21,6 +21,7 @@
 
 #include <stddef.h> /* for e.g. alloca */
 #include <setjmp.h>
+#include <wchar.h> /* for wint_t */
 #include "sq.h"
 #include "vmCallback.h"
 #include "sqMemoryFence.h"
@@ -851,7 +852,7 @@
 void printWronglySizedContexts(sqInt printContexts);
 static void restoreHeadersFromtofromandtofrom(sqInt firstIn, sqInt lastIn, sqInt hdrBaseIn, sqInt firstOut, sqInt lastOut, sqInt hdrBaseOut) NoDbgRegParms;
 static void runLeakCheckerForFullGC(sqInt fullGCFlag) NoDbgRegParms;
-static usqInt safeObjectAfter(sqInt oop) NoDbgRegParms;
+static sqInt safeObjectAfter(sqInt oop) NoDbgRegParms;
 static sqInt safePrintStringOf(sqInt oop) NoDbgRegParms;
 static sqInt shortentoIndexableSize(sqInt obj, sqInt nSlots) NoDbgRegParms;
 static sqInt sizeBitsOfSafe(sqInt oop) NoDbgRegParms;
@@ -2083,7 +2084,7 @@
 	/* 574 */ (void (*)(void))0,
 	/* 575 */ (void (*)(void))0,
  0 };
-const char *interpreterVersion = "Croquet Closure Cog VM [CoInterpreterPrimitives VMMaker.oscog-eem.916]";
+const char *interpreterVersion = "Croquet Closure Cog VM [CoInterpreterPrimitives VMMaker.oscog-eem.918]";
 sqInt minBackwardJumpCountForCompile = MinBackwardJumpCountForCompile /* 40 */;
 volatile int sendTrace;
 
@@ -4884,6 +4885,7 @@
 							GIV(framePointer) = localFP;
 							
 							ceEnterCogCodePopReceiverReg();
+							null;
 							goto l301;
 						}
 						localIP = pointerForOop(longAt(localFP + FoxIFSavedIP));
@@ -4901,7 +4903,7 @@
 					/* begin fetchNextBytecode */
 					currentBytecode = (byteAtPointer(++localIP)) + GIV(bytecodeSetSelector);
 
-					/* return self */
+					null;
 				l301:	/* end baseFrameReturn */;
 					goto l300;
 				}
@@ -36706,15 +36708,17 @@
     sqInt header1;
     sqInt header2;
     sqInt header3;
+    sqInt header4;
     usqInt lastWord;
     sqInt newFreeChunk;
     sqInt newOop;
-    usqInt next;
+    sqInt next;
     sqInt oop;
     sqInt realHeader;
     sqInt sz;
     sqInt sz1;
     sqInt sz2;
+    sqInt sz3;
     sqInt target;
     usqInt w;
 
@@ -36725,7 +36729,21 @@
 		/* begin objectAfterWhileForwarding: */
 		header2 = longAt(oop);
 		if ((header2 & MarkBit) == 0) {
-			next = ((sqInt) (objectAfter(oop)));
+			/* begin objectAfter: */
+			if (!(asserta(oopisLessThan(oop, GIV(freeStart))))) {
+				error("no objects after the end of memory");
+			}
+			if (((longAt(oop)) & TypeMask) == HeaderTypeFree) {
+				sz2 = (longAt(oop)) & AllButTypeMask;
+			}
+			else {
+				/* begin sizeBitsOf: */
+				header3 = longAt(oop);
+				sz2 = ((header3 & TypeMask) == HeaderTypeSizeAndClass
+					? (longAt(oop - (BytesPerWord * 2))) & LongSizeMask
+					: header3 & SizeMask);
+			}
+			next = (oop + sz2) + (headerTypeBytes[(longAt(oop + sz2)) & TypeMask]);
 			goto l1;
 		}
 		fwdBlock1 = (header2 & AllButMarkBitAndTypeMask) << 1;
@@ -36740,7 +36758,7 @@
 		else {
 			sz1 = realHeader & SizeMask;
 		}
-		next = ((sqInt) ((oop + sz1) + (headerTypeBytes[(longAt(oop + sz1)) & TypeMask])));
+		next = (oop + sz1) + (headerTypeBytes[(longAt(oop + sz1)) & TypeMask]);
 	l1:	/* end objectAfterWhileForwarding: */;
 		if (!(((longAt(oop)) & TypeMask) == HeaderTypeFree)) {
 
@@ -36794,18 +36812,18 @@
 	}
 	/* begin safeObjectAfter: */
 	if (((longAt(newFreeChunk)) & TypeMask) == HeaderTypeFree) {
-		sz2 = (longAt(newFreeChunk)) & AllButTypeMask;
+		sz3 = (longAt(newFreeChunk)) & AllButTypeMask;
 	}
 	else {
 		/* begin sizeBitsOf: */
-		header3 = longAt(newFreeChunk);
-		sz2 = ((header3 & TypeMask) == HeaderTypeSizeAndClass
+		header4 = longAt(newFreeChunk);
+		sz3 = ((header4 & TypeMask) == HeaderTypeSizeAndClass
 			? (longAt(newFreeChunk - (BytesPerWord * 2))) & LongSizeMask
-			: header3 & SizeMask);
+			: header4 & SizeMask);
 	}
-	next = ((((usqInt)(newFreeChunk + sz2))) >= GIV(freeStart)
+	next = ((((usqInt)(newFreeChunk + sz3))) >= GIV(freeStart)
 		? GIV(freeStart)
-		: (newFreeChunk + sz2) + (headerTypeBytes[(longAt(newFreeChunk + sz2)) & TypeMask]));
+		: (newFreeChunk + sz3) + (headerTypeBytes[(longAt(newFreeChunk + sz3)) & TypeMask]));
 	assert((next == GIV(freeStart))
 	 || (next == (oopFromChunk(GIV(compEnd)))));
 	if (next == GIV(freeStart)) {
@@ -38681,7 +38699,7 @@
 	given object or free chunk in memory. Return freeStart when
 	enumeration is complete. This is for assertion checking only. */
 
-static usqInt
+static sqInt
 safeObjectAfter(sqInt oop)
 {   DECL_MAYBE_SQ_GLOBAL_STRUCT
     sqInt header;

Modified: branches/Cog/sistasrc/vm/cointerp.h
===================================================================
--- branches/Cog/sistasrc/vm/cointerp.h	2014-10-31 19:13:28 UTC (rev 3120)
+++ branches/Cog/sistasrc/vm/cointerp.h	2014-11-03 02:55:09 UTC (rev 3121)
@@ -1,5 +1,5 @@
 /* Automatically generated by
-	CCodeGeneratorGlobalStructure VMMaker.oscog-eem.916 uuid: 79925bdf-769f-446f-8532-f04f0e2f11ae
+	CCodeGeneratorGlobalStructure VMMaker.oscog-eem.918 uuid: 17402dc7-cd8d-4656-8ec9-a74c22c85ac8
  */
 
 

Modified: branches/Cog/sistasrc/vm/gcc3x-cointerp.c
===================================================================
--- branches/Cog/sistasrc/vm/gcc3x-cointerp.c	2014-10-31 19:13:28 UTC (rev 3120)
+++ branches/Cog/sistasrc/vm/gcc3x-cointerp.c	2014-11-03 02:55:09 UTC (rev 3121)
@@ -2,11 +2,11 @@
 
 
 /* Automatically generated by
-	CCodeGeneratorGlobalStructure VMMaker.oscog-eem.916 uuid: 79925bdf-769f-446f-8532-f04f0e2f11ae
+	CCodeGeneratorGlobalStructure VMMaker.oscog-eem.918 uuid: 17402dc7-cd8d-4656-8ec9-a74c22c85ac8
    from
-	CoInterpreter VMMaker.oscog-eem.916 uuid: 79925bdf-769f-446f-8532-f04f0e2f11ae
+	CoInterpreter VMMaker.oscog-eem.918 uuid: 17402dc7-cd8d-4656-8ec9-a74c22c85ac8
  */
-static char __buildInfo[] = "CoInterpreter VMMaker.oscog-eem.916 uuid: 79925bdf-769f-446f-8532-f04f0e2f11ae " __DATE__ ;
+static char __buildInfo[] = "CoInterpreter VMMaker.oscog-eem.918 uuid: 17402dc7-cd8d-4656-8ec9-a74c22c85ac8 " __DATE__ ;
 char *__interpBuildInfo = __buildInfo;
 
 
@@ -24,6 +24,7 @@
 
 #include <stddef.h> /* for e.g. alloca */
 #include <setjmp.h>
+#include <wchar.h> /* for wint_t */
 #include "sqGnu.h"
 #include "vmCallback.h"
 #include "sqMemoryFence.h"
@@ -854,7 +855,7 @@
 void printWronglySizedContexts(sqInt printContexts);
 static void restoreHeadersFromtofromandtofrom(sqInt firstIn, sqInt lastIn, sqInt hdrBaseIn, sqInt firstOut, sqInt lastOut, sqInt hdrBaseOut) NoDbgRegParms;
 static void runLeakCheckerForFullGC(sqInt fullGCFlag) NoDbgRegParms;
-static usqInt safeObjectAfter(sqInt oop) NoDbgRegParms;
+static sqInt safeObjectAfter(sqInt oop) NoDbgRegParms;
 static sqInt safePrintStringOf(sqInt oop) NoDbgRegParms;
 static sqInt shortentoIndexableSize(sqInt obj, sqInt nSlots) NoDbgRegParms;
 static sqInt sizeBitsOfSafe(sqInt oop) NoDbgRegParms;
@@ -2086,7 +2087,7 @@
 	/* 574 */ (void (*)(void))0,
 	/* 575 */ (void (*)(void))0,
  0 };
-const char *interpreterVersion = "Croquet Closure Cog VM [CoInterpreterPrimitives VMMaker.oscog-eem.916]";
+const char *interpreterVersion = "Croquet Closure Cog VM [CoInterpreterPrimitives VMMaker.oscog-eem.918]";
 sqInt minBackwardJumpCountForCompile = MinBackwardJumpCountForCompile /* 40 */;
 volatile int sendTrace;
 
@@ -4893,6 +4894,7 @@
 							GIV(framePointer) = localFP;
 							
 							ceEnterCogCodePopReceiverReg();
+							null;
 							goto l301;
 						}
 						localIP = pointerForOop(longAt(localFP + FoxIFSavedIP));
@@ -4910,7 +4912,7 @@
 					/* begin fetchNextBytecode */
 					currentBytecode = (byteAtPointer(++localIP)) + GIV(bytecodeSetSelector);
 
-					/* return self */
+					null;
 				l301:	/* end baseFrameReturn */;
 					goto l300;
 				}
@@ -36715,15 +36717,17 @@
     sqInt header1;
     sqInt header2;
     sqInt header3;
+    sqInt header4;
     usqInt lastWord;
     sqInt newFreeChunk;
     sqInt newOop;
-    usqInt next;
+    sqInt next;
     sqInt oop;
     sqInt realHeader;
     sqInt sz;
     sqInt sz1;
     sqInt sz2;
+    sqInt sz3;
     sqInt target;
     usqInt w;
 
@@ -36734,7 +36738,21 @@
 		/* begin objectAfterWhileForwarding: */
 		header2 = longAt(oop);
 		if ((header2 & MarkBit) == 0) {
-			next = ((sqInt) (objectAfter(oop)));
+			/* begin objectAfter: */
+			if (!(asserta(oopisLessThan(oop, GIV(freeStart))))) {
+				error("no objects after the end of memory");
+			}
+			if (((longAt(oop)) & TypeMask) == HeaderTypeFree) {
+				sz2 = (longAt(oop)) & AllButTypeMask;
+			}
+			else {
+				/* begin sizeBitsOf: */
+				header3 = longAt(oop);
+				sz2 = ((header3 & TypeMask) == HeaderTypeSizeAndClass
+					? (longAt(oop - (BytesPerWord * 2))) & LongSizeMask
+					: header3 & SizeMask);
+			}
+			next = (oop + sz2) + (headerTypeBytes[(longAt(oop + sz2)) & TypeMask]);
 			goto l1;
 		}
 		fwdBlock1 = (header2 & AllButMarkBitAndTypeMask) << 1;
@@ -36749,7 +36767,7 @@
 		else {
 			sz1 = realHeader & SizeMask;
 		}
-		next = ((sqInt) ((oop + sz1) + (headerTypeBytes[(longAt(oop + sz1)) & TypeMask])));
+		next = (oop + sz1) + (headerTypeBytes[(longAt(oop + sz1)) & TypeMask]);
 	l1:	/* end objectAfterWhileForwarding: */;
 		if (!(((longAt(oop)) & TypeMask) == HeaderTypeFree)) {
 
@@ -36803,18 +36821,18 @@
 	}
 	/* begin safeObjectAfter: */
 	if (((longAt(newFreeChunk)) & TypeMask) == HeaderTypeFree) {
-		sz2 = (longAt(newFreeChunk)) & AllButTypeMask;
+		sz3 = (longAt(newFreeChunk)) & AllButTypeMask;
 	}
 	else {
 		/* begin sizeBitsOf: */
-		header3 = longAt(newFreeChunk);
-		sz2 = ((header3 & TypeMask) == HeaderTypeSizeAndClass
+		header4 = longAt(newFreeChunk);
+		sz3 = ((header4 & TypeMask) == HeaderTypeSizeAndClass
 			? (longAt(newFreeChunk - (BytesPerWord * 2))) & LongSizeMask
-			: header3 & SizeMask);
+			: header4 & SizeMask);
 	}
-	next = ((((usqInt)(newFreeChunk + sz2))) >= GIV(freeStart)
+	next = ((((usqInt)(newFreeChunk + sz3))) >= GIV(freeStart)
 		? GIV(freeStart)
-		: (newFreeChunk + sz2) + (headerTypeBytes[(longAt(newFreeChunk + sz2)) & TypeMask]));
+		: (newFreeChunk + sz3) + (headerTypeBytes[(longAt(newFreeChunk + sz3)) & TypeMask]));
 	assert((next == GIV(freeStart))
 	 || (next == (oopFromChunk(GIV(compEnd)))));
 	if (next == GIV(freeStart)) {
@@ -38690,7 +38708,7 @@
 	given object or free chunk in memory. Return freeStart when
 	enumeration is complete. This is for assertion checking only. */
 
-static usqInt
+static sqInt
 safeObjectAfter(sqInt oop)
 {   DECL_MAYBE_SQ_GLOBAL_STRUCT
     sqInt header;

Modified: branches/Cog/spursistasrc/vm/cointerp.c
===================================================================
--- branches/Cog/spursistasrc/vm/cointerp.c	2014-10-31 19:13:28 UTC (rev 3120)
+++ branches/Cog/spursistasrc/vm/cointerp.c	2014-11-03 02:55:09 UTC (rev 3121)
@@ -1,9 +1,9 @@
 /* Automatically generated by
-	CCodeGeneratorGlobalStructure VMMaker.oscog-eem.916 uuid: 79925bdf-769f-446f-8532-f04f0e2f11ae
+	CCodeGeneratorGlobalStructure VMMaker.oscog-eem.918 uuid: 17402dc7-cd8d-4656-8ec9-a74c22c85ac8
    from
-	CoInterpreter VMMaker.oscog-eem.916 uuid: 79925bdf-769f-446f-8532-f04f0e2f11ae
+	CoInterpreter VMMaker.oscog-eem.918 uuid: 17402dc7-cd8d-4656-8ec9-a74c22c85ac8
  */
-static char __buildInfo[] = "CoInterpreter VMMaker.oscog-eem.916 uuid: 79925bdf-769f-446f-8532-f04f0e2f11ae " __DATE__ ;
+static char __buildInfo[] = "CoInterpreter VMMaker.oscog-eem.918 uuid: 17402dc7-cd8d-4656-8ec9-a74c22c85ac8 " __DATE__ ;
 char *__interpBuildInfo = __buildInfo;
 
 
@@ -21,6 +21,7 @@
 
 #include <stddef.h> /* for e.g. alloca */
 #include <setjmp.h>
+#include <wchar.h> /* for wint_t */
 #include "sq.h"
 #include "vmCallback.h"
 #include "sqMemoryFence.h"
@@ -2332,7 +2333,7 @@
 /*540*/	-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,
 /*560*/	-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1, 0, 0, 0,-1,-1
 	};
-const char *interpreterVersion = "Croquet Closure Cog VM [CoInterpreterPrimitives VMMaker.oscog-eem.916]";
+const char *interpreterVersion = "Croquet Closure Cog VM [CoInterpreterPrimitives VMMaker.oscog-eem.918]";
 sqInt minBackwardJumpCountForCompile = MinBackwardJumpCountForCompile /* 40 */;
 volatile int sendTrace;
 

Modified: branches/Cog/spursistasrc/vm/cointerp.h
===================================================================
--- branches/Cog/spursistasrc/vm/cointerp.h	2014-10-31 19:13:28 UTC (rev 3120)
+++ branches/Cog/spursistasrc/vm/cointerp.h	2014-11-03 02:55:09 UTC (rev 3121)
@@ -1,5 +1,5 @@
 /* Automatically generated by
-	CCodeGeneratorGlobalStructure VMMaker.oscog-eem.916 uuid: 79925bdf-769f-446f-8532-f04f0e2f11ae
+	CCodeGeneratorGlobalStructure VMMaker.oscog-eem.918 uuid: 17402dc7-cd8d-4656-8ec9-a74c22c85ac8
  */
 
 

Modified: branches/Cog/spursistasrc/vm/gcc3x-cointerp.c
===================================================================
--- branches/Cog/spursistasrc/vm/gcc3x-cointerp.c	2014-10-31 19:13:28 UTC (rev 3120)
+++ branches/Cog/spursistasrc/vm/gcc3x-cointerp.c	2014-11-03 02:55:09 UTC (rev 3121)
@@ -2,11 +2,11 @@
 
 
 /* Automatically generated by
-	CCodeGeneratorGlobalStructure VMMaker.oscog-eem.916 uuid: 79925bdf-769f-446f-8532-f04f0e2f11ae
+	CCodeGeneratorGlobalStructure VMMaker.oscog-eem.918 uuid: 17402dc7-cd8d-4656-8ec9-a74c22c85ac8
    from
-	CoInterpreter VMMaker.oscog-eem.916 uuid: 79925bdf-769f-446f-8532-f04f0e2f11ae
+	CoInterpreter VMMaker.oscog-eem.918 uuid: 17402dc7-cd8d-4656-8ec9-a74c22c85ac8
  */
-static char __buildInfo[] = "CoInterpreter VMMaker.oscog-eem.916 uuid: 79925bdf-769f-446f-8532-f04f0e2f11ae " __DATE__ ;
+static char __buildInfo[] = "CoInterpreter VMMaker.oscog-eem.918 uuid: 17402dc7-cd8d-4656-8ec9-a74c22c85ac8 " __DATE__ ;
 char *__interpBuildInfo = __buildInfo;
 
 
@@ -24,6 +24,7 @@
 
 #include <stddef.h> /* for e.g. alloca */
 #include <setjmp.h>
+#include <wchar.h> /* for wint_t */
 #include "sqGnu.h"
 #include "vmCallback.h"
 #include "sqMemoryFence.h"
@@ -2335,7 +2336,7 @@
 /*540*/	-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,
 /*560*/	-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1, 0, 0, 0,-1,-1
 	};
-const char *interpreterVersion = "Croquet Closure Cog VM [CoInterpreterPrimitives VMMaker.oscog-eem.916]";
+const char *interpreterVersion = "Croquet Closure Cog VM [CoInterpreterPrimitives VMMaker.oscog-eem.918]";
 sqInt minBackwardJumpCountForCompile = MinBackwardJumpCountForCompile /* 40 */;
 volatile int sendTrace;
 

Modified: branches/Cog/spursrc/vm/cointerp.c
===================================================================
--- branches/Cog/spursrc/vm/cointerp.c	2014-10-31 19:13:28 UTC (rev 3120)
+++ branches/Cog/spursrc/vm/cointerp.c	2014-11-03 02:55:09 UTC (rev 3121)
@@ -1,9 +1,9 @@
 /* Automatically generated by
-	CCodeGeneratorGlobalStructure VMMaker.oscog-eem.916 uuid: 79925bdf-769f-446f-8532-f04f0e2f11ae
+	CCodeGeneratorGlobalStructure VMMaker.oscog-eem.918 uuid: 17402dc7-cd8d-4656-8ec9-a74c22c85ac8
    from
-	CoInterpreter VMMaker.oscog-eem.916 uuid: 79925bdf-769f-446f-8532-f04f0e2f11ae
+	CoInterpreter VMMaker.oscog-eem.918 uuid: 17402dc7-cd8d-4656-8ec9-a74c22c85ac8
  */
-static char __buildInfo[] = "CoInterpreter VMMaker.oscog-eem.916 uuid: 79925bdf-769f-446f-8532-f04f0e2f11ae " __DATE__ ;
+static char __buildInfo[] = "CoInterpreter VMMaker.oscog-eem.918 uuid: 17402dc7-cd8d-4656-8ec9-a74c22c85ac8 " __DATE__ ;
 char *__interpBuildInfo = __buildInfo;
 
 
@@ -21,6 +21,7 @@
 
 #include <stddef.h> /* for e.g. alloca */
 #include <setjmp.h>
+#include <wchar.h> /* for wint_t */
 #include "sq.h"
 #include "vmCallback.h"
 #include "sqMemoryFence.h"
@@ -2324,7 +2325,7 @@
 /*540*/	-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,
 /*560*/	-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1, 0, 0, 0,-1,-1
 	};
-const char *interpreterVersion = "Croquet Closure Cog VM [CoInterpreterPrimitives VMMaker.oscog-eem.916]";
+const char *interpreterVersion = "Croquet Closure Cog VM [CoInterpreterPrimitives VMMaker.oscog-eem.918]";
 sqInt minBackwardJumpCountForCompile = MinBackwardJumpCountForCompile /* 40 */;
 volatile int sendTrace;
 
@@ -6868,7 +6869,7 @@
 						((((CogMethod *) header2))->methodHeader)));
 				if ((header & (65536 << SmallIntegerShift))
 				 && ((((sqInt)localIP)) == ((GIV(method) + ((LiteralStart + (literalCountOfMethodHeader(header))) * BytesPerOop)) + BaseHeaderSize))) {
-					localIP += 3;
+					localIP = (localIP + (3)) - 1;
 					/* begin fetchNextBytecode */
 					currentBytecode = byteAtPointer(++localIP);
 

Modified: branches/Cog/spursrc/vm/cointerp.h
===================================================================
--- branches/Cog/spursrc/vm/cointerp.h	2014-10-31 19:13:28 UTC (rev 3120)
+++ branches/Cog/spursrc/vm/cointerp.h	2014-11-03 02:55:09 UTC (rev 3121)
@@ -1,5 +1,5 @@
 /* Automatically generated by
-	CCodeGeneratorGlobalStructure VMMaker.oscog-eem.916 uuid: 79925bdf-769f-446f-8532-f04f0e2f11ae
+	CCodeGeneratorGlobalStructure VMMaker.oscog-eem.918 uuid: 17402dc7-cd8d-4656-8ec9-a74c22c85ac8
  */
 
 

Modified: branches/Cog/spursrc/vm/gcc3x-cointerp.c
===================================================================
--- branches/Cog/spursrc/vm/gcc3x-cointerp.c	2014-10-31 19:13:28 UTC (rev 3120)
+++ branches/Cog/spursrc/vm/gcc3x-cointerp.c	2014-11-03 02:55:09 UTC (rev 3121)
@@ -2,11 +2,11 @@
 
 
 /* Automatically generated by
-	CCodeGeneratorGlobalStructure VMMaker.oscog-eem.916 uuid: 79925bdf-769f-446f-8532-f04f0e2f11ae
+	CCodeGeneratorGlobalStructure VMMaker.oscog-eem.918 uuid: 17402dc7-cd8d-4656-8ec9-a74c22c85ac8
    from
-	CoInterpreter VMMaker.oscog-eem.916 uuid: 79925bdf-769f-446f-8532-f04f0e2f11ae
+	CoInterpreter VMMaker.oscog-eem.918 uuid: 17402dc7-cd8d-4656-8ec9-a74c22c85ac8
  */
-static char __buildInfo[] = "CoInterpreter VMMaker.oscog-eem.916 uuid: 79925bdf-769f-446f-8532-f04f0e2f11ae " __DATE__ ;
+static char __buildInfo[] = "CoInterpreter VMMaker.oscog-eem.918 uuid: 17402dc7-cd8d-4656-8ec9-a74c22c85ac8 " __DATE__ ;
 char *__interpBuildInfo = __buildInfo;
 
 
@@ -24,6 +24,7 @@
 
 #include <stddef.h> /* for e.g. alloca */
 #include <setjmp.h>
+#include <wchar.h> /* for wint_t */
 #include "sqGnu.h"
 #include "vmCallback.h"
 #include "sqMemoryFence.h"
@@ -2327,7 +2328,7 @@
 /*540*/	-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,
 /*560*/	-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1, 0, 0, 0,-1,-1
 	};
-const char *interpreterVersion = "Croquet Closure Cog VM [CoInterpreterPrimitives VMMaker.oscog-eem.916]";
+const char *interpreterVersion = "Croquet Closure Cog VM [CoInterpreterPrimitives VMMaker.oscog-eem.918]";
 sqInt minBackwardJumpCountForCompile = MinBackwardJumpCountForCompile /* 40 */;
 volatile int sendTrace;
 
@@ -6877,7 +6878,7 @@
 						((((CogMethod *) header2))->methodHeader)));
 				if ((header & (65536 << SmallIntegerShift))
 				 && ((((sqInt)localIP)) == ((GIV(method) + ((LiteralStart + (literalCountOfMethodHeader(header))) * BytesPerOop)) + BaseHeaderSize))) {
-					localIP += 3;
+					localIP = (localIP + (3)) - 1;
 					/* begin fetchNextBytecode */
 					currentBytecode = byteAtPointer(++localIP);
 

Modified: branches/Cog/spurstacksrc/vm/gcc3x-interp.c
===================================================================
--- branches/Cog/spurstacksrc/vm/gcc3x-interp.c	2014-10-31 19:13:28 UTC (rev 3120)
+++ branches/Cog/spurstacksrc/vm/gcc3x-interp.c	2014-11-03 02:55:09 UTC (rev 3121)
@@ -2,11 +2,11 @@
 
 
 /* Automatically generated by
-	CCodeGeneratorGlobalStructure VMMaker.oscog-eem.916 uuid: 79925bdf-769f-446f-8532-f04f0e2f11ae
+	CCodeGeneratorGlobalStructure VMMaker.oscog-eem.918 uuid: 17402dc7-cd8d-4656-8ec9-a74c22c85ac8
    from
-	StackInterpreter VMMaker.oscog-eem.916 uuid: 79925bdf-769f-446f-8532-f04f0e2f11ae
+	StackInterpreter VMMaker.oscog-eem.918 uuid: 17402dc7-cd8d-4656-8ec9-a74c22c85ac8
  */
-static char __buildInfo[] = "StackInterpreter VMMaker.oscog-eem.916 uuid: 79925bdf-769f-446f-8532-f04f0e2f11ae " __DATE__ ;
+static char __buildInfo[] = "StackInterpreter VMMaker.oscog-eem.918 uuid: 17402dc7-cd8d-4656-8ec9-a74c22c85ac8 " __DATE__ ;
 char *__interpBuildInfo = __buildInfo;
 
 
@@ -24,6 +24,7 @@
 
 #include <stddef.h> /* for e.g. alloca */
 #include <setjmp.h>
+#include <wchar.h> /* for wint_t */
 #include "sqGnu.h"
 #include "vmCallback.h"
 #include "sqMemoryFence.h"
@@ -2076,7 +2077,7 @@
  0 };
 char * breakSelector;
 sqInt breakSelectorLength = -1;
-const char *interpreterVersion = "Croquet Closure Stack VM [StackInterpreterPrimitives VMMaker.oscog-eem.916]";
+const char *interpreterVersion = "Croquet Closure Stack VM [StackInterpreterPrimitives VMMaker.oscog-eem.918]";
 volatile int sendTrace;
 sqInt suppressHeartbeatFlag;
 
@@ -6295,7 +6296,7 @@
 				header = longAt((GIV(method) + BaseHeaderSize) + (HeaderIndex << 2));
 				if ((header & (65536 << SmallIntegerShift))
 				 && ((((sqInt)localIP)) == ((GIV(method) + ((LiteralStart + (literalCountOfMethodHeader(header))) * BytesPerOop)) + BaseHeaderSize))) {
-					localIP += 3;
+					localIP = (localIP + (3)) - 1;
 					/* begin fetchNextBytecode */
 					currentBytecode = byteAtPointer(++localIP);
 

Modified: branches/Cog/spurstacksrc/vm/interp.c
===================================================================
--- branches/Cog/spurstacksrc/vm/interp.c	2014-10-31 19:13:28 UTC (rev 3120)
+++ branches/Cog/spurstacksrc/vm/interp.c	2014-11-03 02:55:09 UTC (rev 3121)
@@ -1,9 +1,9 @@
 /* Automatically generated by
-	CCodeGeneratorGlobalStructure VMMaker.oscog-eem.916 uuid: 79925bdf-769f-446f-8532-f04f0e2f11ae
+	CCodeGeneratorGlobalStructure VMMaker.oscog-eem.918 uuid: 17402dc7-cd8d-4656-8ec9-a74c22c85ac8
    from
-	StackInterpreter VMMaker.oscog-eem.916 uuid: 79925bdf-769f-446f-8532-f04f0e2f11ae
+	StackInterpreter VMMaker.oscog-eem.918 uuid: 17402dc7-cd8d-4656-8ec9-a74c22c85ac8
  */
-static char __buildInfo[] = "StackInterpreter VMMaker.oscog-eem.916 uuid: 79925bdf-769f-446f-8532-f04f0e2f11ae " __DATE__ ;
+static char __buildInfo[] = "StackInterpreter VMMaker.oscog-eem.918 uuid: 17402dc7-cd8d-4656-8ec9-a74c22c85ac8 " __DATE__ ;
 char *__interpBuildInfo = __buildInfo;
 
 
@@ -21,6 +21,7 @@
 
 #include <stddef.h> /* for e.g. alloca */
 #include <setjmp.h>
+#include <wchar.h> /* for wint_t */
 #include "sq.h"
 #include "vmCallback.h"
 #include "sqMemoryFence.h"
@@ -2073,7 +2074,7 @@
  0 };
 char * breakSelector;
 sqInt breakSelectorLength = -1;
-const char *interpreterVersion = "Croquet Closure Stack VM [StackInterpreterPrimitives VMMaker.oscog-eem.916]";
+const char *interpreterVersion = "Croquet Closure Stack VM [StackInterpreterPrimitives VMMaker.oscog-eem.918]";
 volatile int sendTrace;
 sqInt suppressHeartbeatFlag;
 
@@ -6286,7 +6287,7 @@
 				header = longAt((GIV(method) + BaseHeaderSize) + (HeaderIndex << 2));
 				if ((header & (65536 << SmallIntegerShift))
 				 && ((((sqInt)localIP)) == ((GIV(method) + ((LiteralStart + (literalCountOfMethodHeader(header))) * BytesPerOop)) + BaseHeaderSize))) {
-					localIP += 3;
+					localIP = (localIP + (3)) - 1;
 					/* begin fetchNextBytecode */
 					currentBytecode = byteAtPointer(++localIP);
 

Modified: branches/Cog/src/vm/cointerp.c
===================================================================
--- branches/Cog/src/vm/cointerp.c	2014-10-31 19:13:28 UTC (rev 3120)
+++ branches/Cog/src/vm/cointerp.c	2014-11-03 02:55:09 UTC (rev 3121)
@@ -1,9 +1,9 @@
 /* Automatically generated by
-	CCodeGeneratorGlobalStructure VMMaker.oscog-eem.916 uuid: 79925bdf-769f-446f-8532-f04f0e2f11ae
+	CCodeGeneratorGlobalStructure VMMaker.oscog-eem.918 uuid: 17402dc7-cd8d-4656-8ec9-a74c22c85ac8
    from
-	CoInterpreter VMMaker.oscog-eem.916 uuid: 79925bdf-769f-446f-8532-f04f0e2f11ae
+	CoInterpreter VMMaker.oscog-eem.918 uuid: 17402dc7-cd8d-4656-8ec9-a74c22c85ac8
  */
-static char __buildInfo[] = "CoInterpreter VMMaker.oscog-eem.916 uuid: 79925bdf-769f-446f-8532-f04f0e2f11ae " __DATE__ ;
+static char __buildInfo[] = "CoInterpreter VMMaker.oscog-eem.918 uuid: 17402dc7-cd8d-4656-8ec9-a74c22c85ac8 " __DATE__ ;
 char *__interpBuildInfo = __buildInfo;
 
 
@@ -21,6 +21,7 @@
 
 #include <stddef.h> /* for e.g. alloca */
 #include <setjmp.h>
+#include <wchar.h> /* for wint_t */
 #include "sq.h"
 #include "vmCallback.h"
 #include "sqMemoryFence.h"
@@ -2075,7 +2076,7 @@
 	/* 574 */ (void (*)(void))0,
 	/* 575 */ (void (*)(void))0,
  0 };
-const char *interpreterVersion = "Croquet Closure Cog VM [CoInterpreterPrimitives VMMaker.oscog-eem.916]";
+const char *interpreterVersion = "Croquet Closure Cog VM [CoInterpreterPrimitives VMMaker.oscog-eem.918]";
 sqInt minBackwardJumpCountForCompile = MinBackwardJumpCountForCompile /* 40 */;
 volatile int sendTrace;
 

Modified: branches/Cog/src/vm/cointerp.h
===================================================================
--- branches/Cog/src/vm/cointerp.h	2014-10-31 19:13:28 UTC (rev 3120)
+++ branches/Cog/src/vm/cointerp.h	2014-11-03 02:55:09 UTC (rev 3121)
@@ -1,5 +1,5 @@
 /* Automatically generated by
-	CCodeGeneratorGlobalStructure VMMaker.oscog-eem.916 uuid: 79925bdf-769f-446f-8532-f04f0e2f11ae
+	CCodeGeneratorGlobalStructure VMMaker.oscog-eem.918 uuid: 17402dc7-cd8d-4656-8ec9-a74c22c85ac8
  */
 
 

Modified: branches/Cog/src/vm/cointerpmt.c
===================================================================
--- branches/Cog/src/vm/cointerpmt.c	2014-10-31 19:13:28 UTC (rev 3120)
+++ branches/Cog/src/vm/cointerpmt.c	2014-11-03 02:55:09 UTC (rev 3121)
@@ -1,9 +1,9 @@
 /* Automatically generated by
-	CCodeGeneratorGlobalStructure VMMaker.oscog-eem.916 uuid: 79925bdf-769f-446f-8532-f04f0e2f11ae
+	CCodeGeneratorGlobalStructure VMMaker.oscog-eem.918 uuid: 17402dc7-cd8d-4656-8ec9-a74c22c85ac8
    from
-	CoInterpreterMT VMMaker.oscog-eem.916 uuid: 79925bdf-769f-446f-8532-f04f0e2f11ae
+	CoInterpreterMT VMMaker.oscog-eem.918 uuid: 17402dc7-cd8d-4656-8ec9-a74c22c85ac8
  */
-static char __buildInfo[] = "CoInterpreterMT VMMaker.oscog-eem.916 uuid: 79925bdf-769f-446f-8532-f04f0e2f11ae " __DATE__ ;
+static char __buildInfo[] = "CoInterpreterMT VMMaker.oscog-eem.918 uuid: 17402dc7-cd8d-4656-8ec9-a74c22c85ac8 " __DATE__ ;
 char *__interpBuildInfo = __buildInfo;
 
 
@@ -21,6 +21,7 @@
 
 #include <stddef.h> /* for e.g. alloca */
 #include <setjmp.h>
+#include <wchar.h> /* for wint_t */
 #include "sq.h"
 #include "vmCallback.h"
 #include "sqMemoryFence.h"
@@ -930,7 +931,7 @@
 void printWronglySizedContexts(sqInt printContexts);
 static void restoreHeadersFromtofromandtofrom(sqInt firstIn, sqInt lastIn, sqInt hdrBaseIn, sqInt firstOut, sqInt lastOut, sqInt hdrBaseOut) NoDbgRegParms;
 static void runLeakCheckerForFullGC(sqInt fullGCFlag) NoDbgRegParms;
-static sqInt safeObjectAfter(sqInt oop) NoDbgRegParms;
+static usqInt safeObjectAfter(sqInt oop) NoDbgRegParms;
 static sqInt safePrintStringOf(sqInt oop) NoDbgRegParms;
 static sqInt shortentoIndexableSize(sqInt obj, sqInt nSlots) NoDbgRegParms;
 static sqInt sizeBitsOfSafe(sqInt oop) NoDbgRegParms;
@@ -2172,7 +2173,7 @@
 	/* 574 */ (void (*)(void))0,
 	/* 575 */ (void (*)(void))0,
  0 };
-const char *interpreterVersion = "Croquet Closure Cog MT VM [CoInterpreterMT VMMaker.oscog-eem.916]";
+const char *interpreterVersion = "Croquet Closure Cog MT VM [CoInterpreterMT VMMaker.oscog-eem.918]";
 sqInt minBackwardJumpCountForCompile = MinBackwardJumpCountForCompile /* 40 */;
 volatile int sendTrace;
 sqInt willNotThreadWarnCount;
@@ -4867,7 +4868,6 @@
 							GIV(framePointer) = localFP;
 							
 							ceEnterCogCodePopReceiverReg();
-							null;
 							goto l154;
 						}
 						localIP = pointerForOop(longAt(localFP + FoxIFSavedIP));
@@ -4882,7 +4882,7 @@
 					/* begin fetchNextBytecode */
 					currentBytecode = byteAtPointer(++localIP);
 
-					null;
+					/* return self */
 				l154:	/* end baseFrameReturn */;
 					goto l153;
 				}
@@ -34477,17 +34477,15 @@
     sqInt header1;
     sqInt header2;
     sqInt header3;
-    sqInt header4;
     usqInt lastWord;
     sqInt newFreeChunk;
     sqInt newOop;
-    sqInt next;
+    usqInt next;
     sqInt oop;
     sqInt realHeader;
     sqInt sz;
     sqInt sz1;
     sqInt sz2;
-    sqInt sz3;
     sqInt target;
     usqInt w;
 
@@ -34498,21 +34496,7 @@
 		/* begin objectAfterWhileForwarding: */
 		header2 = longAt(oop);
 		if ((header2 & MarkBit) == 0) {
-			/* begin objectAfter: */
-			if (!(asserta(oopisLessThan(oop, GIV(freeStart))))) {
-				error("no objects after the end of memory");
-			}

@@ Diff output truncated at 50000 characters. @@


More information about the Vm-dev mailing list