[Vm-dev] [commit][3096] CogVM source as per VMMaker.oscog-eem.891

commits at squeakvm.org commits at squeakvm.org
Sun Oct 5 21:56:56 UTC 2014


Revision: 3096
Author:   eliot
Date:     2014-10-05 14:56:54 -0700 (Sun, 05 Oct 2014)
Log Message:
-----------
CogVM source as per VMMaker.oscog-eem.891

Fix compilatiom of v3 VMs (fix v3 pinObject: type).

Fix Squeak V3 checkValidInlineCacheTag: (SmallInteger 0 is a valid cache tag).

Modified Paths:
--------------
    branches/Cog/nscogsrc/vm/cogit.c
    branches/Cog/nscogsrc/vm/cogit.h
    branches/Cog/nscogsrc/vm/cointerp.c
    branches/Cog/nscogsrc/vm/cointerp.h
    branches/Cog/nscogsrc/vm/gcc3x-cointerp.c
    branches/Cog/scripts/uploadvms
    branches/Cog/sistasrc/vm/cogit.c
    branches/Cog/sistasrc/vm/cogit.h
    branches/Cog/sistasrc/vm/cointerp.c
    branches/Cog/sistasrc/vm/cointerp.h
    branches/Cog/sistasrc/vm/gcc3x-cointerp.c
    branches/Cog/src/vm/cogit.c
    branches/Cog/src/vm/cogit.h
    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/cogit.c
===================================================================
--- branches/Cog/nscogsrc/vm/cogit.c	2014-10-03 21:49:26 UTC (rev 3095)
+++ branches/Cog/nscogsrc/vm/cogit.c	2014-10-05 21:56:54 UTC (rev 3096)
@@ -1,9 +1,9 @@
 /* Automatically generated by
-	CCodeGenerator VMMaker.oscog-eem.889 uuid: f7ca0f83-4116-4c07-8307-3c23f8f5600a
+	CCodeGenerator VMMaker.oscog-eem.891 uuid: 2b1ec85c-bd1d-4299-938a-80aef455e476
    from
-	StackToRegisterMappingCogit VMMaker.oscog-eem.889 uuid: f7ca0f83-4116-4c07-8307-3c23f8f5600a
+	StackToRegisterMappingCogit VMMaker.oscog-eem.891 uuid: 2b1ec85c-bd1d-4299-938a-80aef455e476
  */
-static char __buildInfo[] = "StackToRegisterMappingCogit VMMaker.oscog-eem.889 uuid: f7ca0f83-4116-4c07-8307-3c23f8f5600a " __DATE__ ;
+static char __buildInfo[] = "StackToRegisterMappingCogit VMMaker.oscog-eem.891 uuid: 2b1ec85c-bd1d-4299-938a-80aef455e476 " __DATE__ ;
 char *__cogitBuildInfo = __buildInfo;
 
 
