[Vm-dev] [commit][2987] CogVM source as per VMMaker.oscog-eem.769

commits at squeakvm.org commits at squeakvm.org
Wed Jun 11 21:26:18 UTC 2014


Revision: 2987
Author:   eliot
Date:     2014-06-11 14:26:16 -0700 (Wed, 11 Jun 2014)
Log Message:
-----------
CogVM source as per VMMaker.oscog-eem.769

Spur: checkTraversableSortedFreeList needs to be called through assert; it is
expensive.  And fix signed comparison in loop in checkTraversableSortedFreeList.

Modified Paths:
--------------
    branches/Cog/nsspursrc/vm/cointerp.c
    branches/Cog/nsspursrc/vm/cointerp.h
    branches/Cog/nsspursrc/vm/gcc3x-cointerp.c
    branches/Cog/nsspursrc/vm/interp.h
    branches/Cog/nsspursrc/vm/vmCallback.h
    branches/Cog/nsspurstacksrc/vm/gcc3x-interp.c
    branches/Cog/nsspurstacksrc/vm/interp.c
    branches/Cog/nsspurstacksrc/vm/interp.h
    branches/Cog/nsspurstacksrc/vm/vmCallback.h
    branches/Cog/spursistasrc/vm/cointerp.c
    branches/Cog/spursistasrc/vm/cointerp.h
    branches/Cog/spursistasrc/vm/gcc3x-cointerp.c
    branches/Cog/spursistasrc/vm/interp.h
    branches/Cog/spursistasrc/vm/vmCallback.h
    branches/Cog/spursrc/vm/cointerp.c
    branches/Cog/spursrc/vm/cointerp.h
    branches/Cog/spursrc/vm/gcc3x-cointerp.c
    branches/Cog/spursrc/vm/interp.h
    branches/Cog/spursrc/vm/vmCallback.h
    branches/Cog/spurstacksrc/vm/gcc3x-interp.c
    branches/Cog/spurstacksrc/vm/interp.c
    branches/Cog/spurstacksrc/vm/interp.h
    branches/Cog/spurstacksrc/vm/vmCallback.h

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

Modified: branches/Cog/nsspursrc/vm/cointerp.c
===================================================================
--- branches/Cog/nsspursrc/vm/cointerp.c	2014-06-11 20:12:30 UTC (rev 2986)
+++ branches/Cog/nsspursrc/vm/cointerp.c	2014-06-11 21:26:16 UTC (rev 2987)
@@ -1,9 +1,9 @@
 /* Automatically generated by
-	CCodeGeneratorGlobalStructure VMMaker.oscog-eem.767 uuid: b11544fd-09a4-4469-8ce4-3f2339f08d05
+	CCodeGeneratorGlobalStructure VMMaker.oscog-eem.769 uuid: 7b5918e2-f856-4eca-975d-0f1e6904ed1d
    from
-	CoInterpreter VMMaker.oscog-eem.767 uuid: b11544fd-09a4-4469-8ce4-3f2339f08d05
+	CoInterpreter VMMaker.oscog-eem.769 uuid: 7b5918e2-f856-4eca-975d-0f1e6904ed1d
  */
-static char __buildInfo[] = "CoInterpreter VMMaker.oscog-eem.767 uuid: b11544fd-09a4-4469-8ce4-3f2339f08d05 " __DATE__ ;
+static char __buildInfo[] = "CoInterpreter VMMaker.oscog-eem.769 uuid: 7b5918e2-f856-4eca-975d-0f1e6904ed1d " __DATE__ ;
 char *__interpBuildInfo = __buildInfo;
 
 
@@ -494,7 +494,7 @@
 static void checkProfileTick(sqInt aPrimitiveMethod) NoDbgRegParms;
 static void checkSegments(void);
 static sqInt checkStackIntegrity(void);
-void checkTraversableSortedFreeList(void);
+sqInt checkTraversableSortedFreeList(void);
 sqInt classAlien(void);
 sqInt classArray(void);
 sqInt classAtIndex(sqInt classIndex);
@@ -2238,7 +2238,7 @@
 	/* 574 */ (void (*)(void))0,
 	/* 575 */ (void (*)(void))0,
  0 };
-const char *interpreterVersion = "Newspeak Virtual Machine CoInterpreter_VMMaker.oscog-eem.767";
+const char *interpreterVersion = "Newspeak Virtual Machine CoInterpreter_VMMaker.oscog-eem.769";
 sqInt minBackwardJumpCountForCompile = MinBackwardJumpCountForCompile /* 10 */;
 volatile int sendTrace;
 
@@ -22007,10 +22007,11 @@
 	return ok;
 }
 
-void
+sqInt
 checkTraversableSortedFreeList(void)
 {   DECL_MAYBE_SQ_GLOBAL_STRUCT
     sqInt freeChunk;
+    sqInt limit;
     sqInt next;
     sqInt o;
     sqInt objOop;
@@ -22031,12 +22032,15 @@
 		assert((long64At(objOop1)) != 0);
 		if (((longAt(objOop1)) & 0x3FFFFF) == 0) {
 			assert(objOop1 == freeChunk);
+			next = (longAt((freeChunk + (BaseHeaderSize)) + (0 << 2))) ^ prevFree;
 
 			/* coInterpreter transcript cr; print: freeChunk; tab; print: o; tab; print: prevFree; nextPutAll: '<->'; print: next; flush. */
 
-			next = (longAt((freeChunk + (BaseHeaderSize)) + (0 << 2))) ^ prevFree;
+			limit = (next == 0
+				? GIV(endOfMemory)
+				: next);
 			objOop = freeChunk;
-			while (((objOop = objectAfter(objOop))) < next) {
+			while (oopisLessThan((objOop = objectAfter(objOop)), limit)) {
 				assert(!(isFreeObject(objOop)));
 			}
 			prevFree = freeChunk;
@@ -22051,6 +22055,7 @@
 	
 	assert(prevFree == GIV(lastFreeChunk));
 	assert(freeChunk == 0);
+	return 1;
 }
 
 sqInt
@@ -22834,7 +22839,7 @@
 				free = (longAt((prevFree + (BaseHeaderSize)) + (0 << 2))) ^ prevPrevFree;
 			}
 		}
-		null;
+		assert(checkTraversableSortedFreeList());
 	l1:	/* end pigCompact */;
 		eliminateAndFreeForwardersForPigCompact();
 	}
@@ -24675,7 +24680,7 @@
 		assert(isFreeObject(GIV(lastFreeChunk)));
 		longAtput((GIV(lastFreeChunk) + (BaseHeaderSize)) + (0 << 2), prevPrevFree ^ 0);
 	}
-	checkTraversableSortedFreeList();
+	assert(checkTraversableSortedFreeList());
 	assert((numberOfForwarders()) == 0);
 }
 
@@ -29120,7 +29125,7 @@
 		assert(isFreeObject(GIV(lastFreeChunk)));
 		longAtput((GIV(lastFreeChunk) + (BaseHeaderSize)) + (0 << 2), prevPrevFree ^ 0);
 	}
-	checkTraversableSortedFreeList();
+	assert(checkTraversableSortedFreeList());
 }
 
 
@@ -60964,7 +60969,7 @@
     sqInt prevPrevFree;
     sqInt start;
 
-	checkTraversableSortedFreeList();
+	assert(checkTraversableSortedFreeList());
 	GIV(totalFreeOldSpace) = 0;
 	/* begin sortedFreeListDo: */
 	free = GIV(firstFreeChunk);

Modified: branches/Cog/nsspursrc/vm/cointerp.h
===================================================================
--- branches/Cog/nsspursrc/vm/cointerp.h	2014-06-11 20:12:30 UTC (rev 2986)
+++ branches/Cog/nsspursrc/vm/cointerp.h	2014-06-11 21:26:16 UTC (rev 2987)
@@ -1,5 +1,5 @@
 /* Automatically generated by
-	CCodeGeneratorGlobalStructure VMMaker.oscog-eem.767 uuid: b11544fd-09a4-4469-8ce4-3f2339f08d05
+	CCodeGeneratorGlobalStructure VMMaker.oscog-eem.769 uuid: 7b5918e2-f856-4eca-975d-0f1e6904ed1d
  */
 
 
@@ -66,7 +66,7 @@
 sqInt checkOkayInterpreterObjects(sqInt writeBack);
 sqInt checkOkayOop(usqInt oop);
 sqInt checkOopHasOkayClass(usqInt obj);
-void checkTraversableSortedFreeList(void);
+sqInt checkTraversableSortedFreeList(void);
 sqInt classAtIndex(sqInt classIndex);
 sqInt classFloatCompactIndex(void);
 sqInt classIndexMask(void);

