[Vm-dev] [commit][3104] CogVM source as per VMMaker.oscog-eem.900

commits at squeakvm.org commits at squeakvm.org
Mon Oct 13 23:35:36 UTC 2014


Revision: 3104
Author:   eliot
Date:     2014-10-13 16:35:34 -0700 (Mon, 13 Oct 2014)
Log Message:
-----------
CogVM source as per VMMaker.oscog-eem.900

Change a couple of between:and:'s that should be
oop:isGreaterThanOrEqualTo: andLessThan:'s

Fix signed/unsigned comparisons with freeStart in V3.

Assert for empty remap buffer means Spur's accessor must be defined as a macro.

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-13 21:24:18 UTC (rev 3103)
+++ branches/Cog/nscogsrc/vm/cointerp.c	2014-10-13 23:35:34 UTC (rev 3104)
@@ -1,9 +1,9 @@
 /* Automatically generated by
-	CCodeGeneratorGlobalStructure VMMaker.oscog-eem.897 uuid: fcc5e4e2-808e-4ab1-97ae-079cc4b9d7b8
+	CCodeGeneratorGlobalStructure VMMaker.oscog-eem.900 uuid: 3d11cf21-4f5f-406a-85ae-ccbc786612a0
    from
-	CoInterpreter VMMaker.oscog-eem.897 uuid: fcc5e4e2-808e-4ab1-97ae-079cc4b9d7b8
+	CoInterpreter VMMaker.oscog-eem.900 uuid: 3d11cf21-4f5f-406a-85ae-ccbc786612a0
  */
-static char __buildInfo[] = "CoInterpreter VMMaker.oscog-eem.897 uuid: fcc5e4e2-808e-4ab1-97ae-079cc4b9d7b8 " __DATE__ ;
+static char __buildInfo[] = "CoInterpreter VMMaker.oscog-eem.900 uuid: 3d11cf21-4f5f-406a-85ae-ccbc786612a0 " __DATE__ ;
 char *__interpBuildInfo = __buildInfo;
 
 
@@ -852,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 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;
@@ -2084,7 +2084,7 @@
 	/* 574 */ (void (*)(void))0,
 	/* 575 */ (void (*)(void))0,
  0 };
-const char *interpreterVersion = "Newspeak Virtual Machine CoInterpreterPrimitives_VMMaker.oscog-eem.897";
+const char *interpreterVersion = "Newspeak Virtual Machine CoInterpreterPrimitives_VMMaker.oscog-eem.900";
 sqInt minBackwardJumpCountForCompile = MinBackwardJumpCountForCompile /* 40 */;
 volatile int sendTrace;
 
@@ -18913,7 +18913,8 @@
 	}
 	printFrameOopat("receiver", rcvrAddress);
 	topThing = longAt(theSP);