@@ -15477,9 +15477,10 @@
 static sqInt
 checkValidInlineCacheTag(sqInt cacheTag)
 {
-	return (((cacheTag & ((1 << ShiftForWord) - 1)) == 0)
+	return (cacheTag == ConstZero)
+	 || ((((cacheTag & ((1 << ShiftForWord) - 1)) == 0)
 	 && (((cacheTag >= (1 << (compactClassFieldLSB()))) && (cacheTag <= ((compactClassIndexOfHeader(-1)) << (compactClassFieldLSB()))))))
-	 || (checkValidObjectReference(cacheTag));
+	 || (checkValidObjectReference(cacheTag)));
 }
 
 static sqInt

Modified: branches/Cog/nscogsrc/vm/cogit.h
===================================================================
--- branches/Cog/nscogsrc/vm/cogit.h	2014-10-03 21:49:26 UTC (rev 3095)
+++ branches/Cog/nscogsrc/vm/cogit.h	2014-10-05 21:56:54 UTC (rev 3096)
@@ -1,5 +1,5 @@
 /* Automatically generated by
-	CCodeGenerator VMMaker.oscog-eem.889 uuid: f7ca0f83-4116-4c07-8307-3c23f8f5600a
+	CCodeGenerator VMMaker.oscog-eem.891 uuid: 2b1ec85c-bd1d-4299-938a-80aef455e476
  */
 
 

Modified: branches/Cog/nscogsrc/vm/cointerp.c
===================================================================
--- branches/Cog/nscogsrc/vm/cointerp.c	2014-10-03 21:49:26 UTC (rev 3095)
+++ branches/Cog/nscogsrc/vm/cointerp.c	2014-10-05 21:56:54 UTC (rev 3096)
@@ -1,9 +1,9 @@
 /* Automatically generated by
-	CCodeGeneratorGlobalStructure VMMaker.oscog-eem.887 uuid: f980d45a-5622-46f6-95d9-ac8d00a34e81
+	CCodeGeneratorGlobalStructure VMMaker.oscog-eem.891 uuid: 2b1ec85c-bd1d-4299-938a-80aef455e476
    from
-	CoInterpreter VMMaker.oscog-eem.887 uuid: f980d45a-5622-46f6-95d9-ac8d00a34e81
+	CoInterpreter VMMaker.oscog-eem.891 uuid: 2b1ec85c-bd1d-4299-938a-80aef455e476
  */
-static char __buildInfo[] = "CoInterpreter VMMaker.oscog-eem.887 uuid: f980d45a-5622-46f6-95d9-ac8d00a34e81 " __DATE__ ;
+static char __buildInfo[] = "CoInterpreter VMMaker.oscog-eem.891 uuid: 2b1ec85c-bd1d-4299-938a-80aef455e476 " __DATE__ ;
 char *__interpBuildInfo = __buildInfo;
 
 
@@ -843,7 +843,7 @@
 sqInt objectAfter(sqInt oop);
 static sqInt okayOop(sqInt signedOop) NoDbgRegParms;
 static sqInt oopHasAcceptableClass(sqInt signedOop) NoDbgRegParms;
-void pinObject(sqInt objOop);
+sqInt pinObject(sqInt objOop);
 static sqInt prepareForwardingTableForBecomingwithtwoWay(sqInt array1, sqInt array2, sqInt twoWayFlag) NoDbgRegParms;
 void printMemory(void);
 void printObjectsFromto(sqInt startAddress, sqInt endAddress);
@@ -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 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.887";
+const char *interpreterVersion = "Newspeak Virtual Machine CoInterpreterPrimitives_VMMaker.oscog-eem.891";
 sqInt minBackwardJumpCountForCompile = MinBackwardJumpCountForCompile /* 40 */;
 volatile int sendTrace;
 
@@ -13058,7 +13058,7 @@
 				if ((((((sqInt) header)) < 0
 					? header & (65536 << SmallIntegerShift)
 					: (header & 536871934) != 0))
-				 && (localIP == ((GIV(method) + ((LiteralStart + (literalCountOfMethodHeader(header))) * BytesPerOop)) + (BaseHeaderSize)))) {
+				 && ((((sqInt)localIP)) == ((GIV(method) + ((LiteralStart + (literalCountOfMethodHeader(header))) * BytesPerOop)) + (BaseHeaderSize)))) {
 					localIP += ((((sqInt) header)) < 0
 						? 3
 						: 0);
@@ -30829,16 +30829,15 @@
 }
 
 
-/*	Pin or unpin the receiver, i.e. make it immobile or mobile. Answer whether
-	the object was
-	already pinned. N.B. pinning does *not* prevent an object from being
-	garbage collected. */
+/*	Pin or unpin the receiver, i.e. make it immobile or mobile, based on the
+	argument. Answer whether the object was already pinned. N.B. pinning does
+	*not* prevent
+	an object from being garbage collected. */
 
 static void
 primitivePin(void)
 {   DECL_MAYBE_SQ_GLOBAL_STRUCT
     sqInt boolean;
-    sqInt failure;
     sqInt obj;
     char *sp;
     sqInt wasPinned;
@@ -30863,10 +30862,9 @@
 		return;
 	}
 	wasPinned = GIV(falseObj);
-	/* begin pinObject: */
-	GIV(primFailCode) = PrimErrUnsupported;
-	if (failure != 0) {
-		(GIV(primFailCode) = failure);
+	if (((boolean == GIV(trueObj))
+ && (pinObject(obj))) == 0) {
+		(GIV(primFailCode) = PrimErrNoMemory);
 		return;
 	}
 
@@ -36756,17 +36754,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;
 
@@ -36777,21 +36773,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;
@@ -36806,7 +36788,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)) {
 
@@ -36860,18 +36842,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 = ((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)) {
@@ -38021,10 +38003,11 @@
 	pinning. 
  */
 
-void
+sqInt
 pinObject(sqInt objOop)
 {   DECL_MAYBE_SQ_GLOBAL_STRUCT
 	GIV(primFailCode) = PrimErrUnsupported;
+	return 0;
 }
 
 
@@ -38743,7 +38726,7 @@
 	given object or free chunk in memory. Return freeStart when
 	enumeration is complete. This is for assertion checking only. */
 
-static sqInt
+static usqInt
 safeObjectAfter(sqInt oop)
 {   DECL_MAYBE_SQ_GLOBAL_STRUCT
     sqInt header;

Modified: branches/Cog/nscogsrc/vm/cointerp.h
===================================================================
--- branches/Cog/nscogsrc/vm/cointerp.h	2014-10-03 21:49:26 UTC (rev 3095)
+++ branches/Cog/nscogsrc/vm/cointerp.h	2014-10-05 21:56:54 UTC (rev 3096)
@@ -1,5 +1,5 @@
 /* Automatically generated by
-	CCodeGeneratorGlobalStructure VMMaker.oscog-eem.887 uuid: f980d45a-5622-46f6-95d9-ac8d00a34e81
+	CCodeGeneratorGlobalStructure VMMaker.oscog-eem.891 uuid: 2b1ec85c-bd1d-4299-938a-80aef455e476
  */
 
 
@@ -141,7 +141,7 @@
 sqInt literalCountOfMethodHeader(sqInt header);
 void longPrintReferencesTo(sqInt anOop);
 sqInt objectAfter(sqInt oop);
-void pinObject(sqInt objOop);
+sqInt pinObject(sqInt objOop);
 void printObjectsFromto(sqInt startAddress, sqInt endAddress);
 void printReferencesTo(sqInt anOop);
 void printWronglySizedContexts(sqInt printContexts);

Modified: branches/Cog/nscogsrc/vm/gcc3x-cointerp.c
===================================================================
--- branches/Cog/nscogsrc/vm/gcc3x-cointerp.c	2014-10-03 21:49:26 UTC (rev 3095)
+++ branches/Cog/nscogsrc/vm/gcc3x-cointerp.c	2014-10-05 21:56:54 UTC (rev 3096)
@@ -2,11 +2,11 @@
 
 
 /* Automatically generated by
-	CCodeGeneratorGlobalStructure VMMaker.oscog-eem.887 uuid: f980d45a-5622-46f6-95d9-ac8d00a34e81
+	CCodeGeneratorGlobalStructure VMMaker.oscog-eem.891 uuid: 2b1ec85c-bd1d-4299-938a-80aef455e476
    from
-	CoInterpreter VMMaker.oscog-eem.887 uuid: f980d45a-5622-46f6-95d9-ac8d00a34e81
+	CoInterpreter VMMaker.oscog-eem.891 uuid: 2b1ec85c-bd1d-4299-938a-80aef455e476
  */
-static char __buildInfo[] = "CoInterpreter VMMaker.oscog-eem.887 uuid: f980d45a-5622-46f6-95d9-ac8d00a34e81 " __DATE__ ;
+static char __buildInfo[] = "CoInterpreter VMMaker.oscog-eem.891 uuid: 2b1ec85c-bd1d-4299-938a-80aef455e476 " __DATE__ ;
 char *__interpBuildInfo = __buildInfo;
 
 
@@ -846,7 +846,7 @@
 sqInt objectAfter(sqInt oop);
 static sqInt okayOop(sqInt signedOop) NoDbgRegParms;
 static sqInt oopHasAcceptableClass(sqInt signedOop) NoDbgRegParms;
-void pinObject(sqInt objOop);
+sqInt pinObject(sqInt objOop);
 static sqInt prepareForwardingTableForBecomingwithtwoWay(sqInt array1, sqInt array2, sqInt twoWayFlag) NoDbgRegParms;
 void printMemory(void);
 void printObjectsFromto(sqInt startAddress, sqInt endAddress);
@@ -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 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.887";
+const char *interpreterVersion = "Newspeak Virtual Machine CoInterpreterPrimitives_VMMaker.oscog-eem.891";
 sqInt minBackwardJumpCountForCompile = MinBackwardJumpCountForCompile /* 40 */;
 volatile int sendTrace;
 
@@ -13067,7 +13067,7 @@
 				if ((((((sqInt) header)) < 0
 					? header & (65536 << SmallIntegerShift)
 					: (header & 536871934) != 0))
-				 && (localIP == ((GIV(method) + ((LiteralStart + (literalCountOfMethodHeader(header))) * BytesPerOop)) + (BaseHeaderSize)))) {
+				 && ((((sqInt)localIP)) == ((GIV(method) + ((LiteralStart + (literalCountOfMethodHeader(header))) * BytesPerOop)) + (BaseHeaderSize)))) {
 					localIP += ((((sqInt) header)) < 0
 						? 3
 						: 0);
@@ -30838,16 +30838,15 @@
 }
 
 
-/*	Pin or unpin the receiver, i.e. make it immobile or mobile. Answer whether
-	the object was
-	already pinned. N.B. pinning does *not* prevent an object from being
-	garbage collected. */
+/*	Pin or unpin the receiver, i.e. make it immobile or mobile, based on the
+	argument. Answer whether the object was already pinned. N.B. pinning does
+	*not* prevent
+	an object from being garbage collected. */
 
 static void
 primitivePin(void)
 {   DECL_MAYBE_SQ_GLOBAL_STRUCT
     sqInt boolean;
-    sqInt failure;
     sqInt obj;
     char *sp;
     sqInt wasPinned;
@@ -30872,10 +30871,9 @@
 		return;
 	}
 	wasPinned = GIV(falseObj);
-	/* begin pinObject: */
-	GIV(primFailCode) = PrimErrUnsupported;
-	if (failure != 0) {
-		(GIV(primFailCode) = failure);
+	if (((boolean == GIV(trueObj))
+ && (pinObject(obj))) == 0) {
+		(GIV(primFailCode) = PrimErrNoMemory);
 		return;
 	}
 
@@ -36765,17 +36763,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;
 
@@ -36786,21 +36782,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;
@@ -36815,7 +36797,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)) {
 
@@ -36869,18 +36851,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 = ((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)) {
@@ -38030,10 +38012,11 @@
 	pinning. 
  */
 
-void
+sqInt
 pinObject(sqInt objOop)
 {   DECL_MAYBE_SQ_GLOBAL_STRUCT
 	GIV(primFailCode) = PrimErrUnsupported;
+	return 0;
 }
 
 
@@ -38752,7 +38735,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;


Property changes on: branches/Cog/platforms/Cross/vm/sqSCCSVersion.h
___________________________________________________________________
Modified: checkindate
   - Fri Oct  3 14:48:56 PDT 2014
   + Sun Oct  5 14:56:31 PDT 2014

Modified: branches/Cog/scripts/uploadvms
===================================================================
--- branches/Cog/scripts/uploadvms	2014-10-03 21:49:26 UTC (rev 3095)
+++ branches/Cog/scripts/uploadvms	2014-10-05 21:56:54 UTC (rev 3096)
@@ -57,6 +57,8 @@
 		case $1 in
 		-archives)	JustUpload=JustUpload;;
 		-all)	all;;
+		-spur)	CheckDMG=1;CheckMSI=1;
+				LSPUR=1;MSPUR=1;WSPUR=1;LNSSPUR=1;MNSSPUR=1;WNSSPUR=1;;
 		-c)		LCOG=1;LTCOG=1;MCOG=1;MTCOG=1;WCOG=1;WMTCOG=1;
 				LSPUR=1;MSPUR=1;WSPUR=1;;
 		-cl)	LCOG=1;LTCOG=1;LSPUR=1;;