Modified: branches/Cog/nsspursrc/vm/gcc3x-cointerp.c
===================================================================
--- branches/Cog/nsspursrc/vm/gcc3x-cointerp.c	2014-06-11 20:12:30 UTC (rev 2986)
+++ branches/Cog/nsspursrc/vm/gcc3x-cointerp.c	2014-06-11 21:26:16 UTC (rev 2987)
@@ -2,11 +2,11 @@
 
 
 /* Automatically generated by
-	CCodeGeneratorGlobalStructure VMMaker.oscog-eem.767 uuid: b11544fd-09a4-4469-8ce4-3f2339f08d05
+	CCodeGeneratorGlobalStructure VMMaker.oscog-eem.769 uuid: 7b5918e2-f856-4eca-975d-0f1e6904ed1d
    from
-	CoInterpreter VMMaker.oscog-eem.767 uuid: b11544fd-09a4-4469-8ce4-3f2339f08d05
+	CoInterpreter VMMaker.oscog-eem.769 uuid: 7b5918e2-f856-4eca-975d-0f1e6904ed1d
  */
-static char __buildInfo[] = "CoInterpreter VMMaker.oscog-eem.767 uuid: b11544fd-09a4-4469-8ce4-3f2339f08d05 " __DATE__ ;
+static char __buildInfo[] = "CoInterpreter VMMaker.oscog-eem.769 uuid: 7b5918e2-f856-4eca-975d-0f1e6904ed1d " __DATE__ ;
 char *__interpBuildInfo = __buildInfo;
 
 
@@ -497,7 +497,7 @@
 static void checkProfileTick(sqInt aPrimitiveMethod) NoDbgRegParms;
 static void checkSegments(void);
 static sqInt checkStackIntegrity(void);
-void checkTraversableSortedFreeList(void);
+sqInt checkTraversableSortedFreeList(void);
 sqInt classAlien(void);
 sqInt classArray(void);
 sqInt classAtIndex(sqInt classIndex);
@@ -2241,7 +2241,7 @@
 	/* 574 */ (void (*)(void))0,
 	/* 575 */ (void (*)(void))0,
  0 };
-const char *interpreterVersion = "Newspeak Virtual Machine CoInterpreter_VMMaker.oscog-eem.767";
+const char *interpreterVersion = "Newspeak Virtual Machine CoInterpreter_VMMaker.oscog-eem.769";
 sqInt minBackwardJumpCountForCompile = MinBackwardJumpCountForCompile /* 10 */;
 volatile int sendTrace;
 
@@ -22016,10 +22016,11 @@
 	return ok;
 }
 
-void
+sqInt
 checkTraversableSortedFreeList(void)
 {   DECL_MAYBE_SQ_GLOBAL_STRUCT
     sqInt freeChunk;
+    sqInt limit;
     sqInt next;
     sqInt o;
     sqInt objOop;
@@ -22040,12 +22041,15 @@
 		assert((long64At(objOop1)) != 0);
 		if (((longAt(objOop1)) & 0x3FFFFF) == 0) {
 			assert(objOop1 == freeChunk);
+			next = (longAt((freeChunk + (BaseHeaderSize)) + (0 << 2))) ^ prevFree;
 
 			/* coInterpreter transcript cr; print: freeChunk; tab; print: o; tab; print: prevFree; nextPutAll: '<->'; print: next; flush. */
 
-			next = (longAt((freeChunk + (BaseHeaderSize)) + (0 << 2))) ^ prevFree;
+			limit = (next == 0
+				? GIV(endOfMemory)
+				: next);
 			objOop = freeChunk;
-			while (((objOop = objectAfter(objOop))) < next) {
+			while (oopisLessThan((objOop = objectAfter(objOop)), limit)) {
 				assert(!(isFreeObject(objOop)));
 			}
 			prevFree = freeChunk;
@@ -22060,6 +22064,7 @@
 	
 	assert(prevFree == GIV(lastFreeChunk));
 	assert(freeChunk == 0);
+	return 1;
 }
 
 sqInt
@@ -22843,7 +22848,7 @@
 				free = (longAt((prevFree + (BaseHeaderSize)) + (0 << 2))) ^ prevPrevFree;
 			}
 		}
-		null;
+		assert(checkTraversableSortedFreeList());
 	l1:	/* end pigCompact */;
 		eliminateAndFreeForwardersForPigCompact();
 	}
@@ -24684,7 +24689,7 @@
 		assert(isFreeObject(GIV(lastFreeChunk)));
 		longAtput((GIV(lastFreeChunk) + (BaseHeaderSize)) + (0 << 2), prevPrevFree ^ 0);
 	}
-	checkTraversableSortedFreeList();
+	assert(checkTraversableSortedFreeList());
 	assert((numberOfForwarders()) == 0);
 }
 
@@ -29129,7 +29134,7 @@
 		assert(isFreeObject(GIV(lastFreeChunk)));
 		longAtput((GIV(lastFreeChunk) + (BaseHeaderSize)) + (0 << 2), prevPrevFree ^ 0);
 	}
-	checkTraversableSortedFreeList();
+	assert(checkTraversableSortedFreeList());
 }
 
 
@@ -60973,7 +60978,7 @@
     sqInt prevPrevFree;
     sqInt start;
 
-	checkTraversableSortedFreeList();
+	assert(checkTraversableSortedFreeList());
 	GIV(totalFreeOldSpace) = 0;
 	/* begin sortedFreeListDo: */
 	free = GIV(firstFreeChunk);

Modified: branches/Cog/nsspursrc/vm/interp.h
===================================================================
--- branches/Cog/nsspursrc/vm/interp.h	2014-06-11 20:12:30 UTC (rev 2986)
+++ branches/Cog/nsspursrc/vm/interp.h	2014-06-11 21:26:16 UTC (rev 2987)
@@ -1,5 +1,5 @@
 /* Automatically generated by
-	CCodeGeneratorGlobalStructure VMMaker.oscog-eem.767 uuid: b11544fd-09a4-4469-8ce4-3f2339f08d05
+	CCodeGeneratorGlobalStructure VMMaker.oscog-eem.769 uuid: 7b5918e2-f856-4eca-975d-0f1e6904ed1d
  */
 
 #define VM_PROXY_MAJOR 1

Modified: branches/Cog/nsspursrc/vm/vmCallback.h
===================================================================
--- branches/Cog/nsspursrc/vm/vmCallback.h	2014-06-11 20:12:30 UTC (rev 2986)
+++ branches/Cog/nsspursrc/vm/vmCallback.h	2014-06-11 21:26:16 UTC (rev 2987)
@@ -1,5 +1,5 @@
 /* Automatically generated by
-	CCodeGeneratorGlobalStructure VMMaker.oscog-eem.767 uuid: b11544fd-09a4-4469-8ce4-3f2339f08d05
+	CCodeGeneratorGlobalStructure VMMaker.oscog-eem.769 uuid: 7b5918e2-f856-4eca-975d-0f1e6904ed1d
  */
 
 #define VM_CALLBACK_INC 1

Modified: branches/Cog/nsspurstacksrc/vm/gcc3x-interp.c
===================================================================
--- branches/Cog/nsspurstacksrc/vm/gcc3x-interp.c	2014-06-11 20:12:30 UTC (rev 2986)
+++ branches/Cog/nsspurstacksrc/vm/gcc3x-interp.c	2014-06-11 21:26:16 UTC (rev 2987)
@@ -2,11 +2,11 @@
 
 
 /* Automatically generated by
-	CCodeGeneratorGlobalStructure VMMaker.oscog-eem.767 uuid: b11544fd-09a4-4469-8ce4-3f2339f08d05
+	CCodeGeneratorGlobalStructure VMMaker.oscog-eem.769 uuid: 7b5918e2-f856-4eca-975d-0f1e6904ed1d
    from
-	StackInterpreter VMMaker.oscog-eem.767 uuid: b11544fd-09a4-4469-8ce4-3f2339f08d05
+	StackInterpreter VMMaker.oscog-eem.769 uuid: 7b5918e2-f856-4eca-975d-0f1e6904ed1d
  */
-static char __buildInfo[] = "StackInterpreter VMMaker.oscog-eem.767 uuid: b11544fd-09a4-4469-8ce4-3f2339f08d05 " __DATE__ ;
+static char __buildInfo[] = "StackInterpreter VMMaker.oscog-eem.769 uuid: 7b5918e2-f856-4eca-975d-0f1e6904ed1d " __DATE__ ;
 char *__interpBuildInfo = __buildInfo;
 
 
@@ -410,7 +410,7 @@
 static void checkProfileTick(sqInt aPrimitiveMethod) NoDbgRegParms;
 static void checkSegments(void);
 static sqInt checkStackIntegrity(void);
-void checkTraversableSortedFreeList(void);
+sqInt checkTraversableSortedFreeList(void);
 sqInt classAlien(void);
 sqInt classArray(void);
 sqInt classAtIndex(sqInt classIndex);