-	if (((topThing >= theMethod) && (topThing <= theMethodEnd))) {
+	if (((((usqInt) topThing)) >= (((usqInt) theMethod)))
+	 && ((((usqInt) topThing)) < (((usqInt) theMethodEnd)))) {
 		for (addr = (rcvrAddress - BytesPerWord); addr >= (theSP + BytesPerWord); addr += (-BytesPerWord)) {
 			index = ((rcvrAddress - addr) / BytesPerWord) + numArgs;
 			if (index <= numTemps) {
@@ -20909,7 +20910,7 @@
 	/* begin oopFromChunk: */
 	chunk = startOfMemory();
 	oop = chunk + (headerTypeBytes[(longAt(chunk)) & TypeMask]);
-	while (oop < GIV(freeStart)) {
+	while ((((usqInt)oop)) < GIV(freeStart)) {
 		if (!(((longAt(oop)) & TypeMask) == HeaderTypeFree)) {
 			fmt = (((usqInt) (longAt(oop))) >> (instFormatFieldLSB())) & 15;
 			if ((fmt == 3)
@@ -22368,7 +22369,7 @@
 		/* begin oopFromChunk: */
 		chunk = startOfMemory();
 		oop1 = chunk + (headerTypeBytes[(longAt(chunk)) & TypeMask]);
-		while (oop1 < GIV(freeStart)) {
+		while ((((usqInt)oop1)) < GIV(freeStart)) {
 			if (!(((longAt(oop1)) & TypeMask) == HeaderTypeFree)) {
 				if ((((((usqInt) (longAt(oop1))) >> (compactClassFieldLSB())) & 0x1F) == ClassMethodContextCompactIndex)
 				 && ((longAt((oop1 + BaseHeaderSize) + (MethodIndex << ShiftForWord))) == methodObj)) {
@@ -27721,7 +27722,7 @@
 	/* begin oopFromChunk: */
 	chunk = startOfMemory();
 	oop1 = chunk + (headerTypeBytes[(longAt(chunk)) & TypeMask]);
-	while (oop1 < GIV(freeStart)) {
+	while ((((usqInt)oop1)) < GIV(freeStart)) {
 		if (!(((longAt(oop1)) & TypeMask) == HeaderTypeFree)) {
 			if (!(((longAt(oop1)) & TypeMask) == HeaderTypeFree)) {
 				if (((((usqInt) (longAt(oop1))) >> (instFormatFieldLSB())) & 15) >= 12) {
@@ -33682,7 +33683,7 @@
 	/* begin oopFromChunk: */
 	chunk = startOfMemory();
 	oop1 = chunk + (headerTypeBytes[(longAt(chunk)) & TypeMask]);
-	while (oop1 < GIV(freeStart)) {
+	while ((((usqInt)oop1)) < GIV(freeStart)) {
 		if (!(((longAt(oop1)) & TypeMask) == HeaderTypeFree)) {
 			if (!(((longAt(oop1)) & TypeMask) == HeaderTypeFree)) {
 				if (((((usqInt) (longAt(oop1))) >> (instFormatFieldLSB())) & 15) >= 12) {
@@ -34861,7 +34862,7 @@
 	/* begin oopFromChunk: */
 	chunk = startOfMemory();
 	oop = chunk + (headerTypeBytes[(longAt(chunk)) & TypeMask]);
-	while (oop < GIV(freeStart)) {
+	while ((((usqInt)oop)) < GIV(freeStart)) {
 		if (!(((longAt(oop)) & TypeMask) == HeaderTypeFree)) {
 			if (((longAt(oop)) & MarkBit) != 0) {
 				return 0;
@@ -36771,17 +36772,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;
 
@@ -36792,21 +36791,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;
@@ -36821,7 +36806,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)) {
 
@@ -36875,18 +36860,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 = ((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)) {
@@ -38759,7 +38744,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;
@@ -38775,7 +38760,7 @@
 			? (longAt(oop - (BytesPerWord * 2))) & LongSizeMask
 			: header & SizeMask);
 	}
-	return ((oop + sz) >= GIV(freeStart)
+	return ((((usqInt)(oop + sz))) >= GIV(freeStart)
 		? GIV(freeStart)
 		: (oop + sz) + (headerTypeBytes[(longAt(oop + sz)) & TypeMask]));
 }
@@ -38798,7 +38783,7 @@
 	if ((oop & 1)) {
 		return null;
 	}
-	if (!(((oop >= (startOfMemory())) && (oop <= GIV(freeStart))))) {
+	if (!(oopisGreaterThanOrEqualToandLessThan(oop, startOfMemory(), GIV(freeStart)))) {
 		return null;
 	}
 	if ((oop & (BytesPerWord - 1)) != 0) {
@@ -39734,7 +39719,7 @@
 	/* begin oopFromChunk: */
 	chunk = startOfMemory();
 	oop = chunk + (headerTypeBytes[(longAt(chunk)) & TypeMask]);
-	while (oop < GIV(freeStart)) {
+	while ((((usqInt)oop)) < GIV(freeStart)) {
 		if (!(((longAt(oop)) & TypeMask) == HeaderTypeFree)) {
 			count += 1;
 
@@ -43542,7 +43527,7 @@
 	/* begin oopFromChunk: */
 	chunk = startOfMemory();
 	oop1 = chunk + (headerTypeBytes[(longAt(chunk)) & TypeMask]);
-	while (oop1 < GIV(freeStart)) {
+	while ((((usqInt)oop1)) < GIV(freeStart)) {
 		if (!(((longAt(oop1)) & TypeMask) == HeaderTypeFree)) {
 			ok = ok && (checkOkayFields(oop1));
 
@@ -44836,7 +44821,7 @@
 		/* begin oopFromChunk: */
 		chunk1 = startOfMemory();
 		oop1 = chunk1 + (headerTypeBytes[(longAt(chunk1)) & TypeMask]);
-		while (oop1 < GIV(freeStart)) {
+		while ((((usqInt)oop1)) < GIV(freeStart)) {
 			if (!(((longAt(oop1)) & TypeMask) == HeaderTypeFree)) {
 				fmt = (((usqInt) (longAt(oop1))) >> (instFormatFieldLSB())) & 15;
 				if (fmt >= 8) {
@@ -44905,7 +44890,7 @@
 		/* begin oopFromChunk: */
 		chunk = startOfMemory();
 		oop = chunk + (headerTypeBytes[(longAt(chunk)) & TypeMask]);
-		while (oop < GIV(freeStart)) {
+		while ((((usqInt)oop)) < GIV(freeStart)) {
 			if (!(((longAt(oop)) & TypeMask) == HeaderTypeFree)) {
 				if (((((usqInt) (longAt(oop))) >> (compactClassFieldLSB())) & 0x1F) == ClassFloatCompactIndex) {
 					temp = longAt(oop + BaseHeaderSize);
@@ -48672,7 +48657,7 @@
 	/* begin oopFromChunk: */
 	chunk = startOfMemory();
 	oop = chunk + (headerTypeBytes[(longAt(chunk)) & TypeMask]);
-	while (oop < GIV(freeStart)) {
+	while ((((usqInt)oop)) < GIV(freeStart)) {
 		if (!(((longAt(oop)) & TypeMask) == HeaderTypeFree)) {
 			classObj = (((ccIndex1 = (((usqInt) (longAt(oop))) >> (compactClassFieldLSB())) & 0x1F)) == 0
 				? (longAt(oop - BaseHeaderSize)) & AllButTypeMask
@@ -49215,7 +49200,7 @@
 	/* begin oopFromChunk: */
 	chunk = startOfMemory();
 	oop = chunk + (headerTypeBytes[(longAt(chunk)) & TypeMask]);
-	while (oop < GIV(freeStart)) {
+	while ((((usqInt)oop)) < GIV(freeStart)) {
 		if (!(((longAt(oop)) & TypeMask) == HeaderTypeFree)) {
 			if (((((usqInt) (longAt(oop))) >> (instFormatFieldLSB())) & 15) >= 12) {
 				/* begin penultimateLiteralOf: */
@@ -55856,7 +55841,7 @@
 	/* begin oopFromChunk: */
 	chunk = startOfMemory();
 	oop = chunk + (headerTypeBytes[(longAt(chunk)) & TypeMask]);
-	while (oop < GIV(freeStart)) {
+	while ((((usqInt)oop)) < GIV(freeStart)) {
 		if (!(((longAt(oop)) & TypeMask) == HeaderTypeFree)) {
 			hdr = longAt(oop);
 			if ((hdr & MarkBit) != 0) {

Modified: branches/Cog/nscogsrc/vm/cointerp.h
===================================================================
--- branches/Cog/nscogsrc/vm/cointerp.h	2014-10-13 21:24:18 UTC (rev 3103)
+++ branches/Cog/nscogsrc/vm/cointerp.h	2014-10-13 23:35:34 UTC (rev 3104)
@@ -1,5 +1,5 @@
 /* Automatically generated by
-	CCodeGeneratorGlobalStructure VMMaker.oscog-eem.897 uuid: fcc5e4e2-808e-4ab1-97ae-079cc4b9d7b8
+	CCodeGeneratorGlobalStructure VMMaker.oscog-eem.900 uuid: 3d11cf21-4f5f-406a-85ae-ccbc786612a0
  */
 
 

Modified: branches/Cog/nscogsrc/vm/gcc3x-cointerp.c
===================================================================
--- branches/Cog/nscogsrc/vm/gcc3x-cointerp.c	2014-10-13 21:24:18 UTC (rev 3103)
+++ branches/Cog/nscogsrc/vm/gcc3x-cointerp.c	2014-10-13 23:35:34 UTC (rev 3104)
@@ -2,11 +2,11 @@
 
 
 /* Automatically generated by
-	CCodeGeneratorGlobalStructure VMMaker.oscog-eem.897 uuid: fcc5e4e2-808e-4ab1-97ae-079cc4b9d7b8
+	CCodeGeneratorGlobalStructure VMMaker.oscog-eem.900 uuid: 3d11cf21-4f5f-406a-85ae-ccbc786612a0
    from
-	CoInterpreter VMMaker.oscog-eem.897 uuid: fcc5e4e2-808e-4ab1-97ae-079cc4b9d7b8
+	CoInterpreter VMMaker.oscog-eem.900 uuid: 3d11cf21-4f5f-406a-85ae-ccbc786612a0
  */
-static char __buildInfo[] = "CoInterpreter VMMaker.oscog-eem.897 uuid: fcc5e4e2-808e-4ab1-97ae-079cc4b9d7b8 " __DATE__ ;
+static char __buildInfo[] = "CoInterpreter VMMaker.oscog-eem.900 uuid: 3d11cf21-4f5f-406a-85ae-ccbc786612a0 " __DATE__ ;
 char *__interpBuildInfo = __buildInfo;
 
 
@@ -855,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 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 +2087,7 @@
 	/* 574 */ (void (*)(void))0,
 	/* 575 */ (void (*)(void))0,
  0 };
-const char *interpreterVersion = "Newspeak Virtual Machine CoInterpreterPrimitives_VMMaker.oscog-eem.897";
+const char *interpreterVersion = "Newspeak Virtual Machine CoInterpreterPrimitives_VMMaker.oscog-eem.900";
 sqInt minBackwardJumpCountForCompile = MinBackwardJumpCountForCompile /* 40 */;
 volatile int sendTrace;
 
@@ -18922,7 +18922,8 @@
 	}
 	printFrameOopat("receiver", rcvrAddress);
 	topThing = longAt(theSP);
-	if (((topThing >= theMethod) && (topThing <= theMethodEnd))) {
+	if (((((usqInt) topThing)) >= (((usqInt) theMethod)))
+	 && ((((usqInt) topThing)) < (((usqInt) theMethodEnd)))) {
 		for (addr = (rcvrAddress - BytesPerWord); addr >= (theSP + BytesPerWord); addr += (-BytesPerWord)) {
 			index = ((rcvrAddress - addr) / BytesPerWord) + numArgs;
 			if (index <= numTemps) {
@@ -20918,7 +20919,7 @@
 	/* begin oopFromChunk: */
 	chunk = startOfMemory();
 	oop = chunk + (headerTypeBytes[(longAt(chunk)) & TypeMask]);
-	while (oop < GIV(freeStart)) {
+	while ((((usqInt)oop)) < GIV(freeStart)) {
 		if (!(((longAt(oop)) & TypeMask) == HeaderTypeFree)) {
 			fmt = (((usqInt) (longAt(oop))) >> (instFormatFieldLSB())) & 15;
 			if ((fmt == 3)
@@ -22377,7 +22378,7 @@
 		/* begin oopFromChunk: */
 		chunk = startOfMemory();
 		oop1 = chunk + (headerTypeBytes[(longAt(chunk)) & TypeMask]);
-		while (oop1 < GIV(freeStart)) {
+		while ((((usqInt)oop1)) < GIV(freeStart)) {
 			if (!(((longAt(oop1)) & TypeMask) == HeaderTypeFree)) {
 				if ((((((usqInt) (longAt(oop1))) >> (compactClassFieldLSB())) & 0x1F) == ClassMethodContextCompactIndex)
 				 && ((longAt((oop1 + BaseHeaderSize) + (MethodIndex << ShiftForWord))) == methodObj)) {
@@ -27730,7 +27731,7 @@
 	/* begin oopFromChunk: */
 	chunk = startOfMemory();
 	oop1 = chunk + (headerTypeBytes[(longAt(chunk)) & TypeMask]);
-	while (oop1 < GIV(freeStart)) {
+	while ((((usqInt)oop1)) < GIV(freeStart)) {
 		if (!(((longAt(oop1)) & TypeMask) == HeaderTypeFree)) {
 			if (!(((longAt(oop1)) & TypeMask) == HeaderTypeFree)) {
 				if (((((usqInt) (longAt(oop1))) >> (instFormatFieldLSB())) & 15) >= 12) {
@@ -33691,7 +33692,7 @@
 	/* begin oopFromChunk: */
 	chunk = startOfMemory();
 	oop1 = chunk + (headerTypeBytes[(longAt(chunk)) & TypeMask]);
-	while (oop1 < GIV(freeStart)) {
+	while ((((usqInt)oop1)) < GIV(freeStart)) {
 		if (!(((longAt(oop1)) & TypeMask) == HeaderTypeFree)) {
 			if (!(((longAt(oop1)) & TypeMask) == HeaderTypeFree)) {
 				if (((((usqInt) (longAt(oop1))) >> (instFormatFieldLSB())) & 15) >= 12) {
@@ -34870,7 +34871,7 @@
 	/* begin oopFromChunk: */
 	chunk = startOfMemory();
 	oop = chunk + (headerTypeBytes[(longAt(chunk)) & TypeMask]);
-	while (oop < GIV(freeStart)) {
+	while ((((usqInt)oop)) < GIV(freeStart)) {
 		if (!(((longAt(oop)) & TypeMask) == HeaderTypeFree)) {
 			if (((longAt(oop)) & MarkBit) != 0) {
 				return 0;
@@ -36780,17 +36781,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;
 
@@ -36801,21 +36800,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;
@@ -36830,7 +36815,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)) {
 
@@ -36884,18 +36869,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 = ((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)) {
@@ -38768,7 +38753,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;
@@ -38784,7 +38769,7 @@
 			? (longAt(oop - (BytesPerWord * 2))) & LongSizeMask
 			: header & SizeMask);
 	}
-	return ((oop + sz) >= GIV(freeStart)
+	return ((((usqInt)(oop + sz))) >= GIV(freeStart)
 		? GIV(freeStart)
 		: (oop + sz) + (headerTypeBytes[(longAt(oop + sz)) & TypeMask]));
 }
@@ -38807,7 +38792,7 @@
 	if ((oop & 1)) {
 		return null;
 	}
-	if (!(((oop >= (startOfMemory())) && (oop <= GIV(freeStart))))) {
+	if (!(oopisGreaterThanOrEqualToandLessThan(oop, startOfMemory(), GIV(freeStart)))) {
 		return null;
 	}
 	if ((oop & (BytesPerWord - 1)) != 0) {
@@ -39743,7 +39728,7 @@
 	/* begin oopFromChunk: */
 	chunk = startOfMemory();
 	oop = chunk + (headerTypeBytes[(longAt(chunk)) & TypeMask]);
-	while (oop < GIV(freeStart)) {
+	while ((((usqInt)oop)) < GIV(freeStart)) {
 		if (!(((longAt(oop)) & TypeMask) == HeaderTypeFree)) {
 			count += 1;
 
@@ -43551,7 +43536,7 @@
 	/* begin oopFromChunk: */
 	chunk = startOfMemory();
 	oop1 = chunk + (headerTypeBytes[(longAt(chunk)) & TypeMask]);
-	while (oop1 < GIV(freeStart)) {
+	while ((((usqInt)oop1)) < GIV(freeStart)) {
 		if (!(((longAt(oop1)) & TypeMask) == HeaderTypeFree)) {
 			ok = ok && (checkOkayFields(oop1));
 
@@ -44845,7 +44830,7 @@
 		/* begin oopFromChunk: */
 		chunk1 = startOfMemory();
 		oop1 = chunk1 + (headerTypeBytes[(longAt(chunk1)) & TypeMask]);
-		while (oop1 < GIV(freeStart)) {
+		while ((((usqInt)oop1)) < GIV(freeStart)) {
 			if (!(((longAt(oop1)) & TypeMask) == HeaderTypeFree)) {
 				fmt = (((usqInt) (longAt(oop1))) >> (instFormatFieldLSB())) & 15;
 				if (fmt >= 8) {
@@ -44914,7 +44899,7 @@
 		/* begin oopFromChunk: */
 		chunk = startOfMemory();
 		oop = chunk + (headerTypeBytes[(longAt(chunk)) & TypeMask]);
-		while (oop < GIV(freeStart)) {
+		while ((((usqInt)oop)) < GIV(freeStart)) {
 			if (!(((longAt(oop)) & TypeMask) == HeaderTypeFree)) {
 				if (((((usqInt) (longAt(oop))) >> (compactClassFieldLSB())) & 0x1F) == ClassFloatCompactIndex) {
 					temp = longAt(oop + BaseHeaderSize);
@@ -48681,7 +48666,7 @@
 	/* begin oopFromChunk: */
 	chunk = startOfMemory();
 	oop = chunk + (headerTypeBytes[(longAt(chunk)) & TypeMask]);
-	while (oop < GIV(freeStart)) {
+	while ((((usqInt)oop)) < GIV(freeStart)) {
 		if (!(((longAt(oop)) & TypeMask) == HeaderTypeFree)) {
 			classObj = (((ccIndex1 = (((usqInt) (longAt(oop))) >> (compactClassFieldLSB())) & 0x1F)) == 0
 				? (longAt(oop - BaseHeaderSize)) & AllButTypeMask
@@ -49224,7 +49209,7 @@
 	/* begin oopFromChunk: */
 	chunk = startOfMemory();
 	oop = chunk + (headerTypeBytes[(longAt(chunk)) & TypeMask]);
-	while (oop < GIV(freeStart)) {
+	while ((((usqInt)oop)) < GIV(freeStart)) {
 		if (!(((longAt(oop)) & TypeMask) == HeaderTypeFree)) {
 			if (((((usqInt) (longAt(oop))) >> (instFormatFieldLSB())) & 15) >= 12) {
 				/* begin penultimateLiteralOf: */
@@ -55865,7 +55850,7 @@
 	/* begin oopFromChunk: */
 	chunk = startOfMemory();
 	oop = chunk + (headerTypeBytes[(longAt(chunk)) & TypeMask]);
-	while (oop < GIV(freeStart)) {
+	while ((((usqInt)oop)) < GIV(freeStart)) {
 		if (!(((longAt(oop)) & TypeMask) == HeaderTypeFree)) {
 			hdr = longAt(oop);
 			if ((hdr & MarkBit) != 0) {

Modified: branches/Cog/nsspursrc/vm/cointerp.c
===================================================================
--- branches/Cog/nsspursrc/vm/cointerp.c	2014-10-13 21:24:18 UTC (rev 3103)
+++ branches/Cog/nsspursrc/vm/cointerp.c	2014-10-13 23:35:34 UTC (rev 3104)
@@ -1,9 +1,9 @@
 /* Automatically generated by
-	CCodeGeneratorGlobalStructure VMMaker.oscog-eem.897 uuid: fcc5e4e2-808e-4ab1-97ae-079cc4b9d7b8
+	CCodeGeneratorGlobalStructure VMMaker.oscog-eem.900 uuid: 3d11cf21-4f5f-406a-85ae-ccbc786612a0
    from
-	CoInterpreter VMMaker.oscog-eem.897 uuid: fcc5e4e2-808e-4ab1-97ae-079cc4b9d7b8
+	CoInterpreter VMMaker.oscog-eem.900 uuid: 3d11cf21-4f5f-406a-85ae-ccbc786612a0
  */
-static char __buildInfo[] = "CoInterpreter VMMaker.oscog-eem.897 uuid: fcc5e4e2-808e-4ab1-97ae-079cc4b9d7b8 " __DATE__ ;
+static char __buildInfo[] = "CoInterpreter VMMaker.oscog-eem.900 uuid: 3d11cf21-4f5f-406a-85ae-ccbc786612a0 " __DATE__ ;
 char *__interpBuildInfo = __buildInfo;
 
 
@@ -1125,7 +1125,6 @@
 static sqInt pushonObjStack(sqInt objOop, sqInt objStack) NoDbgRegParms;
 static sqInt rawHashBitsOf(sqInt objOop) NoDbgRegParms;
 static void rebuildFreeListsForPigCompact(void);
-static sqInt remapBufferCount(void);
 sqInt remapObj(sqInt objOop);
 sqInt rememberedBitShift(void);
 sqInt removeGCRoot(sqInt *varLoc);
@@ -2323,7 +2322,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.897";
+const char *interpreterVersion = "Newspeak Virtual Machine CoInterpreterPrimitives_VMMaker.oscog-eem.900";
 sqInt minBackwardJumpCountForCompile = MinBackwardJumpCountForCompile /* 40 */;
 volatile int sendTrace;
 
@@ -2364,6 +2363,7 @@
 #define memory() GIV(memory)
 #define newSpaceLimit() GIV(newSpaceLimit)
 #define oldSpaceStart() GIV(oldSpaceStart)
+#define remapBufferCount() GIV(remapBufferCount)
 #define numSegments() GIV(numSegments)
 #define checkAllocFiller() GIV(checkAllocFiller)
 #define dispatchFunctionPointer(aFunctionPointer) (aFunctionPointer)()
@@ -21362,7 +21362,8 @@
 	}
 	printFrameOopat("receiver", rcvrAddress);
 	topThing = longAt(theSP);
-	if (((topThing >= theMethod) && (topThing <= theMethodEnd))) {
+	if (((((usqInt) topThing)) >= (((usqInt) theMethod)))
+	 && ((((usqInt) topThing)) < (((usqInt) theMethodEnd)))) {
 		for (addr = (rcvrAddress - BytesPerWord); addr >= (theSP + BytesPerWord); addr += (-BytesPerWord)) {
 			index = ((rcvrAddress - addr) / BytesPerWord) + numArgs;
 			if (index <= numTemps) {
@@ -49218,7 +49219,7 @@
 	if (!(GIV(tempOop) == 0)) {
 		markAndTrace(GIV(tempOop));
 	}
-	for (i2 = 1, iLimiT = GIV(remapBufferCount); i2 <= iLimiT; i2 += 1) {
+	for (i2 = 1, iLimiT = (remapBufferCount()); i2 <= iLimiT; i2 += 1) {
 		oop1 = GIV(remapBuffer)[i2];
 		if (!((oop1 & 1))) {
 			markAndTrace(oop1);
@@ -51829,13 +51830,7 @@
 	assert(GIV(totalFreeOldSpace) == (totalFreeListBytes()));
 }
 
-static sqInt
-remapBufferCount(void)
-{   DECL_MAYBE_SQ_GLOBAL_STRUCT
-	return GIV(remapBufferCount);
-}
 
-
 /*	Scavenge or simply follow objOop. Answer the new location of objOop.
 	The send should have been guarded by a send of shouldRemapOop:.
 	The method is called remapObj: for compatibility with ObjectMemory. */
@@ -54308,7 +54303,7 @@
 			ok = ok && (checkOkayFields(GIV(methodCache)[i + MethodCacheMethod]));
 		}
 	}
-	for (i = 1, iLimiT = GIV(remapBufferCount); i <= iLimiT; i += 1) {
+	for (i = 1, iLimiT = (remapBufferCount()); i <= iLimiT; i += 1) {
 		oop = GIV(remapBuffer)[i];
 		if (!((oop & 1))) {
 			ok = ok && (checkOkayFields(oop));

Modified: branches/Cog/nsspursrc/vm/cointerp.h
===================================================================
--- branches/Cog/nsspursrc/vm/cointerp.h	2014-10-13 21:24:18 UTC (rev 3103)
+++ branches/Cog/nsspursrc/vm/cointerp.h	2014-10-13 23:35:34 UTC (rev 3104)
@@ -1,5 +1,5 @@
 /* Automatically generated by
-	CCodeGeneratorGlobalStructure VMMaker.oscog-eem.897 uuid: fcc5e4e2-808e-4ab1-97ae-079cc4b9d7b8
+	CCodeGeneratorGlobalStructure VMMaker.oscog-eem.900 uuid: 3d11cf21-4f5f-406a-85ae-ccbc786612a0
  */
 
 

Modified: branches/Cog/nsspursrc/vm/gcc3x-cointerp.c
===================================================================
--- branches/Cog/nsspursrc/vm/gcc3x-cointerp.c	2014-10-13 21:24:18 UTC (rev 3103)
+++ branches/Cog/nsspursrc/vm/gcc3x-cointerp.c	2014-10-13 23:35:34 UTC (rev 3104)
@@ -2,11 +2,11 @@
 
 
 /* Automatically generated by
-	CCodeGeneratorGlobalStructure VMMaker.oscog-eem.897 uuid: fcc5e4e2-808e-4ab1-97ae-079cc4b9d7b8
+	CCodeGeneratorGlobalStructure VMMaker.oscog-eem.900 uuid: 3d11cf21-4f5f-406a-85ae-ccbc786612a0
    from
-	CoInterpreter VMMaker.oscog-eem.897 uuid: fcc5e4e2-808e-4ab1-97ae-079cc4b9d7b8
+	CoInterpreter VMMaker.oscog-eem.900 uuid: 3d11cf21-4f5f-406a-85ae-ccbc786612a0
  */
-static char __buildInfo[] = "CoInterpreter VMMaker.oscog-eem.897 uuid: fcc5e4e2-808e-4ab1-97ae-079cc4b9d7b8 " __DATE__ ;
+static char __buildInfo[] = "CoInterpreter VMMaker.oscog-eem.900 uuid: 3d11cf21-4f5f-406a-85ae-ccbc786612a0 " __DATE__ ;
 char *__interpBuildInfo = __buildInfo;
 
 
@@ -1128,7 +1128,6 @@
 static sqInt pushonObjStack(sqInt objOop, sqInt objStack) NoDbgRegParms;
 static sqInt rawHashBitsOf(sqInt objOop) NoDbgRegParms;
 static void rebuildFreeListsForPigCompact(void);
-static sqInt remapBufferCount(void);
 sqInt remapObj(sqInt objOop);
 sqInt rememberedBitShift(void);
 sqInt removeGCRoot(sqInt *varLoc);
@@ -2326,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 = "Newspeak Virtual Machine CoInterpreterPrimitives_VMMaker.oscog-eem.897";
+const char *interpreterVersion = "Newspeak Virtual Machine CoInterpreterPrimitives_VMMaker.oscog-eem.900";
 sqInt minBackwardJumpCountForCompile = MinBackwardJumpCountForCompile /* 40 */;
 volatile int sendTrace;
 
@@ -2367,6 +2366,7 @@
 #define memory() GIV(memory)
 #define newSpaceLimit() GIV(newSpaceLimit)
 #define oldSpaceStart() GIV(oldSpaceStart)
+#define remapBufferCount() GIV(remapBufferCount)
 #define numSegments() GIV(numSegments)
 #define checkAllocFiller() GIV(checkAllocFiller)
 #define dispatchFunctionPointer(aFunctionPointer) (aFunctionPointer)()
@@ -21371,7 +21371,8 @@
 	}
 	printFrameOopat("receiver", rcvrAddress);
 	topThing = longAt(theSP);
-	if (((topThing >= theMethod) && (topThing <= theMethodEnd))) {
+	if (((((usqInt) topThing)) >= (((usqInt) theMethod)))
+	 && ((((usqInt) topThing)) < (((usqInt) theMethodEnd)))) {
 		for (addr = (rcvrAddress - BytesPerWord); addr >= (theSP + BytesPerWord); addr += (-BytesPerWord)) {
 			index = ((rcvrAddress - addr) / BytesPerWord) + numArgs;
 			if (index <= numTemps) {
@@ -49227,7 +49228,7 @@
 	if (!(GIV(tempOop) == 0)) {
 		markAndTrace(GIV(tempOop));
 	}
-	for (i2 = 1, iLimiT = GIV(remapBufferCount); i2 <= iLimiT; i2 += 1) {
+	for (i2 = 1, iLimiT = (remapBufferCount()); i2 <= iLimiT; i2 += 1) {
 		oop1 = GIV(remapBuffer)[i2];
 		if (!((oop1 & 1))) {
 			markAndTrace(oop1);
@@ -51838,13 +51839,7 @@
 	assert(GIV(totalFreeOldSpace) == (totalFreeListBytes()));
 }
 
-static sqInt
-remapBufferCount(void)
-{   DECL_MAYBE_SQ_GLOBAL_STRUCT
-	return GIV(remapBufferCount);
-}
 
-
 /*	Scavenge or simply follow objOop. Answer the new location of objOop.
 	The send should have been guarded by a send of shouldRemapOop:.
 	The method is called remapObj: for compatibility with ObjectMemory. */
@@ -54317,7 +54312,7 @@
 			ok = ok && (checkOkayFields(GIV(methodCache)[i + MethodCacheMethod]));
 		}
 	}
-	for (i = 1, iLimiT = GIV(remapBufferCount); i <= iLimiT; i += 1) {
+	for (i = 1, iLimiT = (remapBufferCount()); i <= iLimiT; i += 1) {
 		oop = GIV(remapBuffer)[i];
 		if (!((oop & 1))) {
 			ok = ok && (checkOkayFields(oop));

Modified: branches/Cog/nsspurstacksrc/vm/gcc3x-interp.c
===================================================================
--- branches/Cog/nsspurstacksrc/vm/gcc3x-interp.c	2014-10-13 21:24:18 UTC (rev 3103)
+++ branches/Cog/nsspurstacksrc/vm/gcc3x-interp.c	2014-10-13 23:35:34 UTC (rev 3104)
@@ -2,11 +2,11 @@
 
 
 /* Automatically generated by
-	CCodeGeneratorGlobalStructure VMMaker.oscog-eem.897 uuid: fcc5e4e2-808e-4ab1-97ae-079cc4b9d7b8
+	CCodeGeneratorGlobalStructure VMMaker.oscog-eem.898 uuid: c7464fab-57af-4c31-955e-20f718082965
    from
-	StackInterpreter VMMaker.oscog-eem.897 uuid: fcc5e4e2-808e-4ab1-97ae-079cc4b9d7b8
+	StackInterpreter VMMaker.oscog-eem.898 uuid: c7464fab-57af-4c31-955e-20f718082965
  */
-static char __buildInfo[] = "StackInterpreter VMMaker.oscog-eem.897 uuid: fcc5e4e2-808e-4ab1-97ae-079cc4b9d7b8 " __DATE__ ;
+static char __buildInfo[] = "StackInterpreter VMMaker.oscog-eem.898 uuid: c7464fab-57af-4c31-955e-20f718082965 " __DATE__ ;
 char *__interpBuildInfo = __buildInfo;
 
 
@@ -876,7 +876,6 @@
 static sqInt pushonObjStack(sqInt objOop, sqInt objStack) NoDbgRegParms;
 static sqInt rawHashBitsOf(sqInt objOop) NoDbgRegParms;
 static void rebuildFreeListsForPigCompact(void);
-static sqInt remapBufferCount(void);
 sqInt remapObj(sqInt objOop);
 sqInt rememberedBitShift(void);
 sqInt removeGCRoot(sqInt *varLoc);
@@ -2071,7 +2070,7 @@
  0 };
 char * breakSelector;
 sqInt breakSelectorLength = -1;
-const char *interpreterVersion = "Newspeak Virtual Machine StackInterpreterPrimitives_VMMaker.oscog-eem.897";
+const char *interpreterVersion = "Newspeak Virtual Machine StackInterpreterPrimitives_VMMaker.oscog-eem.898";
 volatile int sendTrace;
 sqInt suppressHeartbeatFlag;
 
@@ -2091,6 +2090,7 @@
 #define memory() GIV(memory)
 #define newSpaceLimit() GIV(newSpaceLimit)
 #define oldSpaceStart() GIV(oldSpaceStart)
+#define remapBufferCount() GIV(remapBufferCount)
 #define startOfMemory() GIV(memory)
 #define numSegments() GIV(numSegments)
 #define checkAllocFiller() GIV(checkAllocFiller)
@@ -37844,7 +37844,7 @@
 	if (!(GIV(tempOop) == 0)) {
 		markAndTrace(GIV(tempOop));
 	}
-	for (i3 = 1, iLimiT = GIV(remapBufferCount); i3 <= iLimiT; i3 += 1) {
+	for (i3 = 1, iLimiT = (remapBufferCount()); i3 <= iLimiT; i3 += 1) {
 		oop1 = GIV(remapBuffer)[i3];
 		if (!((oop1 & 1))) {
 			markAndTrace(oop1);
@@ -40425,13 +40425,7 @@
 	assert(GIV(totalFreeOldSpace) == (totalFreeListBytes()));
 }
 
-static sqInt
-remapBufferCount(void)
-{   DECL_MAYBE_SQ_GLOBAL_STRUCT
-	return GIV(remapBufferCount);
-}
 
-
 /*	Scavenge or simply follow objOop. Answer the new location of objOop.
 	The send should have been guarded by a send of shouldRemapOop:.
 	The method is called remapObj: for compatibility with ObjectMemory. */
@@ -43177,7 +43171,7 @@
 			ok = ok && (checkOkayFields(GIV(methodCache)[i + MethodCacheMethod]));
 		}
 	}
-	for (i = 1, iLimiT = GIV(remapBufferCount); i <= iLimiT; i += 1) {
+	for (i = 1, iLimiT = (remapBufferCount()); i <= iLimiT; i += 1) {
 		oop = GIV(remapBuffer)[i];
 		if (!((oop & 1))) {
 			ok = ok && (checkOkayFields(oop));

Modified: branches/Cog/nsspurstacksrc/vm/interp.c
===================================================================
--- branches/Cog/nsspurstacksrc/vm/interp.c	2014-10-13 21:24:18 UTC (rev 3103)
+++ branches/Cog/nsspurstacksrc/vm/interp.c	2014-10-13 23:35:34 UTC (rev 3104)
@@ -1,9 +1,9 @@
 /* Automatically generated by
-	CCodeGeneratorGlobalStructure VMMaker.oscog-eem.897 uuid: fcc5e4e2-808e-4ab1-97ae-079cc4b9d7b8
+	CCodeGeneratorGlobalStructure VMMaker.oscog-eem.898 uuid: c7464fab-57af-4c31-955e-20f718082965
    from
-	StackInterpreter VMMaker.oscog-eem.897 uuid: fcc5e4e2-808e-4ab1-97ae-079cc4b9d7b8
+	StackInterpreter VMMaker.oscog-eem.898 uuid: c7464fab-57af-4c31-955e-20f718082965
  */
-static char __buildInfo[] = "StackInterpreter VMMaker.oscog-eem.897 uuid: fcc5e4e2-808e-4ab1-97ae-079cc4b9d7b8 " __DATE__ ;
+static char __buildInfo[] = "StackInterpreter VMMaker.oscog-eem.898 uuid: c7464fab-57af-4c31-955e-20f718082965 " __DATE__ ;
 char *__interpBuildInfo = __buildInfo;
 
 
@@ -873,7 +873,6 @@
 static sqInt pushonObjStack(sqInt objOop, sqInt objStack) NoDbgRegParms;
 static sqInt rawHashBitsOf(sqInt objOop) NoDbgRegParms;
 static void rebuildFreeListsForPigCompact(void);
-static sqInt remapBufferCount(void);
 sqInt remapObj(sqInt objOop);
 sqInt rememberedBitShift(void);
 sqInt removeGCRoot(sqInt *varLoc);
@@ -2068,7 +2067,7 @@
  0 };
 char * breakSelector;
 sqInt breakSelectorLength = -1;
-const char *interpreterVersion = "Newspeak Virtual Machine StackInterpreterPrimitives_VMMaker.oscog-eem.897";
+const char *interpreterVersion = "Newspeak Virtual Machine StackInterpreterPrimitives_VMMaker.oscog-eem.898";
 volatile int sendTrace;
 sqInt suppressHeartbeatFlag;
 
@@ -2088,6 +2087,7 @@
 #define memory() GIV(memory)
 #define newSpaceLimit() GIV(newSpaceLimit)
 #define oldSpaceStart() GIV(oldSpaceStart)
+#define remapBufferCount() GIV(remapBufferCount)
 #define startOfMemory() GIV(memory)
 #define numSegments() GIV(numSegments)
 #define checkAllocFiller() GIV(checkAllocFiller)
@@ -37835,7 +37835,7 @@
 	if (!(GIV(tempOop) == 0)) {
 		markAndTrace(GIV(tempOop));
 	}
-	for (i3 = 1, iLimiT = GIV(remapBufferCount); i3 <= iLimiT; i3 += 1) {
+	for (i3 = 1, iLimiT = (remapBufferCount()); i3 <= iLimiT; i3 += 1) {
 		oop1 = GIV(remapBuffer)[i3];
 		if (!((oop1 & 1))) {
 			markAndTrace(oop1);
@@ -40416,13 +40416,7 @@
 	assert(GIV(totalFreeOldSpace) == (totalFreeListBytes()));
 }
 
-static sqInt
-remapBufferCount(void)
-{   DECL_MAYBE_SQ_GLOBAL_STRUCT
-	return GIV(remapBufferCount);
-}
 
-
 /*	Scavenge or simply follow objOop. Answer the new location of objOop.
 	The send should have been guarded by a send of shouldRemapOop:.
 	The method is called remapObj: for compatibility with ObjectMemory. */
@@ -43168,7 +43162,7 @@
 			ok = ok && (checkOkayFields(GIV(methodCache)[i + MethodCacheMethod]));
 		}
 	}
-	for (i = 1, iLimiT = GIV(remapBufferCount); i <= iLimiT; i += 1) {
+	for (i = 1, iLimiT = (remapBufferCount()); i <= iLimiT; i += 1) {
 		oop = GIV(remapBuffer)[i];
 		if (!((oop & 1))) {
 			ok = ok && (checkOkayFields(oop));


Property changes on: branches/Cog/platforms/Cross/vm/sqSCCSVersion.h
___________________________________________________________________
Modified: checkindate
   - Mon Oct 13 14:24:26 PDT 2014
   + Mon Oct 13 16:35:00 PDT 2014

Modified: branches/Cog/sistasrc/vm/cointerp.c
===================================================================
--- branches/Cog/sistasrc/vm/cointerp.c	2014-10-13 21:24:18 UTC (rev 3103)
+++ branches/Cog/sistasrc/vm/cointerp.c	2014-10-13 23:35:34 UTC (rev 3104)
@@ -1,9 +1,9 @@
 /* Automatically generated by
-	CCodeGeneratorGlobalStructure VMMaker.oscog-eem.897 uuid: fcc5e4e2-808e-4ab1-97ae-079cc4b9d7b8
+	CCodeGeneratorGlobalStructure VMMaker.oscog-eem.900 uuid: 3d11cf21-4f5f-406a-85ae-ccbc786612a0
    from
-	CoInterpreter VMMaker.oscog-eem.897 uuid: fcc5e4e2-808e-4ab1-97ae-079cc4b9d7b8
+	CoInterpreter VMMaker.oscog-eem.900 uuid: 3d11cf21-4f5f-406a-85ae-ccbc786612a0
  */
-static char __buildInfo[] = "CoInterpreter VMMaker.oscog-eem.897 uuid: fcc5e4e2-808e-4ab1-97ae-079cc4b9d7b8 " __DATE__ ;
+static char __buildInfo[] = "CoInterpreter VMMaker.oscog-eem.900 uuid: 3d11cf21-4f5f-406a-85ae-ccbc786612a0 " __DATE__ ;
 char *__interpBuildInfo = __buildInfo;
 
 
@@ -851,7 +851,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;
@@ -2081,7 +2081,7 @@
 	/* 574 */ (void (*)(void))0,
 	/* 575 */ (void (*)(void))0,
  0 };
-const char *interpreterVersion = "Croquet Closure Cog VM [CoInterpreterPrimitives VMMaker.oscog-eem.897]";
+const char *interpreterVersion = "Croquet Closure Cog VM [CoInterpreterPrimitives VMMaker.oscog-eem.900]";
 sqInt minBackwardJumpCountForCompile = MinBackwardJumpCountForCompile /* 40 */;
 volatile int sendTrace;
 
@@ -18932,7 +18932,8 @@
 	}
 	printFrameOopat("receiver", rcvrAddress);
 	topThing = longAt(theSP);
-	if (((topThing >= theMethod) && (topThing <= theMethodEnd))) {
+	if (((((usqInt) topThing)) >= (((usqInt) theMethod)))
+	 && ((((usqInt) topThing)) < (((usqInt) theMethodEnd)))) {
 		for (addr = (rcvrAddress - BytesPerWord); addr >= (theSP + BytesPerWord); addr += (-BytesPerWord)) {
 			index = ((rcvrAddress - addr) / BytesPerWord) + numArgs;
 			if (index <= numTemps) {
@@ -20923,7 +20924,7 @@
 	/* begin oopFromChunk: */
 	chunk = startOfMemory();
 	oop = chunk + (headerTypeBytes[(longAt(chunk)) & TypeMask]);
-	while (oop < GIV(freeStart)) {
+	while ((((usqInt)oop)) < GIV(freeStart)) {
 		if (!(((longAt(oop)) & TypeMask) == HeaderTypeFree)) {
 			fmt = (((usqInt) (longAt(oop))) >> (instFormatFieldLSB())) & 15;
 			if ((fmt == 3)
@@ -22446,7 +22447,7 @@
 		/* begin oopFromChunk: */
 		chunk = startOfMemory();
 		oop1 = chunk + (headerTypeBytes[(longAt(chunk)) & TypeMask]);
-		while (oop1 < GIV(freeStart)) {
+		while ((((usqInt)oop1)) < GIV(freeStart)) {
 			if (!(((longAt(oop1)) & TypeMask) == HeaderTypeFree)) {
 				if ((((((usqInt) (longAt(oop1))) >> (compactClassFieldLSB())) & 0x1F) == ClassMethodContextCompactIndex)
 				 && ((longAt((oop1 + BaseHeaderSize) + (MethodIndex << ShiftForWord))) == methodObj)) {
@@ -27799,7 +27800,7 @@
 	/* begin oopFromChunk: */
 	chunk = startOfMemory();
 	oop1 = chunk + (headerTypeBytes[(longAt(chunk)) & TypeMask]);
-	while (oop1 < GIV(freeStart)) {
+	while ((((usqInt)oop1)) < GIV(freeStart)) {
 		if (!(((longAt(oop1)) & TypeMask) == HeaderTypeFree)) {
 			if (!(((longAt(oop1)) & TypeMask) == HeaderTypeFree)) {
 				if (((((usqInt) (longAt(oop1))) >> (instFormatFieldLSB())) & 15) >= 12) {
@@ -33753,7 +33754,7 @@
 	/* begin oopFromChunk: */
 	chunk = startOfMemory();
 	oop1 = chunk + (headerTypeBytes[(longAt(chunk)) & TypeMask]);
-	while (oop1 < GIV(freeStart)) {
+	while ((((usqInt)oop1)) < GIV(freeStart)) {
 		if (!(((longAt(oop1)) & TypeMask) == HeaderTypeFree)) {
 			if (!(((longAt(oop1)) & TypeMask) == HeaderTypeFree)) {
 				if (((((usqInt) (longAt(oop1))) >> (instFormatFieldLSB())) & 15) >= 12) {
@@ -34932,7 +34933,7 @@
 	/* begin oopFromChunk: */
 	chunk = startOfMemory();
 	oop = chunk + (headerTypeBytes[(longAt(chunk)) & TypeMask]);
-	while (oop < GIV(freeStart)) {
+	while ((((usqInt)oop)) < GIV(freeStart)) {
 		if (!(((longAt(oop)) & TypeMask) == HeaderTypeFree)) {
 			if (((longAt(oop)) & MarkBit) != 0) {
 				return 0;
@@ -36842,15 +36843,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;
 
@@ -36861,7 +36864,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;
@@ -36876,7 +36893,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)) {
 
@@ -36930,18 +36947,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 = ((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)) {
@@ -38814,7 +38831,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;
@@ -38830,7 +38847,7 @@
 			? (longAt(oop - (BytesPerWord * 2))) & LongSizeMask
 			: header & SizeMask);
 	}
-	return ((oop + sz) >= GIV(freeStart)
+	return ((((usqInt)(oop + sz))) >= GIV(freeStart)
 		? GIV(freeStart)
 		: (oop + sz) + (headerTypeBytes[(longAt(oop + sz)) & TypeMask]));
 }
@@ -38853,7 +38870,7 @@
 	if ((oop & 1)) {
 		return null;
 	}
-	if (!(((oop >= (startOfMemory())) && (oop <= GIV(freeStart))))) {
+	if (!(oopisGreaterThanOrEqualToandLessThan(oop, startOfMemory(), GIV(freeStart)))) {
 		return null;
 	}
 	if ((oop & (BytesPerWord - 1)) != 0) {
@@ -39789,7 +39806,7 @@
 	/* begin oopFromChunk: */
 	chunk = startOfMemory();
 	oop = chunk + (headerTypeBytes[(longAt(chunk)) & TypeMask]);
-	while (oop < GIV(freeStart)) {
+	while ((((usqInt)oop)) < GIV(freeStart)) {
 		if (!(((longAt(oop)) & TypeMask) == HeaderTypeFree)) {
 			count += 1;
 
@@ -43597,7 +43614,7 @@
 	/* begin oopFromChunk: */
 	chunk = startOfMemory();
 	oop1 = chunk + (headerTypeBytes[(longAt(chunk)) & TypeMask]);
-	while (oop1 < GIV(freeStart)) {
+	while ((((usqInt)oop1)) < GIV(freeStart)) {
 		if (!(((longAt(oop1)) & TypeMask) == HeaderTypeFree)) {
 			ok = ok && (checkOkayFields(oop1));
 
@@ -44845,7 +44862,7 @@
 		/* begin oopFromChunk: */
 		chunk1 = startOfMemory();
 		oop1 = chunk1 + (headerTypeBytes[(longAt(chunk1)) & TypeMask]);
-		while (oop1 < GIV(freeStart)) {
+		while ((((usqInt)oop1)) < GIV(freeStart)) {
 			if (!(((longAt(oop1)) & TypeMask) == HeaderTypeFree)) {
 				fmt = (((usqInt) (longAt(oop1))) >> (instFormatFieldLSB())) & 15;
 				if (fmt >= 8) {
@@ -44914,7 +44931,7 @@
 		/* begin oopFromChunk: */
 		chunk = startOfMemory();
 		oop = chunk + (headerTypeBytes[(longAt(chunk)) & TypeMask]);
-		while (oop < GIV(freeStart)) {
+		while ((((usqInt)oop)) < GIV(freeStart)) {
 			if (!(((longAt(oop)) & TypeMask) == HeaderTypeFree)) {
 				if (((((usqInt) (longAt(oop))) >> (compactClassFieldLSB())) & 0x1F) == ClassFloatCompactIndex) {
 					temp = longAt(oop + BaseHeaderSize);
@@ -48652,7 +48669,7 @@
 	/* begin oopFromChunk: */
 	chunk = startOfMemory();
 	oop = chunk + (headerTypeBytes[(longAt(chunk)) & TypeMask]);
-	while (oop < GIV(freeStart)) {
+	while ((((usqInt)oop)) < GIV(freeStart)) {
 		if (!(((longAt(oop)) & TypeMask) == HeaderTypeFree)) {
 			classObj = (((ccIndex1 = (((usqInt) (longAt(oop))) >> (compactClassFieldLSB())) & 0x1F)) == 0
 				? (longAt(oop - BaseHeaderSize)) & AllButTypeMask
@@ -49195,7 +49212,7 @@
 	/* begin oopFromChunk: */
 	chunk = startOfMemory();
 	oop = chunk + (headerTypeBytes[(longAt(chunk)) & TypeMask]);
-	while (oop < GIV(freeStart)) {
+	while ((((usqInt)oop)) < GIV(freeStart)) {
 		if (!(((longAt(oop)) & TypeMask) == HeaderTypeFree)) {
 			if (((((usqInt) (longAt(oop))) >> (instFormatFieldLSB())) & 15) >= 12) {
 				/* begin penultimateLiteralOf: */
@@ -55836,7 +55853,7 @@
 	/* begin oopFromChunk: */
 	chunk = startOfMemory();
 	oop = chunk + (headerTypeBytes[(longAt(chunk)) & TypeMask]);
-	while (oop < GIV(freeStart)) {
+	while ((((usqInt)oop)) < GIV(freeStart)) {
 		if (!(((longAt(oop)) & TypeMask) == HeaderTypeFree)) {
 			hdr = longAt(oop);
 			if ((hdr & MarkBit) != 0) {

Modified: branches/Cog/sistasrc/vm/cointerp.h
===================================================================
--- branches/Cog/sistasrc/vm/cointerp.h	2014-10-13 21:24:18 UTC (rev 3103)
+++ branches/Cog/sistasrc/vm/cointerp.h	2014-10-13 23:35:34 UTC (rev 3104)
@@ -1,5 +1,5 @@
 /* Automatically generated by
-	CCodeGeneratorGlobalStructure VMMaker.oscog-eem.897 uuid: fcc5e4e2-808e-4ab1-97ae-079cc4b9d7b8
+	CCodeGeneratorGlobalStructure VMMaker.oscog-eem.900 uuid: 3d11cf21-4f5f-406a-85ae-ccbc786612a0
  */
 
 

Modified: branches/Cog/sistasrc/vm/gcc3x-cointerp.c
===================================================================
--- branches/Cog/sistasrc/vm/gcc3x-cointerp.c	2014-10-13 21:24:18 UTC (rev 3103)
+++ branches/Cog/sistasrc/vm/gcc3x-cointerp.c	2014-10-13 23:35:34 UTC (rev 3104)
@@ -2,11 +2,11 @@
 
 
 /* Automatically generated by
-	CCodeGeneratorGlobalStructure VMMaker.oscog-eem.897 uuid: fcc5e4e2-808e-4ab1-97ae-079cc4b9d7b8
+	CCodeGeneratorGlobalStructure VMMaker.oscog-eem.900 uuid: 3d11cf21-4f5f-406a-85ae-ccbc786612a0
    from
-	CoInterpreter VMMaker.oscog-eem.897 uuid: fcc5e4e2-808e-4ab1-97ae-079cc4b9d7b8
+	CoInterpreter VMMaker.oscog-eem.900 uuid: 3d11cf21-4f5f-406a-85ae-ccbc786612a0
  */
-static char __buildInfo[] = "CoInterpreter VMMaker.oscog-eem.897 uuid: fcc5e4e2-808e-4ab1-97ae-079cc4b9d7b8 " __DATE__ ;
+static char __buildInfo[] = "CoInterpreter VMMaker.oscog-eem.900 uuid: 3d11cf21-4f5f-406a-85ae-ccbc786612a0 " __DATE__ ;
 char *__interpBuildInfo = __buildInfo;
 
 
@@ -854,7 +854,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;
@@ -2084,7 +2084,7 @@
 	/* 574 */ (void (*)(void))0,
 	/* 575 */ (void (*)(void))0,
  0 };
-const char *interpreterVersion = "Croquet Closure Cog VM [CoInterpreterPrimitives VMMaker.oscog-eem.897]";
+const char *interpreterVersion = "Croquet Closure Cog VM [CoInterpreterPrimitives VMMaker.oscog-eem.900]";
 sqInt minBackwardJumpCountForCompile = MinBackwardJumpCountForCompile /* 40 */;
 volatile int sendTrace;
 
@@ -18941,7 +18941,8 @@
 	}
 	printFrameOopat("receiver", rcvrAddress);
 	topThing = longAt(theSP);
-	if (((topThing >= theMethod) && (topThing <= theMethodEnd))) {
+	if (((((usqInt) topThing)) >= (((usqInt) theMethod)))
+	 && ((((usqInt) topThing)) < (((usqInt) theMethodEnd)))) {
 		for (addr = (rcvrAddress - BytesPerWord); addr >= (theSP + BytesPerWord); addr += (-BytesPerWord)) {
 			index = ((rcvrAddress - addr) / BytesPerWord) + numArgs;
 			if (index <= numTemps) {
@@ -20932,7 +20933,7 @@
 	/* begin oopFromChunk: */
 	chunk = startOfMemory();
 	oop = chunk + (headerTypeBytes[(longAt(chunk)) & TypeMask]);
-	while (oop < GIV(freeStart)) {
+	while ((((usqInt)oop)) < GIV(freeStart)) {
 		if (!(((longAt(oop)) & TypeMask) == HeaderTypeFree)) {
 			fmt = (((usqInt) (longAt(oop))) >> (instFormatFieldLSB())) & 15;
 			if ((fmt == 3)
@@ -22455,7 +22456,7 @@
 		/* begin oopFromChunk: */
 		chunk = startOfMemory();
 		oop1 = chunk + (headerTypeBytes[(longAt(chunk)) & TypeMask]);
-		while (oop1 < GIV(freeStart)) {
+		while ((((usqInt)oop1)) < GIV(freeStart)) {
 			if (!(((longAt(oop1)) & TypeMask) == HeaderTypeFree)) {
 				if ((((((usqInt) (longAt(oop1))) >> (compactClassFieldLSB())) & 0x1F) == ClassMethodContextCompactIndex)
 				 && ((longAt((oop1 + BaseHeaderSize) + (MethodIndex << ShiftForWord))) == methodObj)) {
@@ -27808,7 +27809,7 @@
 	/* begin oopFromChunk: */
 	chunk = startOfMemory();
 	oop1 = chunk + (headerTypeBytes[(longAt(chunk)) & TypeMask]);
-	while (oop1 < GIV(freeStart)) {
+	while ((((usqInt)oop1)) < GIV(freeStart)) {
 		if (!(((longAt(oop1)) & TypeMask) == HeaderTypeFree)) {
 			if (!(((longAt(oop1)) & TypeMask) == HeaderTypeFree)) {
 				if (((((usqInt) (longAt(oop1))) >> (instFormatFieldLSB())) & 15) >= 12) {
@@ -33762,7 +33763,7 @@
 	/* begin oopFromChunk: */
 	chunk = startOfMemory();
 	oop1 = chunk + (headerTypeBytes[(longAt(chunk)) & TypeMask]);
-	while (oop1 < GIV(freeStart)) {
+	while ((((usqInt)oop1)) < GIV(freeStart)) {
 		if (!(((longAt(oop1)) & TypeMask) == HeaderTypeFree)) {
 			if (!(((longAt(oop1)) & TypeMask) == HeaderTypeFree)) {
 				if (((((usqInt) (longAt(oop1))) >> (instFormatFieldLSB())) & 15) >= 12) {
@@ -34941,7 +34942,7 @@
 	/* begin oopFromChunk: */
 	chunk = startOfMemory();
 	oop = chunk + (headerTypeBytes[(longAt(chunk)) & TypeMask]);
-	while (oop < GIV(freeStart)) {
+	while ((((usqInt)oop)) < GIV(freeStart)) {
 		if (!(((longAt(oop)) & TypeMask) == HeaderTypeFree)) {
 			if (((longAt(oop)) & MarkBit) != 0) {
 				return 0;
@@ -36851,15 +36852,17 @@
     sqInt header1;
     sqInt header2;
     sqInt header3;
+    sqInt header4;
     usqInt lastWord;
     sqInt newFreeChunk;
     sqInt newOop;

@@ Diff output truncated at 50000 characters. @@


More information about the Vm-dev mailing list