@@ -131,7 +133,7 @@
 		echo upload $a
 	done
 fi
-if [ -n "$CheckDMG" -a ! -f "Newspeak Virtual Machine-$TAG.dmg" ]; then
+if [ -n "$CheckDMG" -a -n "$MNSCOG" -a ! -f "Newspeak Virtual Machine-$TAG.dmg" ]; then
 	NMID=../build.macos32x86/newspeak.cog.v3/installer
 	if [ -f "Newspeak Virtual Machine-$TAG.dmg" ]; then
 		true
@@ -142,7 +144,7 @@
 		exit 1
 	fi
 fi
-if [ -n "$CheckDMG" -a ! -f "Newspeak Spur Virtual Machine-$TAG.dmg" ]; then
+if [ -n "$CheckDMG" -a -n "$MNSSPUR" -a ! -f "Newspeak Spur Virtual Machine-$TAG.dmg" ]; then
 	NMID=../build.macos32x86/newspeak.cog.spur/installer
 	if [ -f "Newspeak Virtual Spur Machine-$TAG.dmg" ]; then
 		true
@@ -153,7 +155,7 @@
 		exit 1
 	fi
 fi
-if [ -n "$CheckMSI" -a ! -f nsvm-$TAG.msi ]; then
+if [ -n "$CheckMSI" -a -n "$WNSCOG" -a ! -f nsvm-$TAG.msi ]; then
 	NMID=../build.win32x86/newspeak.cog.v3/installer
 	if [ -f nsvm-$TAG.msi ]; then
 		true
@@ -164,7 +166,7 @@
 		exit 1
 	fi
 fi
-if [ -n "$CheckMSI" -a ! -f nsvm-spur-$TAG.msi ]; then
+if [ -n "$CheckMSI" -a -n "$WNSSPUR" -a ! -f nsvm-spur-$TAG.msi ]; then
 	NMID=../build.win32x86/newspeak.cog.spur/installer
 	if [ -f nsvm-spur-$TAG.msi ]; then
 		true

Modified: branches/Cog/sistasrc/vm/cogit.c
===================================================================
--- branches/Cog/sistasrc/vm/cogit.c	2014-10-03 21:49:26 UTC (rev 3095)
+++ branches/Cog/sistasrc/vm/cogit.c	2014-10-05 21:56:54 UTC (rev 3096)
@@ -1,9 +1,9 @@
 /* Automatically generated by
-	CCodeGenerator VMMaker.oscog-eem.889 uuid: f7ca0f83-4116-4c07-8307-3c23f8f5600a
+	CCodeGenerator VMMaker.oscog-eem.891 uuid: 2b1ec85c-bd1d-4299-938a-80aef455e476
    from
-	SistaStackToRegisterMappingCogit VMMaker.oscog-eem.889 uuid: f7ca0f83-4116-4c07-8307-3c23f8f5600a
+	SistaStackToRegisterMappingCogit VMMaker.oscog-eem.891 uuid: 2b1ec85c-bd1d-4299-938a-80aef455e476
  */
-static char __buildInfo[] = "SistaStackToRegisterMappingCogit VMMaker.oscog-eem.889 uuid: f7ca0f83-4116-4c07-8307-3c23f8f5600a " __DATE__ ;
+static char __buildInfo[] = "SistaStackToRegisterMappingCogit VMMaker.oscog-eem.891 uuid: 2b1ec85c-bd1d-4299-938a-80aef455e476 " __DATE__ ;
 char *__cogitBuildInfo = __buildInfo;
 
 