@@ -2024,7 +2024,7 @@
  0 };
 char * breakSelector;
 sqInt breakSelectorLength = -1;
-const char *interpreterVersion = "Newspeak Virtual Machine StackInterpreter_VMMaker.oscog-eem.767";
+const char *interpreterVersion = "Newspeak Virtual Machine StackInterpreter_VMMaker.oscog-eem.769";
 volatile int sendTrace;
 sqInt suppressHeartbeatFlag;
 
@@ -19002,10 +19002,11 @@
 	return ok;
 }
 
-void
+sqInt
 checkTraversableSortedFreeList(void)
 {   DECL_MAYBE_SQ_GLOBAL_STRUCT
     sqInt freeChunk;
+    sqInt limit;
     sqInt next;
     sqInt o;
     sqInt objOop;
@@ -19026,12 +19027,15 @@
 		assert((long64At(objOop1)) != 0);
 		if (((longAt(objOop1)) & 0x3FFFFF) == 0) {
 			assert(objOop1 == freeChunk);
+			next = (longAt((freeChunk + (BaseHeaderSize)) + (0 << 2))) ^ prevFree;
 
 			/* coInterpreter transcript cr; print: freeChunk; tab; print: o; tab; print: prevFree; nextPutAll: '<->'; print: next; flush. */
 
-			next = (longAt((freeChunk + (BaseHeaderSize)) + (0 << 2))) ^ prevFree;
+			limit = (next == 0
+				? GIV(endOfMemory)
+				: next);
 			objOop = freeChunk;
-			while (((objOop = objectAfter(objOop))) < next) {
+			while (oopisLessThan((objOop = objectAfter(objOop)), limit)) {
 				assert(!(isFreeObject(objOop)));
 			}
 			prevFree = freeChunk;
@@ -19046,6 +19050,7 @@
 	
 	assert(prevFree == GIV(lastFreeChunk));
 	assert(freeChunk == 0);
+	return 1;
 }
 
 sqInt
@@ -19730,7 +19735,7 @@
 				free = (longAt((prevFree + (BaseHeaderSize)) + (0 << 2))) ^ prevPrevFree;
 			}
 		}
-		null;
+		assert(checkTraversableSortedFreeList());
 	l1:	/* end pigCompact */;
 		eliminateAndFreeForwardersForPigCompact();
 	}
@@ -21270,7 +21275,7 @@
 		assert(isFreeObject(GIV(lastFreeChunk)));
 		longAtput((GIV(lastFreeChunk) + (BaseHeaderSize)) + (0 << 2), prevPrevFree ^ 0);
 	}
-	checkTraversableSortedFreeList();
+	assert(checkTraversableSortedFreeList());
 	assert((numberOfForwarders()) == 0);
 }
 
@@ -24931,7 +24936,7 @@
 		assert(isFreeObject(GIV(lastFreeChunk)));
 		longAtput((GIV(lastFreeChunk) + (BaseHeaderSize)) + (0 << 2), prevPrevFree ^ 0);
 	}
-	checkTraversableSortedFreeList();
+	assert(checkTraversableSortedFreeList());
 }
 
 
@@ -54340,7 +54345,7 @@
     sqInt prevPrevFree;
     sqInt start;
 
-	checkTraversableSortedFreeList();
+	assert(checkTraversableSortedFreeList());
 	GIV(totalFreeOldSpace) = 0;
 	/* begin sortedFreeListDo: */
 	free = GIV(firstFreeChunk);

Modified: branches/Cog/nsspurstacksrc/vm/interp.c
===================================================================
--- branches/Cog/nsspurstacksrc/vm/interp.c	2014-06-11 20:12:30 UTC (rev 2986)
+++ branches/Cog/nsspurstacksrc/vm/interp.c	2014-06-11 21:26:16 UTC (rev 2987)
@@ -1,9 +1,9 @@
 /* Automatically generated by
-	CCodeGeneratorGlobalStructure VMMaker.oscog-eem.767 uuid: b11544fd-09a4-4469-8ce4-3f2339f08d05
+	CCodeGeneratorGlobalStructure VMMaker.oscog-eem.769 uuid: 7b5918e2-f856-4eca-975d-0f1e6904ed1d
    from
-	StackInterpreter VMMaker.oscog-eem.767 uuid: b11544fd-09a4-4469-8ce4-3f2339f08d05
+	StackInterpreter VMMaker.oscog-eem.769 uuid: 7b5918e2-f856-4eca-975d-0f1e6904ed1d
  */
-static char __buildInfo[] = "StackInterpreter VMMaker.oscog-eem.767 uuid: b11544fd-09a4-4469-8ce4-3f2339f08d05 " __DATE__ ;
+static char __buildInfo[] = "StackInterpreter VMMaker.oscog-eem.769 uuid: 7b5918e2-f856-4eca-975d-0f1e6904ed1d " __DATE__ ;
 char *__interpBuildInfo = __buildInfo;
 
 
@@ -407,7 +407,7 @@
 static void checkProfileTick(sqInt aPrimitiveMethod) NoDbgRegParms;
 static void checkSegments(void);
 static sqInt checkStackIntegrity(void);
-void checkTraversableSortedFreeList(void);
+sqInt checkTraversableSortedFreeList(void);
 sqInt classAlien(void);
 sqInt classArray(void);
 sqInt classAtIndex(sqInt classIndex);
@@ -2021,7 +2021,7 @@
  0 };
 char * breakSelector;
 sqInt breakSelectorLength = -1;
-const char *interpreterVersion = "Newspeak Virtual Machine StackInterpreter_VMMaker.oscog-eem.767";
+const char *interpreterVersion = "Newspeak Virtual Machine StackInterpreter_VMMaker.oscog-eem.769";
 volatile int sendTrace;
 sqInt suppressHeartbeatFlag;
 
@@ -18993,10 +18993,11 @@
 	return ok;
 }
 
-void
+sqInt
 checkTraversableSortedFreeList(void)
 {   DECL_MAYBE_SQ_GLOBAL_STRUCT
     sqInt freeChunk;
+    sqInt limit;
     sqInt next;
     sqInt o;
     sqInt objOop;
@@ -19017,12 +19018,15 @@
 		assert((long64At(objOop1)) != 0);
 		if (((longAt(objOop1)) & 0x3FFFFF) == 0) {
 			assert(objOop1 == freeChunk);
+			next = (longAt((freeChunk + (BaseHeaderSize)) + (0 << 2))) ^ prevFree;
 
 			/* coInterpreter transcript cr; print: freeChunk; tab; print: o; tab; print: prevFree; nextPutAll: '<->'; print: next; flush. */
 
-			next = (longAt((freeChunk + (BaseHeaderSize)) + (0 << 2))) ^ prevFree;
+			limit = (next == 0
+				? GIV(endOfMemory)
+				: next);
 			objOop = freeChunk;
-			while (((objOop = objectAfter(objOop))) < next) {
+			while (oopisLessThan((objOop = objectAfter(objOop)), limit)) {
 				assert(!(isFreeObject(objOop)));
 			}
 			prevFree = freeChunk;
@@ -19037,6 +19041,7 @@
 	
 	assert(prevFree == GIV(lastFreeChunk));
 	assert(freeChunk == 0);
+	return 1;
 }
 
 sqInt
@@ -19721,7 +19726,7 @@
 				free = (longAt((prevFree + (BaseHeaderSize)) + (0 << 2))) ^ prevPrevFree;
 			}
 		}
-		null;
+		assert(checkTraversableSortedFreeList());
 	l1:	/* end pigCompact */;
 		eliminateAndFreeForwardersForPigCompact();
 	}
@@ -21261,7 +21266,7 @@
 		assert(isFreeObject(GIV(lastFreeChunk)));
 		longAtput((GIV(lastFreeChunk) + (BaseHeaderSize)) + (0 << 2), prevPrevFree ^ 0);
 	}
-	checkTraversableSortedFreeList();
+	assert(checkTraversableSortedFreeList());
 	assert((numberOfForwarders()) == 0);
 }
 
@@ -24922,7 +24927,7 @@
 		assert(isFreeObject(GIV(lastFreeChunk)));
 		longAtput((GIV(lastFreeChunk) + (BaseHeaderSize)) + (0 << 2), prevPrevFree ^ 0);
 	}
-	checkTraversableSortedFreeList();
+	assert(checkTraversableSortedFreeList());
 }
 
 
@@ -54331,7 +54336,7 @@
     sqInt prevPrevFree;
     sqInt start;
 
-	checkTraversableSortedFreeList();
+	assert(checkTraversableSortedFreeList());
 	GIV(totalFreeOldSpace) = 0;
 	/* begin sortedFreeListDo: */
 	free = GIV(firstFreeChunk);

Modified: branches/Cog/nsspurstacksrc/vm/interp.h
===================================================================
--- branches/Cog/nsspurstacksrc/vm/interp.h	2014-06-11 20:12:30 UTC (rev 2986)
+++ branches/Cog/nsspurstacksrc/vm/interp.h	2014-06-11 21:26:16 UTC (rev 2987)
@@ -1,5 +1,5 @@
 /* Automatically generated by
-	CCodeGeneratorGlobalStructure VMMaker.oscog-eem.767 uuid: b11544fd-09a4-4469-8ce4-3f2339f08d05
+	CCodeGeneratorGlobalStructure VMMaker.oscog-eem.769 uuid: 7b5918e2-f856-4eca-975d-0f1e6904ed1d
  */
 
 #define VM_PROXY_MAJOR 1

Modified: branches/Cog/nsspurstacksrc/vm/vmCallback.h
===================================================================
--- branches/Cog/nsspurstacksrc/vm/vmCallback.h	2014-06-11 20:12:30 UTC (rev 2986)
+++ branches/Cog/nsspurstacksrc/vm/vmCallback.h	2014-06-11 21:26:16 UTC (rev 2987)
@@ -1,5 +1,5 @@
 /* Automatically generated by
-	CCodeGeneratorGlobalStructure VMMaker.oscog-eem.767 uuid: b11544fd-09a4-4469-8ce4-3f2339f08d05
+	CCodeGeneratorGlobalStructure VMMaker.oscog-eem.769 uuid: 7b5918e2-f856-4eca-975d-0f1e6904ed1d
  */
 
 #define VM_CALLBACK_INC 1


Property changes on: branches/Cog/platforms/Cross/vm/sqSCCSVersion.h
___________________________________________________________________
Modified: checkindate
   - Wed Jun 11 08:24:08 PDT 2014
   + Wed Jun 11 14:25:26 PDT 2014

Modified: branches/Cog/spursistasrc/vm/cointerp.c
===================================================================
--- branches/Cog/spursistasrc/vm/cointerp.c	2014-06-11 20:12:30 UTC (rev 2986)
+++ branches/Cog/spursistasrc/vm/cointerp.c	2014-06-11 21:26:16 UTC (rev 2987)
@@ -1,9 +1,9 @@
 /* Automatically generated by
-	CCodeGeneratorGlobalStructure VMMaker.oscog-eem.767 uuid: b11544fd-09a4-4469-8ce4-3f2339f08d05
+	CCodeGeneratorGlobalStructure VMMaker.oscog-eem.769 uuid: 7b5918e2-f856-4eca-975d-0f1e6904ed1d
    from
-	CoInterpreter VMMaker.oscog-eem.767 uuid: b11544fd-09a4-4469-8ce4-3f2339f08d05
+	CoInterpreter VMMaker.oscog-eem.769 uuid: 7b5918e2-f856-4eca-975d-0f1e6904ed1d
  */
-static char __buildInfo[] = "CoInterpreter VMMaker.oscog-eem.767 uuid: b11544fd-09a4-4469-8ce4-3f2339f08d05 " __DATE__ ;
+static char __buildInfo[] = "CoInterpreter VMMaker.oscog-eem.769 uuid: 7b5918e2-f856-4eca-975d-0f1e6904ed1d " __DATE__ ;
 char *__interpBuildInfo = __buildInfo;
 
 
@@ -491,7 +491,7 @@
 static void checkProfileTick(sqInt aPrimitiveMethod) NoDbgRegParms;
 static void checkSegments(void);
 static sqInt checkStackIntegrity(void);
-void checkTraversableSortedFreeList(void);
+sqInt checkTraversableSortedFreeList(void);
 sqInt classAlien(void);
 sqInt classArray(void);
 sqInt classAtIndex(sqInt classIndex);
@@ -1334,7 +1334,7 @@
 static void setSignalLowSpaceFlagAndSaveProcess(void);
 static void setTraceFlagOnContextsFramesPageIfNeeded(sqInt aContext) NoDbgRegParms;
 sqInt shiftForWord(void);
-static usqInt shortentoIndexableSize(sqInt objOop, sqInt indexableSize) NoDbgRegParms;
+static sqInt shortentoIndexableSize(sqInt objOop, sqInt indexableSize) NoDbgRegParms;
 static sqInt shortPrintContext(sqInt aContext) NoDbgRegParms;
 static sqInt shortPrintFrameAndCallers(char *theFP) NoDbgRegParms;
 EXPORT(void) shortPrintFramesInPage(StackPage *thePage);
@@ -2233,7 +2233,7 @@
 	/* 574 */ (void (*)(void))0,
 	/* 575 */ (void (*)(void))0,
  0 };
-const char *interpreterVersion = "Croquet Closure Cog VM [CoInterpreter VMMaker.oscog-eem.767]";
+const char *interpreterVersion = "Croquet Closure Cog VM [CoInterpreter VMMaker.oscog-eem.769]";
 sqInt minBackwardJumpCountForCompile = MinBackwardJumpCountForCompile /* 10 */;
 volatile int sendTrace;
 
@@ -17345,10 +17345,11 @@
 	return ok;
 }
 
-void
+sqInt
 checkTraversableSortedFreeList(void)
 {   DECL_MAYBE_SQ_GLOBAL_STRUCT
     sqInt freeChunk;
+    sqInt limit;
     sqInt next;
     sqInt o;
     sqInt objOop;
@@ -17369,12 +17370,15 @@
 		assert((long64At(objOop1)) != 0);
 		if (((longAt(objOop1)) & 0x3FFFFF) == 0) {
 			assert(objOop1 == freeChunk);
+			next = (longAt((freeChunk + (BaseHeaderSize)) + (0 << 2))) ^ prevFree;
 
 			/* coInterpreter transcript cr; print: freeChunk; tab; print: o; tab; print: prevFree; nextPutAll: '<->'; print: next; flush. */
 
-			next = (longAt((freeChunk + (BaseHeaderSize)) + (0 << 2))) ^ prevFree;
+			limit = (next == 0
+				? GIV(endOfMemory)
+				: next);
 			objOop = freeChunk;
-			while (((objOop = objectAfter(objOop))) < next) {
+			while (oopisLessThan((objOop = objectAfter(objOop)), limit)) {
 				assert(!(isFreeObject(objOop)));
 			}
 			prevFree = freeChunk;
@@ -17389,6 +17393,7 @@
 	
 	assert(prevFree == GIV(lastFreeChunk));
 	assert(freeChunk == 0);
+	return 1;
 }
 
 sqInt
@@ -18172,7 +18177,7 @@
 				free = (longAt((prevFree + (BaseHeaderSize)) + (0 << 2))) ^ prevPrevFree;
 			}
 		}
-		null;
+		assert(checkTraversableSortedFreeList());
 	l1:	/* end pigCompact */;
 		eliminateAndFreeForwardersForPigCompact();
 	}
@@ -20006,7 +20011,7 @@
 		assert(isFreeObject(GIV(lastFreeChunk)));
 		longAtput((GIV(lastFreeChunk) + (BaseHeaderSize)) + (0 << 2), prevPrevFree ^ 0);
 	}
-	checkTraversableSortedFreeList();
+	assert(checkTraversableSortedFreeList());
 	assert((numberOfForwarders()) == 0);
 }
 
@@ -24342,7 +24347,7 @@
 		assert(isFreeObject(GIV(lastFreeChunk)));
 		longAtput((GIV(lastFreeChunk) + (BaseHeaderSize)) + (0 << 2), prevPrevFree ^ 0);
 	}
-	checkTraversableSortedFreeList();
+	assert(checkTraversableSortedFreeList());
 }
 
 
@@ -55738,7 +55743,7 @@
     sqInt prevPrevFree;
     sqInt start;
 
-	checkTraversableSortedFreeList();
+	assert(checkTraversableSortedFreeList());
 	GIV(totalFreeOldSpace) = 0;
 	/* begin sortedFreeListDo: */
 	free = GIV(firstFreeChunk);
@@ -57637,7 +57642,7 @@
 	zero if no change
 	was possible. */
 