@@ -15077,9 +15077,10 @@
 static sqInt
 checkValidInlineCacheTag(sqInt cacheTag)
 {
-	return (((cacheTag & ((1 << ShiftForWord) - 1)) == 0)
+	return (cacheTag == ConstZero)
+	 || ((((cacheTag & ((1 << ShiftForWord) - 1)) == 0)
 	 && (((cacheTag >= (1 << (compactClassFieldLSB()))) && (cacheTag <= ((compactClassIndexOfHeader(-1)) << (compactClassFieldLSB()))))))
-	 || (checkValidObjectReference(cacheTag));
+	 || (checkValidObjectReference(cacheTag)));
 }
 
 static sqInt

Modified: branches/Cog/sistasrc/vm/cogit.h
===================================================================
--- branches/Cog/sistasrc/vm/cogit.h	2014-10-03 21:49:26 UTC (rev 3095)
+++ branches/Cog/sistasrc/vm/cogit.h	2014-10-05 21:56:54 UTC (rev 3096)
@@ -1,5 +1,5 @@
 /* Automatically generated by
-	CCodeGenerator VMMaker.oscog-eem.889 uuid: f7ca0f83-4116-4c07-8307-3c23f8f5600a
+	CCodeGenerator VMMaker.oscog-eem.891 uuid: 2b1ec85c-bd1d-4299-938a-80aef455e476
  */
 
 

Modified: branches/Cog/sistasrc/vm/cointerp.c
===================================================================
--- branches/Cog/sistasrc/vm/cointerp.c	2014-10-03 21:49:26 UTC (rev 3095)
+++ branches/Cog/sistasrc/vm/cointerp.c	2014-10-05 21:56:54 UTC (rev 3096)
@@ -1,9 +1,9 @@
 /* Automatically generated by
-	CCodeGeneratorGlobalStructure VMMaker.oscog-eem.887 uuid: f980d45a-5622-46f6-95d9-ac8d00a34e81
+	CCodeGeneratorGlobalStructure VMMaker.oscog-eem.891 uuid: 2b1ec85c-bd1d-4299-938a-80aef455e476
    from
-	CoInterpreter VMMaker.oscog-eem.887 uuid: f980d45a-5622-46f6-95d9-ac8d00a34e81
+	CoInterpreter VMMaker.oscog-eem.891 uuid: 2b1ec85c-bd1d-4299-938a-80aef455e476
  */
-static char __buildInfo[] = "CoInterpreter VMMaker.oscog-eem.887 uuid: f980d45a-5622-46f6-95d9-ac8d00a34e81 " __DATE__ ;
+static char __buildInfo[] = "CoInterpreter VMMaker.oscog-eem.891 uuid: 2b1ec85c-bd1d-4299-938a-80aef455e476 " __DATE__ ;
 char *__interpBuildInfo = __buildInfo;
 
 
@@ -842,7 +842,7 @@
 sqInt objectAfter(sqInt oop);
 static sqInt okayOop(sqInt signedOop) NoDbgRegParms;
 static sqInt oopHasAcceptableClass(sqInt signedOop) NoDbgRegParms;
-void pinObject(sqInt objOop);
+sqInt pinObject(sqInt objOop);
 static sqInt prepareForwardingTableForBecomingwithtwoWay(sqInt array1, sqInt array2, sqInt twoWayFlag) NoDbgRegParms;
 void printMemory(void);
 void printObjectsFromto(sqInt startAddress, sqInt endAddress);
@@ -2081,7 +2081,7 @@
 	/* 574 */ (void (*)(void))0,
 	/* 575 */ (void (*)(void))0,
  0 };
-const char *interpreterVersion = "Croquet Closure Cog VM [CoInterpreterPrimitives VMMaker.oscog-eem.887]";
+const char *interpreterVersion = "Croquet Closure Cog VM [CoInterpreterPrimitives VMMaker.oscog-eem.891]";
 sqInt minBackwardJumpCountForCompile = MinBackwardJumpCountForCompile /* 40 */;
 volatile int sendTrace;
 
@@ -30900,16 +30900,15 @@
 }
 
 
-/*	Pin or unpin the receiver, i.e. make it immobile or mobile. Answer whether
-	the object was
-	already pinned. N.B. pinning does *not* prevent an object from being
-	garbage collected. */
+/*	Pin or unpin the receiver, i.e. make it immobile or mobile, based on the
+	argument. Answer whether the object was already pinned. N.B. pinning does
+	*not* prevent
+	an object from being garbage collected. */
 
 static void
 primitivePin(void)
 {   DECL_MAYBE_SQ_GLOBAL_STRUCT
     sqInt boolean;
-    sqInt failure;
     sqInt obj;
     char *sp;
     sqInt wasPinned;
@@ -30934,10 +30933,9 @@
 		return;
 	}
 	wasPinned = GIV(falseObj);
-	/* begin pinObject: */
-	GIV(primFailCode) = PrimErrUnsupported;
-	if (failure != 0) {
-		(GIV(primFailCode) = failure);
+	if (((boolean == GIV(trueObj))
+ && (pinObject(obj))) == 0) {
+		(GIV(primFailCode) = PrimErrNoMemory);
 		return;
 	}
 
@@ -38092,10 +38090,11 @@
 	pinning. 
  */
 
-void
+sqInt
 pinObject(sqInt objOop)
 {   DECL_MAYBE_SQ_GLOBAL_STRUCT
 	GIV(primFailCode) = PrimErrUnsupported;
+	return 0;
 }
 
 

Modified: branches/Cog/sistasrc/vm/cointerp.h
===================================================================
--- branches/Cog/sistasrc/vm/cointerp.h	2014-10-03 21:49:26 UTC (rev 3095)
+++ branches/Cog/sistasrc/vm/cointerp.h	2014-10-05 21:56:54 UTC (rev 3096)
@@ -1,5 +1,5 @@
 /* Automatically generated by
-	CCodeGeneratorGlobalStructure VMMaker.oscog-eem.887 uuid: f980d45a-5622-46f6-95d9-ac8d00a34e81
+	CCodeGeneratorGlobalStructure VMMaker.oscog-eem.891 uuid: 2b1ec85c-bd1d-4299-938a-80aef455e476
  */
 
 
@@ -139,7 +139,7 @@
 sqInt literalCountOfMethodHeader(sqInt header);
 void longPrintReferencesTo(sqInt anOop);
 sqInt objectAfter(sqInt oop);
-void pinObject(sqInt objOop);
+sqInt pinObject(sqInt objOop);
 void printObjectsFromto(sqInt startAddress, sqInt endAddress);
 void printReferencesTo(sqInt anOop);
 void printWronglySizedContexts(sqInt printContexts);

Modified: branches/Cog/sistasrc/vm/gcc3x-cointerp.c
===================================================================
--- branches/Cog/sistasrc/vm/gcc3x-cointerp.c	2014-10-03 21:49:26 UTC (rev 3095)
+++ branches/Cog/sistasrc/vm/gcc3x-cointerp.c	2014-10-05 21:56:54 UTC (rev 3096)
@@ -2,11 +2,11 @@
 
 
 /* Automatically generated by
-	CCodeGeneratorGlobalStructure VMMaker.oscog-eem.887 uuid: f980d45a-5622-46f6-95d9-ac8d00a34e81
+	CCodeGeneratorGlobalStructure VMMaker.oscog-eem.891 uuid: 2b1ec85c-bd1d-4299-938a-80aef455e476
    from
-	CoInterpreter VMMaker.oscog-eem.887 uuid: f980d45a-5622-46f6-95d9-ac8d00a34e81
+	CoInterpreter VMMaker.oscog-eem.891 uuid: 2b1ec85c-bd1d-4299-938a-80aef455e476
  */
-static char __buildInfo[] = "CoInterpreter VMMaker.oscog-eem.887 uuid: f980d45a-5622-46f6-95d9-ac8d00a34e81 " __DATE__ ;
+static char __buildInfo[] = "CoInterpreter VMMaker.oscog-eem.891 uuid: 2b1ec85c-bd1d-4299-938a-80aef455e476 " __DATE__ ;
 char *__interpBuildInfo = __buildInfo;
 
 
@@ -845,7 +845,7 @@
 sqInt objectAfter(sqInt oop);
 static sqInt okayOop(sqInt signedOop) NoDbgRegParms;
 static sqInt oopHasAcceptableClass(sqInt signedOop) NoDbgRegParms;
-void pinObject(sqInt objOop);
+sqInt pinObject(sqInt objOop);
 static sqInt prepareForwardingTableForBecomingwithtwoWay(sqInt array1, sqInt array2, sqInt twoWayFlag) NoDbgRegParms;
 void printMemory(void);
 void printObjectsFromto(sqInt startAddress, sqInt endAddress);
@@ -2084,7 +2084,7 @@
 	/* 574 */ (void (*)(void))0,
 	/* 575 */ (void (*)(void))0,
  0 };