-static usqInt
+static sqInt
 shortentoIndexableSize(sqInt objOop, sqInt indexableSize)
 {
     usqInt bytesAfter;

Modified: branches/Cog/spursistasrc/vm/cointerp.h
===================================================================
--- branches/Cog/spursistasrc/vm/cointerp.h	2014-06-11 20:12:30 UTC (rev 2986)
+++ branches/Cog/spursistasrc/vm/cointerp.h	2014-06-11 21:26:16 UTC (rev 2987)
@@ -1,5 +1,5 @@
 /* Automatically generated by
-	CCodeGeneratorGlobalStructure VMMaker.oscog-eem.767 uuid: b11544fd-09a4-4469-8ce4-3f2339f08d05
+	CCodeGeneratorGlobalStructure VMMaker.oscog-eem.769 uuid: 7b5918e2-f856-4eca-975d-0f1e6904ed1d
  */
 
 
@@ -65,7 +65,7 @@
 sqInt checkOkayInterpreterObjects(sqInt writeBack);
 sqInt checkOkayOop(usqInt oop);
 sqInt checkOopHasOkayClass(usqInt obj);
-void checkTraversableSortedFreeList(void);
+sqInt checkTraversableSortedFreeList(void);
 sqInt classAtIndex(sqInt classIndex);
 sqInt classFloatCompactIndex(void);
 sqInt classIndexMask(void);

Modified: branches/Cog/spursistasrc/vm/gcc3x-cointerp.c
===================================================================
--- branches/Cog/spursistasrc/vm/gcc3x-cointerp.c	2014-06-11 20:12:30 UTC (rev 2986)
+++ branches/Cog/spursistasrc/vm/gcc3x-cointerp.c	2014-06-11 21:26:16 UTC (rev 2987)
@@ -2,11 +2,11 @@
 
 
 /* Automatically generated by
-	CCodeGeneratorGlobalStructure VMMaker.oscog-eem.767 uuid: b11544fd-09a4-4469-8ce4-3f2339f08d05
+	CCodeGeneratorGlobalStructure VMMaker.oscog-eem.769 uuid: 7b5918e2-f856-4eca-975d-0f1e6904ed1d
    from
-	CoInterpreter VMMaker.oscog-eem.767 uuid: b11544fd-09a4-4469-8ce4-3f2339f08d05
+	CoInterpreter VMMaker.oscog-eem.769 uuid: 7b5918e2-f856-4eca-975d-0f1e6904ed1d
  */
-static char __buildInfo[] = "CoInterpreter VMMaker.oscog-eem.767 uuid: b11544fd-09a4-4469-8ce4-3f2339f08d05 " __DATE__ ;
+static char __buildInfo[] = "CoInterpreter VMMaker.oscog-eem.769 uuid: 7b5918e2-f856-4eca-975d-0f1e6904ed1d " __DATE__ ;
 char *__interpBuildInfo = __buildInfo;
 
 
@@ -494,7 +494,7 @@
 static void checkProfileTick(sqInt aPrimitiveMethod) NoDbgRegParms;
 static void checkSegments(void);
 static sqInt checkStackIntegrity(void);
-void checkTraversableSortedFreeList(void);
+sqInt checkTraversableSortedFreeList(void);
 sqInt classAlien(void);
 sqInt classArray(void);
 sqInt classAtIndex(sqInt classIndex);
@@ -1337,7 +1337,7 @@
 static void setSignalLowSpaceFlagAndSaveProcess(void);
 static void setTraceFlagOnContextsFramesPageIfNeeded(sqInt aContext) NoDbgRegParms;
 sqInt shiftForWord(void);
-static usqInt shortentoIndexableSize(sqInt objOop, sqInt indexableSize) NoDbgRegParms;
+static sqInt shortentoIndexableSize(sqInt objOop, sqInt indexableSize) NoDbgRegParms;
 static sqInt shortPrintContext(sqInt aContext) NoDbgRegParms;
 static sqInt shortPrintFrameAndCallers(char *theFP) NoDbgRegParms;
 EXPORT(void) shortPrintFramesInPage(StackPage *thePage);
@@ -2236,7 +2236,7 @@
 	/* 574 */ (void (*)(void))0,
 	/* 575 */ (void (*)(void))0,
  0 };
-const char *interpreterVersion = "Croquet Closure Cog VM [CoInterpreter VMMaker.oscog-eem.767]";
+const char *interpreterVersion = "Croquet Closure Cog VM [CoInterpreter VMMaker.oscog-eem.769]";
 sqInt minBackwardJumpCountForCompile = MinBackwardJumpCountForCompile /* 10 */;
 volatile int sendTrace;
 
@@ -17354,10 +17354,11 @@
 	return ok;
 }
 
-void
+sqInt
 checkTraversableSortedFreeList(void)
 {   DECL_MAYBE_SQ_GLOBAL_STRUCT
     sqInt freeChunk;
+    sqInt limit;
     sqInt next;
     sqInt o;
     sqInt objOop;
@@ -17378,12 +17379,15 @@
 		assert((long64At(objOop1)) != 0);
 		if (((longAt(objOop1)) & 0x3FFFFF) == 0) {
 			assert(objOop1 == freeChunk);
+			next = (longAt((freeChunk + (BaseHeaderSize)) + (0 << 2))) ^ prevFree;
 
 			/* coInterpreter transcript cr; print: freeChunk; tab; print: o; tab; print: prevFree; nextPutAll: '<->'; print: next; flush. */
 
-			next = (longAt((freeChunk + (BaseHeaderSize)) + (0 << 2))) ^ prevFree;
+			limit = (next == 0
+				? GIV(endOfMemory)
+				: next);
 			objOop = freeChunk;
-			while (((objOop = objectAfter(objOop))) < next) {
+			while (oopisLessThan((objOop = objectAfter(objOop)), limit)) {
 				assert(!(isFreeObject(objOop)));
 			}
 			prevFree = freeChunk;
@@ -17398,6 +17402,7 @@
 	
 	assert(prevFree == GIV(lastFreeChunk));
 	assert(freeChunk == 0);
+	return 1;
 }
 
 sqInt
@@ -18181,7 +18186,7 @@
 				free = (longAt((prevFree + (BaseHeaderSize)) + (0 << 2))) ^ prevPrevFree;
 			}
 		}
-		null;
+		assert(checkTraversableSortedFreeList());
 	l1:	/* end pigCompact */;
 		eliminateAndFreeForwardersForPigCompact();
 	}
@@ -20015,7 +20020,7 @@
 		assert(isFreeObject(GIV(lastFreeChunk)));
 		longAtput((GIV(lastFreeChunk) + (BaseHeaderSize)) + (0 << 2), prevPrevFree ^ 0);
 	}
-	checkTraversableSortedFreeList();
+	assert(checkTraversableSortedFreeList());
 	assert((numberOfForwarders()) == 0);
 }
 
@@ -24351,7 +24356,7 @@
 		assert(isFreeObject(GIV(lastFreeChunk)));
 		longAtput((GIV(lastFreeChunk) + (BaseHeaderSize)) + (0 << 2), prevPrevFree ^ 0);
 	}
-	checkTraversableSortedFreeList();
+	assert(checkTraversableSortedFreeList());
 }
 
 
@@ -55747,7 +55752,7 @@
     sqInt prevPrevFree;
     sqInt start;
 
-	checkTraversableSortedFreeList();
+	assert(checkTraversableSortedFreeList());
 	GIV(totalFreeOldSpace) = 0;
 	/* begin sortedFreeListDo: */
 	free = GIV(firstFreeChunk);
@@ -57646,7 +57651,7 @@
 	zero if no change
 	was possible. */
 
-static usqInt
+static sqInt
 shortentoIndexableSize(sqInt objOop, sqInt indexableSize)
 {
     usqInt bytesAfter;

Modified: branches/Cog/spursistasrc/vm/interp.h
===================================================================
--- branches/Cog/spursistasrc/vm/interp.h	2014-06-11 20:12:30 UTC (rev 2986)
+++ branches/Cog/spursistasrc/vm/interp.h	2014-06-11 21:26:16 UTC (rev 2987)
@@ -1,5 +1,5 @@
 /* Automatically generated by
-	CCodeGeneratorGlobalStructure VMMaker.oscog-eem.767 uuid: b11544fd-09a4-4469-8ce4-3f2339f08d05
+	CCodeGeneratorGlobalStructure VMMaker.oscog-eem.769 uuid: 7b5918e2-f856-4eca-975d-0f1e6904ed1d
  */
 
 #define VM_PROXY_MAJOR 1

Modified: branches/Cog/spursistasrc/vm/vmCallback.h
===================================================================
--- branches/Cog/spursistasrc/vm/vmCallback.h	2014-06-11 20:12:30 UTC (rev 2986)
+++ branches/Cog/spursistasrc/vm/vmCallback.h	2014-06-11 21:26:16 UTC (rev 2987)
@@ -1,5 +1,5 @@
 /* Automatically generated by
-	CCodeGeneratorGlobalStructure VMMaker.oscog-eem.767 uuid: b11544fd-09a4-4469-8ce4-3f2339f08d05
+	CCodeGeneratorGlobalStructure VMMaker.oscog-eem.769 uuid: 7b5918e2-f856-4eca-975d-0f1e6904ed1d
  */
 
 #define VM_CALLBACK_INC 1

Modified: branches/Cog/spursrc/vm/cointerp.c
===================================================================
--- branches/Cog/spursrc/vm/cointerp.c	2014-06-11 20:12:30 UTC (rev 2986)
+++ branches/Cog/spursrc/vm/cointerp.c	2014-06-11 21:26:16 UTC (rev 2987)
@@ -1,9 +1,9 @@
 /* Automatically generated by
-	CCodeGeneratorGlobalStructure VMMaker.oscog-eem.767 uuid: b11544fd-09a4-4469-8ce4-3f2339f08d05
+	CCodeGeneratorGlobalStructure VMMaker.oscog-eem.769 uuid: 7b5918e2-f856-4eca-975d-0f1e6904ed1d
    from
-	CoInterpreter VMMaker.oscog-eem.767 uuid: b11544fd-09a4-4469-8ce4-3f2339f08d05
+	CoInterpreter VMMaker.oscog-eem.769 uuid: 7b5918e2-f856-4eca-975d-0f1e6904ed1d
  */
-static char __buildInfo[] = "CoInterpreter VMMaker.oscog-eem.767 uuid: b11544fd-09a4-4469-8ce4-3f2339f08d05 " __DATE__ ;
+static char __buildInfo[] = "CoInterpreter VMMaker.oscog-eem.769 uuid: 7b5918e2-f856-4eca-975d-0f1e6904ed1d " __DATE__ ;
 char *__interpBuildInfo = __buildInfo;
 
 
@@ -489,7 +489,7 @@
 static void checkProfileTick(sqInt aPrimitiveMethod) NoDbgRegParms;
 static void checkSegments(void);
 static sqInt checkStackIntegrity(void);
-void checkTraversableSortedFreeList(void);
+sqInt checkTraversableSortedFreeList(void);
 sqInt classAlien(void);
 sqInt classArray(void);
 sqInt classAtIndex(sqInt classIndex);
@@ -2228,7 +2228,7 @@
 	/* 574 */ (void (*)(void))0,
 	/* 575 */ (void (*)(void))0,
  0 };
-const char *interpreterVersion = "Croquet Closure Cog VM [CoInterpreter VMMaker.oscog-eem.767]";
+const char *interpreterVersion = "Croquet Closure Cog VM [CoInterpreter VMMaker.oscog-eem.769]";
 sqInt minBackwardJumpCountForCompile = MinBackwardJumpCountForCompile /* 10 */;
 volatile int sendTrace;
 
@@ -5419,6 +5419,7 @@
 							GIV(framePointer) = localFP;
 							
 							ceEnterCogCodePopReceiverReg();
+							null;
 							goto l148;
 						}
 						localIP = pointerForOop(longAt(localFP + FoxIFSavedIP));
@@ -5433,7 +5434,7 @@
 					/* begin fetchNextBytecode */
 					currentBytecode = byteAtPointer(++localIP);
 
-					/* return self */
+					null;
 				l148:	/* end baseFrameReturn */;
 					goto l145;
 				}
@@ -17206,10 +17207,11 @@
 	return ok;
 }
 
-void
+sqInt
 checkTraversableSortedFreeList(void)
 {   DECL_MAYBE_SQ_GLOBAL_STRUCT
     sqInt freeChunk;
+    sqInt limit;
     sqInt next;
     sqInt o;
     sqInt objOop;
@@ -17230,12 +17232,15 @@
 		assert((long64At(objOop1)) != 0);
 		if (((longAt(objOop1)) & 0x3FFFFF) == 0) {
 			assert(objOop1 == freeChunk);
+			next = (longAt((freeChunk + (BaseHeaderSize)) + (0 << 2))) ^ prevFree;
 
 			/* coInterpreter transcript cr; print: freeChunk; tab; print: o; tab; print: prevFree; nextPutAll: '<->'; print: next; flush. */
 
-			next = (longAt((freeChunk + (BaseHeaderSize)) + (0 << 2))) ^ prevFree;
+			limit = (next == 0
+				? GIV(endOfMemory)
+				: next);
 			objOop = freeChunk;
-			while (((objOop = objectAfter(objOop))) < next) {
+			while (oopisLessThan((objOop = objectAfter(objOop)), limit)) {
 				assert(!(isFreeObject(objOop)));
 			}
 			prevFree = freeChunk;
@@ -17250,6 +17255,7 @@
 	
 	assert(prevFree == GIV(lastFreeChunk));
 	assert(freeChunk == 0);
+	return 1;
 }
 
 sqInt
@@ -18033,7 +18039,7 @@
 				free = (longAt((prevFree + (BaseHeaderSize)) + (0 << 2))) ^ prevPrevFree;
 			}
 		}
-		null;
+		assert(checkTraversableSortedFreeList());
 	l1:	/* end pigCompact */;
 		eliminateAndFreeForwardersForPigCompact();
 	}
@@ -19867,7 +19873,7 @@
 		assert(isFreeObject(GIV(lastFreeChunk)));
 		longAtput((GIV(lastFreeChunk) + (BaseHeaderSize)) + (0 << 2), prevPrevFree ^ 0);
 	}
-	checkTraversableSortedFreeList();
+	assert(checkTraversableSortedFreeList());
 	assert((numberOfForwarders()) == 0);
 }
 
@@ -24203,7 +24209,7 @@
 		assert(isFreeObject(GIV(lastFreeChunk)));
 		longAtput((GIV(lastFreeChunk) + (BaseHeaderSize)) + (0 << 2), prevPrevFree ^ 0);
 	}
-	checkTraversableSortedFreeList();
+	assert(checkTraversableSortedFreeList());
 }
 
 
@@ -55535,7 +55541,7 @@
     sqInt prevPrevFree;
     sqInt start;
 
-	checkTraversableSortedFreeList();
+	assert(checkTraversableSortedFreeList());
 	GIV(totalFreeOldSpace) = 0;
 	/* begin sortedFreeListDo: */
 	free = GIV(firstFreeChunk);

Modified: branches/Cog/spursrc/vm/cointerp.h
===================================================================
--- branches/Cog/spursrc/vm/cointerp.h	2014-06-11 20:12:30 UTC (rev 2986)
+++ branches/Cog/spursrc/vm/cointerp.h	2014-06-11 21:26:16 UTC (rev 2987)
@@ -1,5 +1,5 @@
 /* Automatically generated by
-	CCodeGeneratorGlobalStructure VMMaker.oscog-eem.767 uuid: b11544fd-09a4-4469-8ce4-3f2339f08d05
+	CCodeGeneratorGlobalStructure VMMaker.oscog-eem.769 uuid: 7b5918e2-f856-4eca-975d-0f1e6904ed1d
  */
 
 
@@ -64,7 +64,7 @@
 sqInt checkOkayInterpreterObjects(sqInt writeBack);
 sqInt checkOkayOop(usqInt oop);
 sqInt checkOopHasOkayClass(usqInt obj);
-void checkTraversableSortedFreeList(void);
+sqInt checkTraversableSortedFreeList(void);
 sqInt classAtIndex(sqInt classIndex);
 sqInt classFloatCompactIndex(void);
 sqInt classIndexMask(void);

Modified: branches/Cog/spursrc/vm/gcc3x-cointerp.c
===================================================================
--- branches/Cog/spursrc/vm/gcc3x-cointerp.c	2014-06-11 20:12:30 UTC (rev 2986)
+++ branches/Cog/spursrc/vm/gcc3x-cointerp.c	2014-06-11 21:26:16 UTC (rev 2987)
@@ -2,11 +2,11 @@
 
 
 /* Automatically generated by
-	CCodeGeneratorGlobalStructure VMMaker.oscog-eem.767 uuid: b11544fd-09a4-4469-8ce4-3f2339f08d05
+	CCodeGeneratorGlobalStructure VMMaker.oscog-eem.769 uuid: 7b5918e2-f856-4eca-975d-0f1e6904ed1d
    from
-	CoInterpreter VMMaker.oscog-eem.767 uuid: b11544fd-09a4-4469-8ce4-3f2339f08d05
+	CoInterpreter VMMaker.oscog-eem.769 uuid: 7b5918e2-f856-4eca-975d-0f1e6904ed1d
  */
-static char __buildInfo[] = "CoInterpreter VMMaker.oscog-eem.767 uuid: b11544fd-09a4-4469-8ce4-3f2339f08d05 " __DATE__ ;
+static char __buildInfo[] = "CoInterpreter VMMaker.oscog-eem.769 uuid: 7b5918e2-f856-4eca-975d-0f1e6904ed1d " __DATE__ ;
 char *__interpBuildInfo = __buildInfo;
 
 
@@ -492,7 +492,7 @@
 static void checkProfileTick(sqInt aPrimitiveMethod) NoDbgRegParms;
 static void checkSegments(void);
 static sqInt checkStackIntegrity(void);
-void checkTraversableSortedFreeList(void);
+sqInt checkTraversableSortedFreeList(void);
 sqInt classAlien(void);
 sqInt classArray(void);
 sqInt classAtIndex(sqInt classIndex);
@@ -2231,7 +2231,7 @@
 	/* 574 */ (void (*)(void))0,
 	/* 575 */ (void (*)(void))0,
  0 };