-const char *interpreterVersion = "Croquet Closure Cog VM [CoInterpreterPrimitives VMMaker.oscog-eem.887]";
+const char *interpreterVersion = "Croquet Closure Cog VM [CoInterpreterPrimitives VMMaker.oscog-eem.891]";
 sqInt minBackwardJumpCountForCompile = MinBackwardJumpCountForCompile /* 40 */;
 volatile int sendTrace;
 
@@ -30909,16 +30909,15 @@
 }
 
 
-/*	Pin or unpin the receiver, i.e. make it immobile or mobile. Answer whether
-	the object was
-	already pinned. N.B. pinning does *not* prevent an object from being
-	garbage collected. */
+/*	Pin or unpin the receiver, i.e. make it immobile or mobile, based on the
+	argument. Answer whether the object was already pinned. N.B. pinning does
+	*not* prevent
+	an object from being garbage collected. */
 
 static void
 primitivePin(void)
 {   DECL_MAYBE_SQ_GLOBAL_STRUCT
     sqInt boolean;
-    sqInt failure;
     sqInt obj;
     char *sp;
     sqInt wasPinned;
@@ -30943,10 +30942,9 @@
 		return;
 	}
 	wasPinned = GIV(falseObj);
-	/* begin pinObject: */
-	GIV(primFailCode) = PrimErrUnsupported;
-	if (failure != 0) {
-		(GIV(primFailCode) = failure);
+	if (((boolean == GIV(trueObj))
+ && (pinObject(obj))) == 0) {
+		(GIV(primFailCode) = PrimErrNoMemory);
 		return;
 	}
 
@@ -38101,10 +38099,11 @@
 	pinning. 
  */
 
-void
+sqInt
 pinObject(sqInt objOop)
 {   DECL_MAYBE_SQ_GLOBAL_STRUCT
 	GIV(primFailCode) = PrimErrUnsupported;
+	return 0;
 }
 
 

Modified: branches/Cog/src/vm/cogit.c
===================================================================
--- branches/Cog/src/vm/cogit.c	2014-10-03 21:49:26 UTC (rev 3095)
+++ branches/Cog/src/vm/cogit.c	2014-10-05 21:56:54 UTC (rev 3096)
@@ -1,9 +1,9 @@
 /* Automatically generated by
-	CCodeGenerator VMMaker.oscog-eem.889 uuid: f7ca0f83-4116-4c07-8307-3c23f8f5600a
+	CCodeGenerator VMMaker.oscog-eem.891 uuid: 2b1ec85c-bd1d-4299-938a-80aef455e476
    from
-	StackToRegisterMappingCogit VMMaker.oscog-eem.889 uuid: f7ca0f83-4116-4c07-8307-3c23f8f5600a
+	StackToRegisterMappingCogit VMMaker.oscog-eem.891 uuid: 2b1ec85c-bd1d-4299-938a-80aef455e476
  */
-static char __buildInfo[] = "StackToRegisterMappingCogit VMMaker.oscog-eem.889 uuid: f7ca0f83-4116-4c07-8307-3c23f8f5600a " __DATE__ ;
+static char __buildInfo[] = "StackToRegisterMappingCogit VMMaker.oscog-eem.891 uuid: 2b1ec85c-bd1d-4299-938a-80aef455e476 " __DATE__ ;
 char *__cogitBuildInfo = __buildInfo;
 
 
@@ -14686,9 +14686,10 @@
 static sqInt
 checkValidInlineCacheTag(sqInt cacheTag)
 {
-	return (((cacheTag & ((1 << ShiftForWord) - 1)) == 0)
+	return (cacheTag == ConstZero)
+	 || ((((cacheTag & ((1 << ShiftForWord) - 1)) == 0)
 	 && (((cacheTag >= (1 << (compactClassFieldLSB()))) && (cacheTag <= ((compactClassIndexOfHeader(-1)) << (compactClassFieldLSB()))))))
-	 || (checkValidObjectReference(cacheTag));
+	 || (checkValidObjectReference(cacheTag)));
 }
 
 static sqInt

Modified: branches/Cog/src/vm/cogit.h
===================================================================
--- branches/Cog/src/vm/cogit.h	2014-10-03 21:49:26 UTC (rev 3095)
+++ branches/Cog/src/vm/cogit.h	2014-10-05 21:56:54 UTC (rev 3096)
@@ -1,5 +1,5 @@
 /* Automatically generated by
-	CCodeGenerator VMMaker.oscog-eem.889 uuid: f7ca0f83-4116-4c07-8307-3c23f8f5600a
+	CCodeGenerator VMMaker.oscog-eem.891 uuid: 2b1ec85c-bd1d-4299-938a-80aef455e476
  */
 
 

Modified: branches/Cog/src/vm/cointerp.c
===================================================================
--- branches/Cog/src/vm/cointerp.c	2014-10-03 21:49:26 UTC (rev 3095)
+++ branches/Cog/src/vm/cointerp.c	2014-10-05 21:56:54 UTC (rev 3096)
@@ -1,9 +1,9 @@
 /* Automatically generated by
-	CCodeGeneratorGlobalStructure VMMaker.oscog-eem.887 uuid: f980d45a-5622-46f6-95d9-ac8d00a34e81
+	CCodeGeneratorGlobalStructure VMMaker.oscog-eem.891 uuid: 2b1ec85c-bd1d-4299-938a-80aef455e476
    from
-	CoInterpreter VMMaker.oscog-eem.887 uuid: f980d45a-5622-46f6-95d9-ac8d00a34e81
+	CoInterpreter VMMaker.oscog-eem.891 uuid: 2b1ec85c-bd1d-4299-938a-80aef455e476
  */
-static char __buildInfo[] = "CoInterpreter VMMaker.oscog-eem.887 uuid: f980d45a-5622-46f6-95d9-ac8d00a34e81 " __DATE__ ;
+static char __buildInfo[] = "CoInterpreter VMMaker.oscog-eem.891 uuid: 2b1ec85c-bd1d-4299-938a-80aef455e476 " __DATE__ ;
 char *__interpBuildInfo = __buildInfo;
 
 
@@ -835,7 +835,7 @@
 sqInt objectAfter(sqInt oop);
 static sqInt okayOop(sqInt signedOop) NoDbgRegParms;
 static sqInt oopHasAcceptableClass(sqInt signedOop) NoDbgRegParms;
-void pinObject(sqInt objOop);
+sqInt pinObject(sqInt objOop);
 static sqInt prepareForwardingTableForBecomingwithtwoWay(sqInt array1, sqInt array2, sqInt twoWayFlag) NoDbgRegParms;
 void printMemory(void);
 void printObjectsFromto(sqInt startAddress, sqInt endAddress);
@@ -843,7 +843,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;
@@ -2073,7 +2073,7 @@
 	/* 574 */ (void (*)(void))0,
 	/* 575 */ (void (*)(void))0,
  0 };
-const char *interpreterVersion = "Croquet Closure Cog VM [CoInterpreterPrimitives VMMaker.oscog-eem.887]";
+const char *interpreterVersion = "Croquet Closure Cog VM [CoInterpreterPrimitives VMMaker.oscog-eem.891]";
 sqInt minBackwardJumpCountForCompile = MinBackwardJumpCountForCompile /* 40 */;
 volatile int sendTrace;
 
@@ -26280,16 +26280,15 @@
 }
 
 