-const char *interpreterVersion = "Croquet Closure Cog VM [CoInterpreter VMMaker.oscog-eem.767]";
+const char *interpreterVersion = "Croquet Closure Cog VM [CoInterpreter VMMaker.oscog-eem.769]";
 sqInt minBackwardJumpCountForCompile = MinBackwardJumpCountForCompile /* 10 */;
 volatile int sendTrace;
 
@@ -5428,6 +5428,7 @@
 							GIV(framePointer) = localFP;
 							
 							ceEnterCogCodePopReceiverReg();
+							null;
 							goto l148;
 						}
 						localIP = pointerForOop(longAt(localFP + FoxIFSavedIP));
@@ -5442,7 +5443,7 @@
 					/* begin fetchNextBytecode */
 					currentBytecode = byteAtPointer(++localIP);
 
-					/* return self */
+					null;
 				l148:	/* end baseFrameReturn */;
 					goto l145;
 				}
@@ -17215,10 +17216,11 @@
 	return ok;
 }
 
-void
+sqInt
 checkTraversableSortedFreeList(void)
 {   DECL_MAYBE_SQ_GLOBAL_STRUCT
     sqInt freeChunk;
+    sqInt limit;
     sqInt next;
     sqInt o;
     sqInt objOop;
@@ -17239,12 +17241,15 @@
 		assert((long64At(objOop1)) != 0);
 		if (((longAt(objOop1)) & 0x3FFFFF) == 0) {
 			assert(objOop1 == freeChunk);
+			next = (longAt((freeChunk + (BaseHeaderSize)) + (0 << 2))) ^ prevFree;
 
 			/* coInterpreter transcript cr; print: freeChunk; tab; print: o; tab; print: prevFree; nextPutAll: '<->'; print: next; flush. */
 
-			next = (longAt((freeChunk + (BaseHeaderSize)) + (0 << 2))) ^ prevFree;
+			limit = (next == 0
+				? GIV(endOfMemory)
+				: next);
 			objOop = freeChunk;
-			while (((objOop = objectAfter(objOop))) < next) {
+			while (oopisLessThan((objOop = objectAfter(objOop)), limit)) {
 				assert(!(isFreeObject(objOop)));
 			}
 			prevFree = freeChunk;
@@ -17259,6 +17264,7 @@
 	
 	assert(prevFree == GIV(lastFreeChunk));
 	assert(freeChunk == 0);
+	return 1;
 }
 
 sqInt
@@ -18042,7 +18048,7 @@
 				free = (longAt((prevFree + (BaseHeaderSize)) + (0 << 2))) ^ prevPrevFree;
 			}
 		}
-		null;
+		assert(checkTraversableSortedFreeList());
 	l1:	/* end pigCompact */;
 		eliminateAndFreeForwardersForPigCompact();
 	}
@@ -19876,7 +19882,7 @@
 		assert(isFreeObject(GIV(lastFreeChunk)));
 		longAtput((GIV(lastFreeChunk) + (BaseHeaderSize)) + (0 << 2), prevPrevFree ^ 0);
 	}
-	checkTraversableSortedFreeList();
+	assert(checkTraversableSortedFreeList());
 	assert((numberOfForwarders()) == 0);
 }
 
@@ -24212,7 +24218,7 @@
 		assert(isFreeObject(GIV(lastFreeChunk)));
 		longAtput((GIV(lastFreeChunk) + (BaseHeaderSize)) + (0 << 2), prevPrevFree ^ 0);
 	}
-	checkTraversableSortedFreeList();
+	assert(checkTraversableSortedFreeList());
 }
 
 
@@ -55544,7 +55550,7 @@
     sqInt prevPrevFree;
     sqInt start;
 
-	checkTraversableSortedFreeList();
+	assert(checkTraversableSortedFreeList());
 	GIV(totalFreeOldSpace) = 0;
 	/* begin sortedFreeListDo: */
 	free = GIV(firstFreeChunk);

Modified: branches/Cog/spursrc/vm/interp.h
===================================================================
--- branches/Cog/spursrc/vm/interp.h	2014-06-11 20:12:30 UTC (rev 2986)
+++ branches/Cog/spursrc/vm/interp.h	2014-06-11 21:26:16 UTC (rev 2987)
@@ -1,5 +1,5 @@
 /* Automatically generated by
-	CCodeGeneratorGlobalStructure VMMaker.oscog-eem.767 uuid: b11544fd-09a4-4469-8ce4-3f2339f08d05
+	CCodeGeneratorGlobalStructure VMMaker.oscog-eem.769 uuid: 7b5918e2-f856-4eca-975d-0f1e6904ed1d
  */
 
 #define VM_PROXY_MAJOR 1

Modified: branches/Cog/spursrc/vm/vmCallback.h
===================================================================
--- branches/Cog/spursrc/vm/vmCallback.h	2014-06-11 20:12:30 UTC (rev 2986)
+++ branches/Cog/spursrc/vm/vmCallback.h	2014-06-11 21:26:16 UTC (rev 2987)
@@ -1,5 +1,5 @@
 /* Automatically generated by
-	CCodeGeneratorGlobalStructure VMMaker.oscog-eem.767 uuid: b11544fd-09a4-4469-8ce4-3f2339f08d05
+	CCodeGeneratorGlobalStructure VMMaker.oscog-eem.769 uuid: 7b5918e2-f856-4eca-975d-0f1e6904ed1d
  */
 
 #define VM_CALLBACK_INC 1

Modified: branches/Cog/spurstacksrc/vm/gcc3x-interp.c
===================================================================
--- branches/Cog/spurstacksrc/vm/gcc3x-interp.c	2014-06-11 20:12:30 UTC (rev 2986)
+++ branches/Cog/spurstacksrc/vm/gcc3x-interp.c	2014-06-11 21:26:16 UTC (rev 2987)
@@ -2,11 +2,11 @@
 
 
 /* Automatically generated by
-	CCodeGeneratorGlobalStructure VMMaker.oscog-eem.767 uuid: b11544fd-09a4-4469-8ce4-3f2339f08d05
+	CCodeGeneratorGlobalStructure VMMaker.oscog-eem.769 uuid: 7b5918e2-f856-4eca-975d-0f1e6904ed1d
    from
-	StackInterpreter VMMaker.oscog-eem.767 uuid: b11544fd-09a4-4469-8ce4-3f2339f08d05
+	StackInterpreter VMMaker.oscog-eem.769 uuid: 7b5918e2-f856-4eca-975d-0f1e6904ed1d
  */
-static char __buildInfo[] = "StackInterpreter VMMaker.oscog-eem.767 uuid: b11544fd-09a4-4469-8ce4-3f2339f08d05 " __DATE__ ;
+static char __buildInfo[] = "StackInterpreter VMMaker.oscog-eem.769 uuid: 7b5918e2-f856-4eca-975d-0f1e6904ed1d " __DATE__ ;
 char *__interpBuildInfo = __buildInfo;
 
 
@@ -407,7 +407,7 @@
 static void checkProfileTick(sqInt aPrimitiveMethod) NoDbgRegParms;
 static void checkSegments(void);
 static sqInt checkStackIntegrity(void);
-void checkTraversableSortedFreeList(void);
+sqInt checkTraversableSortedFreeList(void);
 sqInt classAlien(void);
 sqInt classArray(void);
 sqInt classAtIndex(sqInt classIndex);
@@ -2017,7 +2017,7 @@
  0 };
 char * breakSelector;
 sqInt breakSelectorLength = -1;
-const char *interpreterVersion = "Croquet Closure Stack VM [StackInterpreter VMMaker.oscog-eem.767]";
+const char *interpreterVersion = "Croquet Closure Stack VM [StackInterpreter VMMaker.oscog-eem.769]";
 volatile int sendTrace;
 sqInt suppressHeartbeatFlag;
 
@@ -14542,10 +14542,11 @@
 	return ok;
 }
 
-void
+sqInt
 checkTraversableSortedFreeList(void)
 {   DECL_MAYBE_SQ_GLOBAL_STRUCT
     sqInt freeChunk;
+    sqInt limit;
     sqInt next;
     sqInt o;
     sqInt objOop;
@@ -14566,12 +14567,15 @@
 		assert((long64At(objOop1)) != 0);
 		if (((longAt(objOop1)) & 0x3FFFFF) == 0) {
 			assert(objOop1 == freeChunk);
+			next = (longAt((freeChunk + (BaseHeaderSize)) + (0 << 2))) ^ prevFree;
 
 			/* coInterpreter transcript cr; print: freeChunk; tab; print: o; tab; print: prevFree; nextPutAll: '<->'; print: next; flush. */
 
-			next = (longAt((freeChunk + (BaseHeaderSize)) + (0 << 2))) ^ prevFree;
+			limit = (next == 0
+				? GIV(endOfMemory)
+				: next);
 			objOop = freeChunk;
-			while (((objOop = objectAfter(objOop))) < next) {
+			while (oopisLessThan((objOop = objectAfter(objOop)), limit)) {
 				assert(!(isFreeObject(objOop)));
 			}
 			prevFree = freeChunk;
@@ -14586,6 +14590,7 @@
 	
 	assert(prevFree == GIV(lastFreeChunk));
 	assert(freeChunk == 0);
+	return 1;
 }
 
 sqInt
@@ -15270,7 +15275,7 @@
 				free = (longAt((prevFree + (BaseHeaderSize)) + (0 << 2))) ^ prevPrevFree;
 			}
 		}
-		null;
+		assert(checkTraversableSortedFreeList());
 	l1:	/* end pigCompact */;
 		eliminateAndFreeForwardersForPigCompact();
 	}
@@ -16803,7 +16808,7 @@
 		assert(isFreeObject(GIV(lastFreeChunk)));
 		longAtput((GIV(lastFreeChunk) + (BaseHeaderSize)) + (0 << 2), prevPrevFree ^ 0);
 	}
-	checkTraversableSortedFreeList();
+	assert(checkTraversableSortedFreeList());
 	assert((numberOfForwarders()) == 0);
 }
 
@@ -20352,7 +20357,7 @@
 		assert(isFreeObject(GIV(lastFreeChunk)));
 		longAtput((GIV(lastFreeChunk) + (BaseHeaderSize)) + (0 << 2), prevPrevFree ^ 0);
 	}
-	checkTraversableSortedFreeList();
+	assert(checkTraversableSortedFreeList());
 }
 
 
@@ -49211,7 +49216,7 @@
     sqInt prevPrevFree;
     sqInt start;
 
-	checkTraversableSortedFreeList();
+	assert(checkTraversableSortedFreeList());
 	GIV(totalFreeOldSpace) = 0;
 	/* begin sortedFreeListDo: */
 	free = GIV(firstFreeChunk);

Modified: branches/Cog/spurstacksrc/vm/interp.c
===================================================================
--- branches/Cog/spurstacksrc/vm/interp.c	2014-06-11 20:12:30 UTC (rev 2986)
+++ branches/Cog/spurstacksrc/vm/interp.c	2014-06-11 21:26:16 UTC (rev 2987)
@@ -1,9 +1,9 @@
 /* Automatically generated by
-	CCodeGeneratorGlobalStructure VMMaker.oscog-eem.767 uuid: b11544fd-09a4-4469-8ce4-3f2339f08d05
+	CCodeGeneratorGlobalStructure VMMaker.oscog-eem.769 uuid: 7b5918e2-f856-4eca-975d-0f1e6904ed1d
    from
-	StackInterpreter VMMaker.oscog-eem.767 uuid: b11544fd-09a4-4469-8ce4-3f2339f08d05
+	StackInterpreter VMMaker.oscog-eem.769 uuid: 7b5918e2-f856-4eca-975d-0f1e6904ed1d
  */
-static char __buildInfo[] = "StackInterpreter VMMaker.oscog-eem.767 uuid: b11544fd-09a4-4469-8ce4-3f2339f08d05 " __DATE__ ;
+static char __buildInfo[] = "StackInterpreter VMMaker.oscog-eem.769 uuid: 7b5918e2-f856-4eca-975d-0f1e6904ed1d " __DATE__ ;
 char *__interpBuildInfo = __buildInfo;
 
 
@@ -404,7 +404,7 @@
 static void checkProfileTick(sqInt aPrimitiveMethod) NoDbgRegParms;
 static void checkSegments(void);
 static sqInt checkStackIntegrity(void);
-void checkTraversableSortedFreeList(void);
+sqInt checkTraversableSortedFreeList(void);
 sqInt classAlien(void);
 sqInt classArray(void);
 sqInt classAtIndex(sqInt classIndex);
@@ -2014,7 +2014,7 @@
  0 };
 char * breakSelector;
 sqInt breakSelectorLength = -1;
-const char *interpreterVersion = "Croquet Closure Stack VM [StackInterpreter VMMaker.oscog-eem.767]";
+const char *interpreterVersion = "Croquet Closure Stack VM [StackInterpreter VMMaker.oscog-eem.769]";
 volatile int sendTrace;
 sqInt suppressHeartbeatFlag;
 
@@ -14533,10 +14533,11 @@
 	return ok;
 }
 
-void
+sqInt
 checkTraversableSortedFreeList(void)
 {   DECL_MAYBE_SQ_GLOBAL_STRUCT
     sqInt freeChunk;
+    sqInt limit;
     sqInt next;
     sqInt o;
     sqInt objOop;
@@ -14557,12 +14558,15 @@
 		assert((long64At(objOop1)) != 0);
 		if (((longAt(objOop1)) & 0x3FFFFF) == 0) {
 			assert(objOop1 == freeChunk);
+			next = (longAt((freeChunk + (BaseHeaderSize)) + (0 << 2))) ^ prevFree;
 
 			/* coInterpreter transcript cr; print: freeChunk; tab; print: o; tab; print: prevFree; nextPutAll: '<->'; print: next; flush. */
 
-			next = (longAt((freeChunk + (BaseHeaderSize)) + (0 << 2))) ^ prevFree;
+			limit = (next == 0
+				? GIV(endOfMemory)
+				: next);
 			objOop = freeChunk;
-			while (((objOop = objectAfter(objOop))) < next) {
+			while (oopisLessThan((objOop = objectAfter(objOop)), limit)) {
 				assert(!(isFreeObject(objOop)));
 			}
 			prevFree = freeChunk;
@@ -14577,6 +14581,7 @@
 	
 	assert(prevFree == GIV(lastFreeChunk));
 	assert(freeChunk == 0);
+	return 1;
 }
 
 sqInt
@@ -15261,7 +15266,7 @@
 				free = (longAt((prevFree + (BaseHeaderSize)) + (0 << 2))) ^ prevPrevFree;
 			}
 		}
-		null;
+		assert(checkTraversableSortedFreeList());
 	l1:	/* end pigCompact */;
 		eliminateAndFreeForwardersForPigCompact();
 	}
@@ -16794,7 +16799,7 @@
 		assert(isFreeObject(GIV(lastFreeChunk)));
 		longAtput((GIV(lastFreeChunk) + (BaseHeaderSize)) + (0 << 2), prevPrevFree ^ 0);
 	}
-	checkTraversableSortedFreeList();
+	assert(checkTraversableSortedFreeList());
 	assert((numberOfForwarders()) == 0);
 }
 
@@ -20343,7 +20348,7 @@
 		assert(isFreeObject(GIV(lastFreeChunk)));
 		longAtput((GIV(lastFreeChunk) + (BaseHeaderSize)) + (0 << 2), prevPrevFree ^ 0);
 	}
-	checkTraversableSortedFreeList();
+	assert(checkTraversableSortedFreeList());
 }
 
 
@@ -49202,7 +49207,7 @@
     sqInt prevPrevFree;
     sqInt start;
 
-	checkTraversableSortedFreeList();
+	assert(checkTraversableSortedFreeList());
 	GIV(totalFreeOldSpace) = 0;
 	/* begin sortedFreeListDo: */
 	free = GIV(firstFreeChunk);

Modified: branches/Cog/spurstacksrc/vm/interp.h
===================================================================
--- branches/Cog/spurstacksrc/vm/interp.h	2014-06-11 20:12:30 UTC (rev 2986)
+++ branches/Cog/spurstacksrc/vm/interp.h	2014-06-11 21:26:16 UTC (rev 2987)
@@ -1,5 +1,5 @@
 /* Automatically generated by
-	CCodeGeneratorGlobalStructure VMMaker.oscog-eem.767 uuid: b11544fd-09a4-4469-8ce4-3f2339f08d05
+	CCodeGeneratorGlobalStructure VMMaker.oscog-eem.769 uuid: 7b5918e2-f856-4eca-975d-0f1e6904ed1d
  */
 
 #define VM_PROXY_MAJOR 1

Modified: branches/Cog/spurstacksrc/vm/vmCallback.h
===================================================================
--- branches/Cog/spurstacksrc/vm/vmCallback.h	2014-06-11 20:12:30 UTC (rev 2986)
+++ branches/Cog/spurstacksrc/vm/vmCallback.h	2014-06-11 21:26:16 UTC (rev 2987)
@@ -1,5 +1,5 @@
 /* Automatically generated by
-	CCodeGeneratorGlobalStructure VMMaker.oscog-eem.767 uuid: b11544fd-09a4-4469-8ce4-3f2339f08d05
+	CCodeGeneratorGlobalStructure VMMaker.oscog-eem.769 uuid: 7b5918e2-f856-4eca-975d-0f1e6904ed1d
  */
 
 #define VM_CALLBACK_INC 1



More information about the Vm-dev mailing list