-/*	Pin or unpin the receiver, i.e. make it immobile or mobile. Answer whether
-	the object was
-	already pinned. N.B. pinning does *not* prevent an object from being
-	garbage collected. */
+/*	Pin or unpin the receiver, i.e. make it immobile or mobile, based on the
+	argument. Answer whether the object was already pinned. N.B. pinning does
+	*not* prevent
+	an object from being garbage collected. */
 
 static void
 primitivePin(void)
 {   DECL_MAYBE_SQ_GLOBAL_STRUCT
     sqInt boolean;
-    sqInt failure;
     sqInt obj;
     char *sp;
     sqInt wasPinned;
@@ -26314,10 +26313,9 @@
 		return;
 	}
 	wasPinned = GIV(falseObj);
-	/* begin pinObject: */
-	GIV(primFailCode) = PrimErrUnsupported;
-	if (failure != 0) {
-		(GIV(primFailCode) = failure);
+	if (((boolean == GIV(trueObj))
+ && (pinObject(obj))) == 0) {
+		(GIV(primFailCode) = PrimErrNoMemory);
 		return;
 	}
 
@@ -32202,17 +32200,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;
 
@@ -32223,21 +32219,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;
@@ -32252,7 +32234,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)) {
 
@@ -32306,18 +32288,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 = ((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)) {
@@ -33467,10 +33449,11 @@
 	pinning. 
  */
 
-void
+sqInt
 pinObject(sqInt objOop)
 {   DECL_MAYBE_SQ_GLOBAL_STRUCT
 	GIV(primFailCode) = PrimErrUnsupported;
+	return 0;
 }
 
 
@@ -34189,7 +34172,7 @@
 	given object or free chunk in memory. Return freeStart when
 	enumeration is complete. This is for assertion checking only. */
 
-static sqInt
+static usqInt
 safeObjectAfter(sqInt oop)
 {   DECL_MAYBE_SQ_GLOBAL_STRUCT
     sqInt header;

Modified: branches/Cog/src/vm/cointerp.h
===================================================================
--- branches/Cog/src/vm/cointerp.h	2014-10-03 21:49:26 UTC (rev 3095)
+++ branches/Cog/src/vm/cointerp.h	2014-10-05 21:56:54 UTC (rev 3096)
@@ -1,5 +1,5 @@
 /* Automatically generated by
-	CCodeGeneratorGlobalStructure VMMaker.oscog-eem.887 uuid: f980d45a-5622-46f6-95d9-ac8d00a34e81
+	CCodeGeneratorGlobalStructure VMMaker.oscog-eem.891 uuid: 2b1ec85c-bd1d-4299-938a-80aef455e476
  */
 
 
@@ -137,7 +137,7 @@
 sqInt literalCountOfMethodHeader(sqInt header);
 void longPrintReferencesTo(sqInt anOop);
 sqInt objectAfter(sqInt oop);
-void pinObject(sqInt objOop);
+sqInt pinObject(sqInt objOop);
 void printObjectsFromto(sqInt startAddress, sqInt endAddress);
 void printReferencesTo(sqInt anOop);
 void printWronglySizedContexts(sqInt printContexts);

Modified: branches/Cog/src/vm/cointerpmt.c
===================================================================
--- branches/Cog/src/vm/cointerpmt.c	2014-10-03 21:49:26 UTC (rev 3095)
+++ branches/Cog/src/vm/cointerpmt.c	2014-10-05 21:56:54 UTC (rev 3096)
@@ -1,9 +1,9 @@
 /* Automatically generated by
-	CCodeGeneratorGlobalStructure VMMaker.oscog-eem.887 uuid: f980d45a-5622-46f6-95d9-ac8d00a34e81
+	CCodeGeneratorGlobalStructure VMMaker.oscog-eem.891 uuid: 2b1ec85c-bd1d-4299-938a-80aef455e476
    from
-	CoInterpreterMT VMMaker.oscog-eem.887 uuid: f980d45a-5622-46f6-95d9-ac8d00a34e81
+	CoInterpreterMT VMMaker.oscog-eem.891 uuid: 2b1ec85c-bd1d-4299-938a-80aef455e476
  */
-static char __buildInfo[] = "CoInterpreterMT VMMaker.oscog-eem.887 uuid: f980d45a-5622-46f6-95d9-ac8d00a34e81 " __DATE__ ;
+static char __buildInfo[] = "CoInterpreterMT VMMaker.oscog-eem.891 uuid: 2b1ec85c-bd1d-4299-938a-80aef455e476 " __DATE__ ;
 char *__interpBuildInfo = __buildInfo;
 
 
@@ -921,7 +921,7 @@
 sqInt objectAfter(sqInt oop);
 static sqInt okayOop(sqInt signedOop) NoDbgRegParms;
 static sqInt oopHasAcceptableClass(sqInt signedOop) NoDbgRegParms;
-void pinObject(sqInt objOop);
+sqInt pinObject(sqInt objOop);
 static sqInt prepareForwardingTableForBecomingwithtwoWay(sqInt array1, sqInt array2, sqInt twoWayFlag) NoDbgRegParms;
 void printMemory(void);
 void printObjectsFromto(sqInt startAddress, sqInt endAddress);
@@ -2170,7 +2170,7 @@
 	/* 574 */ (void (*)(void))0,
 	/* 575 */ (void (*)(void))0,
  0 };
-const char *interpreterVersion = "Croquet Closure Cog MT VM [CoInterpreterMT VMMaker.oscog-eem.887]";
+const char *interpreterVersion = "Croquet Closure Cog MT VM [CoInterpreterMT VMMaker.oscog-eem.891]";
 sqInt minBackwardJumpCountForCompile = MinBackwardJumpCountForCompile /* 40 */;
 volatile int sendTrace;
 sqInt willNotThreadWarnCount;
@@ -28644,16 +28644,15 @@
 }
 
 
-/*	Pin or unpin the receiver, i.e. make it immobile or mobile. Answer whether
-	the object was
-	already pinned. N.B. pinning does *not* prevent an object from being
-	garbage collected. */
+/*	Pin or unpin the receiver, i.e. make it immobile or mobile, based on the
+	argument. Answer whether the object was already pinned. N.B. pinning does
+	*not* prevent
+	an object from being garbage collected. */
 
 static void
 primitivePin(void)
 {   DECL_MAYBE_SQ_GLOBAL_STRUCT
     sqInt boolean;
-    sqInt failure;
     sqInt obj;
     char *sp;
     sqInt wasPinned;
@@ -28678,10 +28677,9 @@
 		return;
 	}
 	wasPinned = GIV(falseObj);
-	/* begin pinObject: */
-	GIV(primFailCode) = PrimErrUnsupported;
-	if (failure != 0) {
-		(GIV(primFailCode) = failure);
+	if (((boolean == GIV(trueObj))
+ && (pinObject(obj))) == 0) {
+		(GIV(primFailCode) = PrimErrNoMemory);
 		return;
 	}
 
@@ -35784,10 +35782,11 @@
 	pinning. 
  */
 
-void
+sqInt
 pinObject(sqInt objOop)
 {   DECL_MAYBE_SQ_GLOBAL_STRUCT
 	GIV(primFailCode) = PrimErrUnsupported;
+	return 0;
 }
 
 

Modified: branches/Cog/src/vm/cointerpmt.h
===================================================================
--- branches/Cog/src/vm/cointerpmt.h	2014-10-03 21:49:26 UTC (rev 3095)
+++ branches/Cog/src/vm/cointerpmt.h	2014-10-05 21:56:54 UTC (rev 3096)
@@ -1,5 +1,5 @@
 /* Automatically generated by
-	CCodeGeneratorGlobalStructure VMMaker.oscog-eem.887 uuid: f980d45a-5622-46f6-95d9-ac8d00a34e81
+	CCodeGeneratorGlobalStructure VMMaker.oscog-eem.891 uuid: 2b1ec85c-bd1d-4299-938a-80aef455e476
  */
 
 
@@ -141,7 +141,7 @@
 sqInt literalCountOfMethodHeader(sqInt header);
 void longPrintReferencesTo(sqInt anOop);
 sqInt objectAfter(sqInt oop);
-void pinObject(sqInt objOop);
+sqInt pinObject(sqInt objOop);
 void printObjectsFromto(sqInt startAddress, sqInt endAddress);
 void printReferencesTo(sqInt anOop);
 void printWronglySizedContexts(sqInt printContexts);

Modified: branches/Cog/src/vm/gcc3x-cointerp.c
===================================================================
--- branches/Cog/src/vm/gcc3x-cointerp.c	2014-10-03 21:49:26 UTC (rev 3095)
+++ branches/Cog/src/vm/gcc3x-cointerp.c	2014-10-05 21:56:54 UTC (rev 3096)
@@ -2,11 +2,11 @@
 
 
 /* Automatically generated by
-	CCodeGeneratorGlobalStructure VMMaker.oscog-eem.887 uuid: f980d45a-5622-46f6-95d9-ac8d00a34e81
+	CCodeGeneratorGlobalStructure VMMaker.oscog-eem.891 uuid: 2b1ec85c-bd1d-4299-938a-80aef455e476
    from
-	CoInterpreter VMMaker.oscog-eem.887 uuid: f980d45a-5622-46f6-95d9-ac8d00a34e81
+	CoInterpreter VMMaker.oscog-eem.891 uuid: 2b1ec85c-bd1d-4299-938a-80aef455e476
  */
-static char __buildInfo[] = "CoInterpreter VMMaker.oscog-eem.887 uuid: f980d45a-5622-46f6-95d9-ac8d00a34e81 " __DATE__ ;
+static char __buildInfo[] = "CoInterpreter VMMaker.oscog-eem.891 uuid: 2b1ec85c-bd1d-4299-938a-80aef455e476 " __DATE__ ;
 char *__interpBuildInfo = __buildInfo;
 
 
@@ -838,7 +838,7 @@
 sqInt objectAfter(sqInt oop);
 static sqInt okayOop(sqInt signedOop) NoDbgRegParms;
 static sqInt oopHasAcceptableClass(sqInt signedOop) NoDbgRegParms;
-void pinObject(sqInt objOop);
+sqInt pinObject(sqInt objOop);
 static sqInt prepareForwardingTableForBecomingwithtwoWay(sqInt array1, sqInt array2, sqInt twoWayFlag) NoDbgRegParms;
 void printMemory(void);
 void printObjectsFromto(sqInt startAddress, sqInt endAddress);
@@ -846,7 +846,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;
@@ -2076,7 +2076,7 @@
 	/* 574 */ (void (*)(void))0,
 	/* 575 */ (void (*)(void))0,
  0 };
-const char *interpreterVersion = "Croquet Closure Cog VM [CoInterpreterPrimitives VMMaker.oscog-eem.887]";
+const char *interpreterVersion = "Croquet Closure Cog VM [CoInterpreterPrimitives VMMaker.oscog-eem.891]";
 sqInt minBackwardJumpCountForCompile = MinBackwardJumpCountForCompile /* 40 */;
 volatile int sendTrace;
 
@@ -26289,16 +26289,15 @@
 }
 
 
-/*	Pin or unpin the receiver, i.e. make it immobile or mobile. Answer whether
-	the object was
-	already pinned. N.B. pinning does *not* prevent an object from being
-	garbage collected. */
+/*	Pin or unpin the receiver, i.e. make it immobile or mobile, based on the
+	argument. Answer whether the object was already pinned. N.B. pinning does
+	*not* prevent
+	an object from being garbage collected. */
 
 static void
 primitivePin(void)
 {   DECL_MAYBE_SQ_GLOBAL_STRUCT
     sqInt boolean;
-    sqInt failure;
     sqInt obj;
     char *sp;
     sqInt wasPinned;
@@ -26323,10 +26322,9 @@
 		return;
 	}
 	wasPinned = GIV(falseObj);
-	/* begin pinObject: */
-	GIV(primFailCode) = PrimErrUnsupported;
-	if (failure != 0) {
-		(GIV(primFailCode) = failure);
+	if (((boolean == GIV(trueObj))
+ && (pinObject(obj))) == 0) {
+		(GIV(primFailCode) = PrimErrNoMemory);
 		return;
 	}
 
@@ -32211,17 +32209,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;
 
@@ -32232,21 +32228,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;
@@ -32261,7 +32243,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)) {
 
@@ -32315,18 +32297,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 = ((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)) {
@@ -33476,10 +33458,11 @@
 	pinning. 
  */
 
-void
+sqInt
 pinObject(sqInt objOop)
 {   DECL_MAYBE_SQ_GLOBAL_STRUCT
 	GIV(primFailCode) = PrimErrUnsupported;
+	return 0;
 }
 
 
@@ -34198,7 +34181,7 @@
 	given object or free chunk in memory. Return freeStart when
 	enumeration is complete. This is for assertion checking only. */
 
-static sqInt
+static usqInt
 safeObjectAfter(sqInt oop)
 {   DECL_MAYBE_SQ_GLOBAL_STRUCT
     sqInt header;

Modified: branches/Cog/src/vm/gcc3x-cointerpmt.c
===================================================================
--- branches/Cog/src/vm/gcc3x-cointerpmt.c	2014-10-03 21:49:26 UTC (rev 3095)
+++ branches/Cog/src/vm/gcc3x-cointerpmt.c	2014-10-05 21:56:54 UTC (rev 3096)
@@ -2,11 +2,11 @@
 
 
 /* Automatically generated by
-	CCodeGeneratorGlobalStructure VMMaker.oscog-eem.887 uuid: f980d45a-5622-46f6-95d9-ac8d00a34e81
+	CCodeGeneratorGlobalStructure VMMaker.oscog-eem.891 uuid: 2b1ec85c-bd1d-4299-938a-80aef455e476
    from
-	CoInterpreterMT VMMaker.oscog-eem.887 uuid: f980d45a-5622-46f6-95d9-ac8d00a34e81
+	CoInterpreterMT VMMaker.oscog-eem.891 uuid: 2b1ec85c-bd1d-4299-938a-80aef455e476
  */
-static char __buildInfo[] = "CoInterpreterMT VMMaker.oscog-eem.887 uuid: f980d45a-5622-46f6-95d9-ac8d00a34e81 " __DATE__ ;
+static char __buildInfo[] = "CoInterpreterMT VMMaker.oscog-eem.891 uuid: 2b1ec85c-bd1d-4299-938a-80aef455e476 " __DATE__ ;
 char *__interpBuildInfo = __buildInfo;
 
 
@@ -924,7 +924,7 @@
 sqInt objectAfter(sqInt oop);
 static sqInt okayOop(sqInt signedOop) NoDbgRegParms;
 static sqInt oopHasAcceptableClass(sqInt signedOop) NoDbgRegParms;
-void pinObject(sqInt objOop);
+sqInt pinObject(sqInt objOop);
 static sqInt prepareForwardingTableForBecomingwithtwoWay(sqInt array1, sqInt array2, sqInt twoWayFlag) NoDbgRegParms;
 void printMemory(void);
 void printObjectsFromto(sqInt startAddress, sqInt endAddress);
@@ -2173,7 +2173,7 @@
 	/* 574 */ (void (*)(void))0,
 	/* 575 */ (void (*)(void))0,
  0 };
-const char *interpreterVersion = "Croquet Closure Cog MT VM [CoInterpreterMT VMMaker.oscog-eem.887]";
+const char *interpreterVersion = "Croquet Closure Cog MT VM [CoInterpreterMT VMMaker.oscog-eem.891]";
 sqInt minBackwardJumpCountForCompile = MinBackwardJumpCountForCompile /* 40 */;
 volatile int sendTrace;
 sqInt willNotThreadWarnCount;
@@ -28653,16 +28653,15 @@
 }
 
 
-/*	Pin or unpin the receiver, i.e. make it immobile or mobile. Answer whether
-	the object was
-	already pinned. N.B. pinning does *not* prevent an object from being
-	garbage collected. */
+/*	Pin or unpin the receiver, i.e. make it immobile or mobile, based on the
+	argument. Answer whether the object was already pinned. N.B. pinning does
+	*not* prevent
+	an object from being garbage collected. */
 
 static void
 primitivePin(void)
 {   DECL_MAYBE_SQ_GLOBAL_STRUCT
     sqInt boolean;
-    sqInt failure;
     sqInt obj;
     char *sp;
     sqInt wasPinned;
@@ -28687,10 +28686,9 @@
 		return;
 	}
 	wasPinned = GIV(falseObj);
-	/* begin pinObject: */
-	GIV(primFailCode) = PrimErrUnsupported;
-	if (failure != 0) {
-		(GIV(primFailCode) = failure);
+	if (((boolean == GIV(trueObj))
+ && (pinObject(obj))) == 0) {
+		(GIV(primFailCode) = PrimErrNoMemory);
 		return;
 	}
 
@@ -35793,10 +35791,11 @@
 	pinning. 
  */
 
-void
+sqInt
 pinObject(sqInt objOop)
 {   DECL_MAYBE_SQ_GLOBAL_STRUCT
 	GIV(primFailCode) = PrimErrUnsupported;
+	return 0;
 }
 
 

Modified: branches/Cog/stacksrc/vm/gcc3x-interp.c
===================================================================
--- branches/Cog/stacksrc/vm/gcc3x-interp.c	2014-10-03 21:49:26 UTC (rev 3095)
+++ branches/Cog/stacksrc/vm/gcc3x-interp.c	2014-10-05 21:56:54 UTC (rev 3096)
@@ -2,11 +2,11 @@
 
 
 /* Automatically generated by
-	CCodeGeneratorGlobalStructure VMMaker.oscog-eem.887 uuid: f980d45a-5622-46f6-95d9-ac8d00a34e81
+	CCodeGeneratorGlobalStructure VMMaker.oscog-eem.891 uuid: 2b1ec85c-bd1d-4299-938a-80aef455e476
    from
-	StackInterpreter VMMaker.oscog-eem.887 uuid: f980d45a-5622-46f6-95d9-ac8d00a34e81
+	StackInterpreter VMMaker.oscog-eem.891 uuid: 2b1ec85c-bd1d-4299-938a-80aef455e476
  */
-static char __buildInfo[] = "StackInterpreter VMMaker.oscog-eem.887 uuid: f980d45a-5622-46f6-95d9-ac8d00a34e81 " __DATE__ ;
+static char __buildInfo[] = "StackInterpreter VMMaker.oscog-eem.891 uuid: 2b1ec85c-bd1d-4299-938a-80aef455e476 " __DATE__ ;
 char *__interpBuildInfo = __buildInfo;
 
 
@@ -597,7 +597,7 @@
 sqInt objectAfter(sqInt oop);
 static sqInt okayOop(sqInt signedOop) NoDbgRegParms;
 static sqInt oopHasAcceptableClass(sqInt signedOop) NoDbgRegParms;
-void pinObject(sqInt objOop);
+sqInt pinObject(sqInt objOop);
 static sqInt prepareForwardingTableForBecomingwithtwoWay(sqInt array1, sqInt array2, sqInt twoWayFlag) NoDbgRegParms;
 void printMemory(void);
 void printObjectsFromto(sqInt startAddress, sqInt endAddress);
@@ -1858,7 +1858,7 @@
  0 };
 char * breakSelector;
 sqInt breakSelectorLength = -1;
-const char *interpreterVersion = "Croquet Closure Stack VM [StackInterpreterPrimitives VMMaker.oscog-eem.887]";
+const char *interpreterVersion = "Croquet Closure Stack VM [StackInterpreterPrimitives VMMaker.oscog-eem.891]";
 volatile int sendTrace;
 sqInt suppressHeartbeatFlag;
 
@@ -16359,16 +16359,15 @@
 }
 
 
-/*	Pin or unpin the receiver, i.e. make it immobile or mobile. Answer whether
-	the object was
-	already pinned. N.B. pinning does *not* prevent an object from being
-	garbage collected. */
+/*	Pin or unpin the receiver, i.e. make it immobile or mobile, based on the
+	argument. Answer whether the object was already pinned. N.B. pinning does
+	*not* prevent
+	an object from being garbage collected. */
 
 static void
 primitivePin(void)
 {   DECL_MAYBE_SQ_GLOBAL_STRUCT
     sqInt boolean;
-    sqInt failure;
     sqInt obj;
     char *sp;
     sqInt wasPinned;
@@ -16393,10 +16392,9 @@
 		return;
 	}

@@ Diff output truncated at 50000 characters. @@


More information about the Vm-dev mailing list