[Vm-dev] [commit][3076] CogVM source as per VMMaker.oscog-eem.878

commits at squeakvm.org commits at squeakvm.org
Fri Sep 12 20:57:41 UTC 2014


Revision: 3076
Author:   eliot
Date:     2014-09-12 13:57:39 -0700 (Fri, 12 Sep 2014)
Log Message:
-----------
CogVM source as per VMMaker.oscog-eem.878

Make sure that the method is set on returning from a callback.
Fixes MNUs of atAddress: in exampleCqsort in the stack VMs.

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-09-10 21:46:44 UTC (rev 3075)
+++ branches/Cog/nscogsrc/vm/cointerp.c	2014-09-12 20:57:39 UTC (rev 3076)
@@ -1,9 +1,9 @@
 /* Automatically generated by
-	CCodeGeneratorGlobalStructure VMMaker.oscog-eem.876 uuid: 85989927-97e3-4111-a351-b242bf444291
+	CCodeGeneratorGlobalStructure VMMaker.oscog-eem.878 uuid: 4165e5c9-05a2-4795-9295-8b309fa52e2d
    from
-	CoInterpreter VMMaker.oscog-eem.876 uuid: 85989927-97e3-4111-a351-b242bf444291
+	CoInterpreter VMMaker.oscog-eem.878 uuid: 4165e5c9-05a2-4795-9295-8b309fa52e2d
  */
-static char __buildInfo[] = "CoInterpreter VMMaker.oscog-eem.876 uuid: 85989927-97e3-4111-a351-b242bf444291 " __DATE__ ;
+static char __buildInfo[] = "CoInterpreter VMMaker.oscog-eem.878 uuid: 4165e5c9-05a2-4795-9295-8b309fa52e2d " __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 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;
@@ -2088,7 +2088,7 @@
 	/* 574 */ (void (*)(void))0,
 	/* 575 */ (void (*)(void))0,
  0 };
-const char *interpreterVersion = "Newspeak Virtual Machine CoInterpreterPrimitives_VMMaker.oscog-eem.876";
+const char *interpreterVersion = "Newspeak Virtual Machine CoInterpreterPrimitives_VMMaker.oscog-eem.878";
 sqInt minBackwardJumpCountForCompile = MinBackwardJumpCountForCompile /* 40 */;
 volatile int sendTrace;
 
@@ -4883,7 +4883,6 @@
 							GIV(framePointer) = localFP;
 							
 							ceEnterCogCodePopReceiverReg();
-							null;
 							goto l303;
 						}
 						localIP = pointerForOop(longAt(localFP + FoxIFSavedIP));
@@ -4901,7 +4900,7 @@
 					/* begin fetchNextBytecode */
 					currentBytecode = (byteAtPointer(++localIP)) + GIV(bytecodeSetSelector);
 
-					null;
+					/* return self */
 				l303:	/* end baseFrameReturn */;
 					goto l302;
 				}
@@ -36773,15 +36772,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;
 
@@ -36792,7 +36793,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;
@@ -36807,7 +36822,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)) {
 
@@ -36861,18 +36876,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 = ((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)) {
@@ -38744,7 +38759,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;
@@ -50620,6 +50635,14 @@
 	top = longAt(GIV(stackPointer));
 	GIV(stackPointer) += BytesPerWord;
 	GIV(instructionPointer) = ((sqInt) top);
+	/* begin setMethod: */
+	assert((((usqInt)(longAt((calloutMethodContext + BaseHeaderSize) + (MethodIndex << ShiftForWord))))) >= (startOfMemory()));
+	GIV(method) = longAt((calloutMethodContext + BaseHeaderSize) + (MethodIndex << ShiftForWord));
+	assert(isOopCompiledMethod(GIV(method)));
+	GIV(bytecodeSetSelector) = (headerIndicatesAlternateBytecodeSet(methodHeaderOf(GIV(method)))
+		? 256
+		: 0);
+
 	/* begin setStackPageAndLimit: */
 	assert(thePage != 0);
 	GIV(stackPage) = thePage;
@@ -54362,7 +54385,7 @@
 	assert(pageListIsWellFormed());
 	
 	if (GIV(fullGCLock) > 0) {
-		(GIV(primFailCode) = PrimErrInappropriate);
+		GIV(primFailCode) = PrimErrInappropriate;
 		return;
 	}
 	incrementalGC();

Modified: branches/Cog/nscogsrc/vm/cointerp.h
===================================================================
--- branches/Cog/nscogsrc/vm/cointerp.h	2014-09-10 21:46:44 UTC (rev 3075)
+++ branches/Cog/nscogsrc/vm/cointerp.h	2014-09-12 20:57:39 UTC (rev 3076)
@@ -1,5 +1,5 @@
 /* Automatically generated by
-	CCodeGeneratorGlobalStructure VMMaker.oscog-eem.876 uuid: 85989927-97e3-4111-a351-b242bf444291
+	CCodeGeneratorGlobalStructure VMMaker.oscog-eem.878 uuid: 4165e5c9-05a2-4795-9295-8b309fa52e2d
  */
 
 

Modified: branches/Cog/nscogsrc/vm/gcc3x-cointerp.c
===================================================================
--- branches/Cog/nscogsrc/vm/gcc3x-cointerp.c	2014-09-10 21:46:44 UTC (rev 3075)
+++ branches/Cog/nscogsrc/vm/gcc3x-cointerp.c	2014-09-12 20:57:39 UTC (rev 3076)
@@ -2,11 +2,11 @@
 
 
 /* Automatically generated by
-	CCodeGeneratorGlobalStructure VMMaker.oscog-eem.876 uuid: 85989927-97e3-4111-a351-b242bf444291
+	CCodeGeneratorGlobalStructure VMMaker.oscog-eem.878 uuid: 4165e5c9-05a2-4795-9295-8b309fa52e2d
    from
-	CoInterpreter VMMaker.oscog-eem.876 uuid: 85989927-97e3-4111-a351-b242bf444291
+	CoInterpreter VMMaker.oscog-eem.878 uuid: 4165e5c9-05a2-4795-9295-8b309fa52e2d
  */
-static char __buildInfo[] = "CoInterpreter VMMaker.oscog-eem.876 uuid: 85989927-97e3-4111-a351-b242bf444291 " __DATE__ ;
+static char __buildInfo[] = "CoInterpreter VMMaker.oscog-eem.878 uuid: 4165e5c9-05a2-4795-9295-8b309fa52e2d " __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 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;
@@ -2091,7 +2091,7 @@
 	/* 574 */ (void (*)(void))0,
 	/* 575 */ (void (*)(void))0,
  0 };
-const char *interpreterVersion = "Newspeak Virtual Machine CoInterpreterPrimitives_VMMaker.oscog-eem.876";
+const char *interpreterVersion = "Newspeak Virtual Machine CoInterpreterPrimitives_VMMaker.oscog-eem.878";
 sqInt minBackwardJumpCountForCompile = MinBackwardJumpCountForCompile /* 40 */;
 volatile int sendTrace;
 
@@ -4892,7 +4892,6 @@
 							GIV(framePointer) = localFP;
 							
 							ceEnterCogCodePopReceiverReg();
-							null;
 							goto l303;
 						}
 						localIP = pointerForOop(longAt(localFP + FoxIFSavedIP));
@@ -4910,7 +4909,7 @@
 					/* begin fetchNextBytecode */
 					currentBytecode = (byteAtPointer(++localIP)) + GIV(bytecodeSetSelector);
 
-					null;
+					/* return self */
 				l303:	/* end baseFrameReturn */;
 					goto l302;
 				}
@@ -36782,15 +36781,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;
 
@@ -36801,7 +36802,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;
@@ -36816,7 +36831,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)) {
 
@@ -36870,18 +36885,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 = ((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)) {
@@ -38753,7 +38768,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;
@@ -50629,6 +50644,14 @@
 	top = longAt(GIV(stackPointer));
 	GIV(stackPointer) += BytesPerWord;
 	GIV(instructionPointer) = ((sqInt) top);
+	/* begin setMethod: */
+	assert((((usqInt)(longAt((calloutMethodContext + BaseHeaderSize) + (MethodIndex << ShiftForWord))))) >= (startOfMemory()));
+	GIV(method) = longAt((calloutMethodContext + BaseHeaderSize) + (MethodIndex << ShiftForWord));
+	assert(isOopCompiledMethod(GIV(method)));
+	GIV(bytecodeSetSelector) = (headerIndicatesAlternateBytecodeSet(methodHeaderOf(GIV(method)))
+		? 256
+		: 0);
+
 	/* begin setStackPageAndLimit: */
 	assert(thePage != 0);
 	GIV(stackPage) = thePage;
@@ -54371,7 +54394,7 @@
 	assert(pageListIsWellFormed());
 	
 	if (GIV(fullGCLock) > 0) {
-		(GIV(primFailCode) = PrimErrInappropriate);
+		GIV(primFailCode) = PrimErrInappropriate;
 		return;
 	}
 	incrementalGC();

Modified: branches/Cog/nsspursrc/vm/cointerp.c
===================================================================
--- branches/Cog/nsspursrc/vm/cointerp.c	2014-09-10 21:46:44 UTC (rev 3075)
+++ branches/Cog/nsspursrc/vm/cointerp.c	2014-09-12 20:57:39 UTC (rev 3076)
@@ -1,9 +1,9 @@
 /* Automatically generated by
-	CCodeGeneratorGlobalStructure VMMaker.oscog-eem.876 uuid: 85989927-97e3-4111-a351-b242bf444291
+	CCodeGeneratorGlobalStructure VMMaker.oscog-eem.878 uuid: 4165e5c9-05a2-4795-9295-8b309fa52e2d
    from
-	CoInterpreter VMMaker.oscog-eem.876 uuid: 85989927-97e3-4111-a351-b242bf444291
+	CoInterpreter VMMaker.oscog-eem.878 uuid: 4165e5c9-05a2-4795-9295-8b309fa52e2d
  */
-static char __buildInfo[] = "CoInterpreter VMMaker.oscog-eem.876 uuid: 85989927-97e3-4111-a351-b242bf444291 " __DATE__ ;
+static char __buildInfo[] = "CoInterpreter VMMaker.oscog-eem.878 uuid: 4165e5c9-05a2-4795-9295-8b309fa52e2d " __DATE__ ;
 char *__interpBuildInfo = __buildInfo;
 
 
@@ -2324,7 +2324,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.876";
+const char *interpreterVersion = "Newspeak Virtual Machine CoInterpreterPrimitives_VMMaker.oscog-eem.878";
 sqInt minBackwardJumpCountForCompile = MinBackwardJumpCountForCompile /* 40 */;
 volatile int sendTrace;
 
@@ -5616,7 +5616,6 @@
 							GIV(framePointer) = localFP;
 							
 							ceEnterCogCodePopReceiverReg();
-							null;
 							goto l292;
 						}
 						localIP = pointerForOop(longAt(localFP + FoxIFSavedIP));
@@ -5634,7 +5633,7 @@
 					/* begin fetchNextBytecode */
 					currentBytecode = (byteAtPointer(++localIP)) + GIV(bytecodeSetSelector);
 
-					null;
+					/* return self */
 				l292:	/* end baseFrameReturn */;
 					goto l291;
 				}
@@ -62479,6 +62478,14 @@
 	top = longAt(GIV(stackPointer));
 	GIV(stackPointer) += BytesPerWord;
 	GIV(instructionPointer) = ((sqInt) top);
+	/* begin setMethod: */
+	assert((((usqInt)(longAt((calloutMethodContext + (BaseHeaderSize)) + (MethodIndex << 2))))) >= (startOfMemory()));
+	GIV(method) = longAt((calloutMethodContext + (BaseHeaderSize)) + (MethodIndex << 2));
+	assert(isOopCompiledMethod(GIV(method)));
+	GIV(bytecodeSetSelector) = (headerIndicatesAlternateBytecodeSet(methodHeaderOf(GIV(method)))
+		? 256
+		: 0);
+
 	/* begin setStackPageAndLimit: */
 	assert(thePage != 0);
 	GIV(stackPage) = thePage;
@@ -64770,7 +64777,7 @@
 
 	index = longAt(GIV(stackPointer));
 	if (!((index & 1))) {
-		GIV(primFailCode) = PrimErrBadArgument;
+		(GIV(primFailCode) = PrimErrBadArgument);
 		return;
 	}
 	index = (index >> 1);
@@ -64987,7 +64994,7 @@
 		stSize = (sp1 >> 1);
 	l2:	/* end fetchStackPointerOf: */;
 		if (!(((index >= 1) && (index <= stSize)))) {
-			GIV(primFailCode) = PrimErrBadIndex;
+			(GIV(primFailCode) = PrimErrBadIndex);
 			return;
 		}
 		/* begin subscript:with:format: */
@@ -65012,7 +65019,7 @@
 	assert((senderOop & 1));
 	spouseFP = pointerForOop(senderOop - 1);
 	if (!(((index >= 1) && (index <= (stackPointerIndexForFrame(spouseFP)))))) {
-		GIV(primFailCode) = PrimErrBadIndex;
+		(GIV(primFailCode) = PrimErrBadIndex);
 		return;
 	}
 	value = ((((usqInt)(longAt(spouseFP + FoxMethod)))) < (startOfMemory())
@@ -65075,7 +65082,7 @@
 	index = longAt(GIV(stackPointer) + (1 * BytesPerWord));
 	aContext = longAt(GIV(stackPointer) + (2 * BytesPerWord));
 	if (!((index & 1))) {
-		GIV(primFailCode) = PrimErrBadArgument;
+		(GIV(primFailCode) = PrimErrBadArgument);
 		return;
 	}
 	hdr = long64At(aContext);
@@ -65321,7 +65328,7 @@
 		stSize = (sp1 >> 1);
 	l2:	/* end fetchStackPointerOf: */;
 		if (!(((index >= 1) && (index <= stSize)))) {
-			GIV(primFailCode) = PrimErrBadIndex;
+			(GIV(primFailCode) = PrimErrBadIndex);
 			return;
 		}
 		/* begin subscript:with:storing:format: */
@@ -65377,7 +65384,7 @@
 	assert((senderOop & 1));
 	spouseFP = pointerForOop(senderOop - 1);
 	if (!(((index >= 1) && (index <= (stackPointerIndexForFrame(spouseFP)))))) {
-		GIV(primFailCode) = PrimErrBadIndex;
+		(GIV(primFailCode) = PrimErrBadIndex);
 		return;
 	}
 	if ((((usqInt)(longAt(spouseFP + FoxMethod)))) < (startOfMemory())) {

Modified: branches/Cog/nsspursrc/vm/cointerp.h
===================================================================
--- branches/Cog/nsspursrc/vm/cointerp.h	2014-09-10 21:46:44 UTC (rev 3075)
+++ branches/Cog/nsspursrc/vm/cointerp.h	2014-09-12 20:57:39 UTC (rev 3076)
@@ -1,5 +1,5 @@
 /* Automatically generated by
-	CCodeGeneratorGlobalStructure VMMaker.oscog-eem.876 uuid: 85989927-97e3-4111-a351-b242bf444291
+	CCodeGeneratorGlobalStructure VMMaker.oscog-eem.878 uuid: 4165e5c9-05a2-4795-9295-8b309fa52e2d
  */
 
 

Modified: branches/Cog/nsspursrc/vm/gcc3x-cointerp.c
===================================================================
--- branches/Cog/nsspursrc/vm/gcc3x-cointerp.c	2014-09-10 21:46:44 UTC (rev 3075)
+++ branches/Cog/nsspursrc/vm/gcc3x-cointerp.c	2014-09-12 20:57:39 UTC (rev 3076)
@@ -2,11 +2,11 @@
 
 
 /* Automatically generated by
-	CCodeGeneratorGlobalStructure VMMaker.oscog-eem.876 uuid: 85989927-97e3-4111-a351-b242bf444291
+	CCodeGeneratorGlobalStructure VMMaker.oscog-eem.878 uuid: 4165e5c9-05a2-4795-9295-8b309fa52e2d
    from
-	CoInterpreter VMMaker.oscog-eem.876 uuid: 85989927-97e3-4111-a351-b242bf444291
+	CoInterpreter VMMaker.oscog-eem.878 uuid: 4165e5c9-05a2-4795-9295-8b309fa52e2d
  */
-static char __buildInfo[] = "CoInterpreter VMMaker.oscog-eem.876 uuid: 85989927-97e3-4111-a351-b242bf444291 " __DATE__ ;
+static char __buildInfo[] = "CoInterpreter VMMaker.oscog-eem.878 uuid: 4165e5c9-05a2-4795-9295-8b309fa52e2d " __DATE__ ;
 char *__interpBuildInfo = __buildInfo;
 
 
@@ -2327,7 +2327,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.876";
+const char *interpreterVersion = "Newspeak Virtual Machine CoInterpreterPrimitives_VMMaker.oscog-eem.878";
 sqInt minBackwardJumpCountForCompile = MinBackwardJumpCountForCompile /* 40 */;
 volatile int sendTrace;
 
@@ -5625,7 +5625,6 @@
 							GIV(framePointer) = localFP;
 							
 							ceEnterCogCodePopReceiverReg();
-							null;
 							goto l292;
 						}
 						localIP = pointerForOop(longAt(localFP + FoxIFSavedIP));
@@ -5643,7 +5642,7 @@
 					/* begin fetchNextBytecode */
 					currentBytecode = (byteAtPointer(++localIP)) + GIV(bytecodeSetSelector);
 
-					null;
+					/* return self */
 				l292:	/* end baseFrameReturn */;
 					goto l291;
 				}
@@ -62488,6 +62487,14 @@
 	top = longAt(GIV(stackPointer));
 	GIV(stackPointer) += BytesPerWord;
 	GIV(instructionPointer) = ((sqInt) top);
+	/* begin setMethod: */
+	assert((((usqInt)(longAt((calloutMethodContext + (BaseHeaderSize)) + (MethodIndex << 2))))) >= (startOfMemory()));
+	GIV(method) = longAt((calloutMethodContext + (BaseHeaderSize)) + (MethodIndex << 2));
+	assert(isOopCompiledMethod(GIV(method)));
+	GIV(bytecodeSetSelector) = (headerIndicatesAlternateBytecodeSet(methodHeaderOf(GIV(method)))
+		? 256
+		: 0);
+
 	/* begin setStackPageAndLimit: */
 	assert(thePage != 0);
 	GIV(stackPage) = thePage;
@@ -64779,7 +64786,7 @@
 
 	index = longAt(GIV(stackPointer));
 	if (!((index & 1))) {
-		GIV(primFailCode) = PrimErrBadArgument;
+		(GIV(primFailCode) = PrimErrBadArgument);
 		return;
 	}
 	index = (index >> 1);
@@ -64996,7 +65003,7 @@
 		stSize = (sp1 >> 1);
 	l2:	/* end fetchStackPointerOf: */;
 		if (!(((index >= 1) && (index <= stSize)))) {
-			GIV(primFailCode) = PrimErrBadIndex;
+			(GIV(primFailCode) = PrimErrBadIndex);
 			return;
 		}
 		/* begin subscript:with:format: */
@@ -65021,7 +65028,7 @@
 	assert((senderOop & 1));
 	spouseFP = pointerForOop(senderOop - 1);
 	if (!(((index >= 1) && (index <= (stackPointerIndexForFrame(spouseFP)))))) {
-		GIV(primFailCode) = PrimErrBadIndex;
+		(GIV(primFailCode) = PrimErrBadIndex);
 		return;
 	}
 	value = ((((usqInt)(longAt(spouseFP + FoxMethod)))) < (startOfMemory())
@@ -65084,7 +65091,7 @@
 	index = longAt(GIV(stackPointer) + (1 * BytesPerWord));
 	aContext = longAt(GIV(stackPointer) + (2 * BytesPerWord));
 	if (!((index & 1))) {
-		GIV(primFailCode) = PrimErrBadArgument;
+		(GIV(primFailCode) = PrimErrBadArgument);
 		return;
 	}
 	hdr = long64At(aContext);
@@ -65330,7 +65337,7 @@
 		stSize = (sp1 >> 1);
 	l2:	/* end fetchStackPointerOf: */;
 		if (!(((index >= 1) && (index <= stSize)))) {
-			GIV(primFailCode) = PrimErrBadIndex;
+			(GIV(primFailCode) = PrimErrBadIndex);
 			return;
 		}
 		/* begin subscript:with:storing:format: */
@@ -65386,7 +65393,7 @@
 	assert((senderOop & 1));
 	spouseFP = pointerForOop(senderOop - 1);
 	if (!(((index >= 1) && (index <= (stackPointerIndexForFrame(spouseFP)))))) {
-		GIV(primFailCode) = PrimErrBadIndex;
+		(GIV(primFailCode) = PrimErrBadIndex);
 		return;
 	}
 	if ((((usqInt)(longAt(spouseFP + FoxMethod)))) < (startOfMemory())) {

Modified: branches/Cog/nsspurstacksrc/vm/gcc3x-interp.c
===================================================================
--- branches/Cog/nsspurstacksrc/vm/gcc3x-interp.c	2014-09-10 21:46:44 UTC (rev 3075)
+++ branches/Cog/nsspurstacksrc/vm/gcc3x-interp.c	2014-09-12 20:57:39 UTC (rev 3076)
@@ -2,11 +2,11 @@
 
 
 /* Automatically generated by
-	CCodeGeneratorGlobalStructure VMMaker.oscog-eem.876 uuid: 85989927-97e3-4111-a351-b242bf444291
+	CCodeGeneratorGlobalStructure VMMaker.oscog-eem.878 uuid: 4165e5c9-05a2-4795-9295-8b309fa52e2d
    from
-	StackInterpreter VMMaker.oscog-eem.876 uuid: 85989927-97e3-4111-a351-b242bf444291
+	StackInterpreter VMMaker.oscog-eem.878 uuid: 4165e5c9-05a2-4795-9295-8b309fa52e2d
  */
-static char __buildInfo[] = "StackInterpreter VMMaker.oscog-eem.876 uuid: 85989927-97e3-4111-a351-b242bf444291 " __DATE__ ;
+static char __buildInfo[] = "StackInterpreter VMMaker.oscog-eem.878 uuid: 4165e5c9-05a2-4795-9295-8b309fa52e2d " __DATE__ ;
 char *__interpBuildInfo = __buildInfo;
 
 
@@ -2073,7 +2073,7 @@
  0 };
 char * breakSelector;
 sqInt breakSelectorLength = -1;
-const char *interpreterVersion = "Newspeak Virtual Machine StackInterpreterPrimitives_VMMaker.oscog-eem.876";
+const char *interpreterVersion = "Newspeak Virtual Machine StackInterpreterPrimitives_VMMaker.oscog-eem.878";
 volatile int sendTrace;
 sqInt suppressHeartbeatFlag;
 
@@ -52956,6 +52956,13 @@
 	top = longAt(GIV(stackPointer));
 	GIV(stackPointer) += BytesPerWord;
 	GIV(instructionPointer) = ((sqInt) top);
+	/* begin setMethod: */
+	GIV(method) = longAt((calloutMethodContext + (BaseHeaderSize)) + (MethodIndex << 2));
+	assert(isOopCompiledMethod(GIV(method)));
+	GIV(bytecodeSetSelector) = (methodUsesAlternateBytecodeSet(GIV(method))
+		? 256
+		: 0);
+
 	/* begin setStackPageAndLimit: */
 	assert(thePage != 0);
 	GIV(stackPage) = thePage;

Modified: branches/Cog/nsspurstacksrc/vm/interp.c
===================================================================
--- branches/Cog/nsspurstacksrc/vm/interp.c	2014-09-10 21:46:44 UTC (rev 3075)
+++ branches/Cog/nsspurstacksrc/vm/interp.c	2014-09-12 20:57:39 UTC (rev 3076)
@@ -1,9 +1,9 @@
 /* Automatically generated by
-	CCodeGeneratorGlobalStructure VMMaker.oscog-eem.876 uuid: 85989927-97e3-4111-a351-b242bf444291
+	CCodeGeneratorGlobalStructure VMMaker.oscog-eem.878 uuid: 4165e5c9-05a2-4795-9295-8b309fa52e2d
    from
-	StackInterpreter VMMaker.oscog-eem.876 uuid: 85989927-97e3-4111-a351-b242bf444291
+	StackInterpreter VMMaker.oscog-eem.878 uuid: 4165e5c9-05a2-4795-9295-8b309fa52e2d
  */
-static char __buildInfo[] = "StackInterpreter VMMaker.oscog-eem.876 uuid: 85989927-97e3-4111-a351-b242bf444291 " __DATE__ ;
+static char __buildInfo[] = "StackInterpreter VMMaker.oscog-eem.878 uuid: 4165e5c9-05a2-4795-9295-8b309fa52e2d " __DATE__ ;
 char *__interpBuildInfo = __buildInfo;
 
 
@@ -2070,7 +2070,7 @@
  0 };
 char * breakSelector;
 sqInt breakSelectorLength = -1;
-const char *interpreterVersion = "Newspeak Virtual Machine StackInterpreterPrimitives_VMMaker.oscog-eem.876";
+const char *interpreterVersion = "Newspeak Virtual Machine StackInterpreterPrimitives_VMMaker.oscog-eem.878";
 volatile int sendTrace;
 sqInt suppressHeartbeatFlag;
 
@@ -52947,6 +52947,13 @@
 	top = longAt(GIV(stackPointer));
 	GIV(stackPointer) += BytesPerWord;
 	GIV(instructionPointer) = ((sqInt) top);
+	/* begin setMethod: */
+	GIV(method) = longAt((calloutMethodContext + (BaseHeaderSize)) + (MethodIndex << 2));
+	assert(isOopCompiledMethod(GIV(method)));
+	GIV(bytecodeSetSelector) = (methodUsesAlternateBytecodeSet(GIV(method))
+		? 256
+		: 0);
+
 	/* begin setStackPageAndLimit: */
 	assert(thePage != 0);
 	GIV(stackPage) = thePage;


Property changes on: branches/Cog/platforms/Cross/vm/sqSCCSVersion.h
___________________________________________________________________
Modified: checkindate
   - Tue Sep  9 10:59:12 PDT 2014
   + Fri Sep 12 13:56:48 PDT 2014

Modified: branches/Cog/sistasrc/vm/cointerp.c
===================================================================
--- branches/Cog/sistasrc/vm/cointerp.c	2014-09-10 21:46:44 UTC (rev 3075)
+++ branches/Cog/sistasrc/vm/cointerp.c	2014-09-12 20:57:39 UTC (rev 3076)
@@ -1,9 +1,9 @@
 /* Automatically generated by
-	CCodeGeneratorGlobalStructure VMMaker.oscog-eem.876 uuid: 85989927-97e3-4111-a351-b242bf444291
+	CCodeGeneratorGlobalStructure VMMaker.oscog-eem.878 uuid: 4165e5c9-05a2-4795-9295-8b309fa52e2d
    from
-	CoInterpreter VMMaker.oscog-eem.876 uuid: 85989927-97e3-4111-a351-b242bf444291
+	CoInterpreter VMMaker.oscog-eem.878 uuid: 4165e5c9-05a2-4795-9295-8b309fa52e2d
  */
-static char __buildInfo[] = "CoInterpreter VMMaker.oscog-eem.876 uuid: 85989927-97e3-4111-a351-b242bf444291 " __DATE__ ;
+static char __buildInfo[] = "CoInterpreter VMMaker.oscog-eem.878 uuid: 4165e5c9-05a2-4795-9295-8b309fa52e2d " __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;
@@ -2085,7 +2085,7 @@
 	/* 574 */ (void (*)(void))0,
 	/* 575 */ (void (*)(void))0,
  0 };
-const char *interpreterVersion = "Croquet Closure Cog VM [CoInterpreterPrimitives VMMaker.oscog-eem.876]";
+const char *interpreterVersion = "Croquet Closure Cog VM [CoInterpreterPrimitives VMMaker.oscog-eem.878]";
 sqInt minBackwardJumpCountForCompile = MinBackwardJumpCountForCompile /* 40 */;
 volatile int sendTrace;
 
@@ -36769,15 +36769,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;
 
@@ -36788,7 +36790,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;
@@ -36803,7 +36819,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)) {
 
@@ -36857,18 +36873,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 = ((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)) {
@@ -38740,7 +38756,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;
@@ -50540,6 +50556,14 @@
 	top = longAt(GIV(stackPointer));
 	GIV(stackPointer) += BytesPerWord;
 	GIV(instructionPointer) = ((sqInt) top);
+	/* begin setMethod: */
+	assert((((usqInt)(longAt((calloutMethodContext + BaseHeaderSize) + (MethodIndex << ShiftForWord))))) >= (startOfMemory()));
+	GIV(method) = longAt((calloutMethodContext + BaseHeaderSize) + (MethodIndex << ShiftForWord));
+	assert(isOopCompiledMethod(GIV(method)));
+	GIV(bytecodeSetSelector) = (headerIndicatesAlternateBytecodeSet(methodHeaderOf(GIV(method)))
+		? 256
+		: 0);
+
 	/* begin setStackPageAndLimit: */
 	assert(thePage != 0);
 	GIV(stackPage) = thePage;
@@ -52841,7 +52865,7 @@
 	index = longAt(GIV(stackPointer) + (1 * BytesPerWord));
 	aContext = longAt(GIV(stackPointer) + (2 * BytesPerWord));
 	if (!((index & 1))) {
-		GIV(primFailCode) = PrimErrBadArgument;
+		(GIV(primFailCode) = PrimErrBadArgument);
 		return;
 	}
 	hdr = longAt(aContext);
@@ -53025,7 +53049,7 @@
 		stSize = (sp1 >> 1);
 	l2:	/* end fetchStackPointerOf: */;
 		if (!(((index >= 1) && (index <= stSize)))) {
-			GIV(primFailCode) = PrimErrBadIndex;
+			(GIV(primFailCode) = PrimErrBadIndex);
 			return;
 		}
 		/* begin subscript:with:storing:format: */
@@ -53071,7 +53095,7 @@
 	assert((senderOop & 1));
 	spouseFP = pointerForOop(senderOop - 1);
 	if (!(((index >= 1) && (index <= (stackPointerIndexForFrame(spouseFP)))))) {
-		GIV(primFailCode) = PrimErrBadIndex;
+		(GIV(primFailCode) = PrimErrBadIndex);
 		return;
 	}
 	if ((((usqInt)(longAt(spouseFP + FoxMethod)))) < (startOfMemory())) {

Modified: branches/Cog/sistasrc/vm/cointerp.h
===================================================================
--- branches/Cog/sistasrc/vm/cointerp.h	2014-09-10 21:46:44 UTC (rev 3075)
+++ branches/Cog/sistasrc/vm/cointerp.h	2014-09-12 20:57:39 UTC (rev 3076)
@@ -1,5 +1,5 @@
 /* Automatically generated by
-	CCodeGeneratorGlobalStructure VMMaker.oscog-eem.876 uuid: 85989927-97e3-4111-a351-b242bf444291
+	CCodeGeneratorGlobalStructure VMMaker.oscog-eem.878 uuid: 4165e5c9-05a2-4795-9295-8b309fa52e2d
  */
 
 

Modified: branches/Cog/sistasrc/vm/gcc3x-cointerp.c
===================================================================
--- branches/Cog/sistasrc/vm/gcc3x-cointerp.c	2014-09-10 21:46:44 UTC (rev 3075)
+++ branches/Cog/sistasrc/vm/gcc3x-cointerp.c	2014-09-12 20:57:39 UTC (rev 3076)
@@ -2,11 +2,11 @@
 
 
 /* Automatically generated by
-	CCodeGeneratorGlobalStructure VMMaker.oscog-eem.876 uuid: 85989927-97e3-4111-a351-b242bf444291
+	CCodeGeneratorGlobalStructure VMMaker.oscog-eem.878 uuid: 4165e5c9-05a2-4795-9295-8b309fa52e2d
    from
-	CoInterpreter VMMaker.oscog-eem.876 uuid: 85989927-97e3-4111-a351-b242bf444291
+	CoInterpreter VMMaker.oscog-eem.878 uuid: 4165e5c9-05a2-4795-9295-8b309fa52e2d
  */
-static char __buildInfo[] = "CoInterpreter VMMaker.oscog-eem.876 uuid: 85989927-97e3-4111-a351-b242bf444291 " __DATE__ ;
+static char __buildInfo[] = "CoInterpreter VMMaker.oscog-eem.878 uuid: 4165e5c9-05a2-4795-9295-8b309fa52e2d " __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;
@@ -2088,7 +2088,7 @@
 	/* 574 */ (void (*)(void))0,
 	/* 575 */ (void (*)(void))0,
  0 };
-const char *interpreterVersion = "Croquet Closure Cog VM [CoInterpreterPrimitives VMMaker.oscog-eem.876]";
+const char *interpreterVersion = "Croquet Closure Cog VM [CoInterpreterPrimitives VMMaker.oscog-eem.878]";
 sqInt minBackwardJumpCountForCompile = MinBackwardJumpCountForCompile /* 40 */;
 volatile int sendTrace;
 
@@ -36778,15 +36778,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;
 
@@ -36797,7 +36799,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;
@@ -36812,7 +36828,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)) {
 
@@ -36866,18 +36882,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 = ((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)) {
@@ -38749,7 +38765,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;
@@ -50549,6 +50565,14 @@
 	top = longAt(GIV(stackPointer));
 	GIV(stackPointer) += BytesPerWord;
 	GIV(instructionPointer) = ((sqInt) top);
+	/* begin setMethod: */
+	assert((((usqInt)(longAt((calloutMethodContext + BaseHeaderSize) + (MethodIndex << ShiftForWord))))) >= (startOfMemory()));
+	GIV(method) = longAt((calloutMethodContext + BaseHeaderSize) + (MethodIndex << ShiftForWord));
+	assert(isOopCompiledMethod(GIV(method)));
+	GIV(bytecodeSetSelector) = (headerIndicatesAlternateBytecodeSet(methodHeaderOf(GIV(method)))
+		? 256
+		: 0);
+
 	/* begin setStackPageAndLimit: */
 	assert(thePage != 0);
 	GIV(stackPage) = thePage;
@@ -52850,7 +52874,7 @@
 	index = longAt(GIV(stackPointer) + (1 * BytesPerWord));
 	aContext = longAt(GIV(stackPointer) + (2 * BytesPerWord));
 	if (!((index & 1))) {
-		GIV(primFailCode) = PrimErrBadArgument;
+		(GIV(primFailCode) = PrimErrBadArgument);
 		return;
 	}
 	hdr = longAt(aContext);
@@ -53034,7 +53058,7 @@
 		stSize = (sp1 >> 1);
 	l2:	/* end fetchStackPointerOf: */;
 		if (!(((index >= 1) && (index <= stSize)))) {
-			GIV(primFailCode) = PrimErrBadIndex;
+			(GIV(primFailCode) = PrimErrBadIndex);
 			return;
 		}
 		/* begin subscript:with:storing:format: */
@@ -53080,7 +53104,7 @@
 	assert((senderOop & 1));
 	spouseFP = pointerForOop(senderOop - 1);
 	if (!(((index >= 1) && (index <= (stackPointerIndexForFrame(spouseFP)))))) {
-		GIV(primFailCode) = PrimErrBadIndex;
+		(GIV(primFailCode) = PrimErrBadIndex);
 		return;
 	}
 	if ((((usqInt)(longAt(spouseFP + FoxMethod)))) < (startOfMemory())) {

Modified: branches/Cog/spursistasrc/vm/cointerp.c
===================================================================
--- branches/Cog/spursistasrc/vm/cointerp.c	2014-09-10 21:46:44 UTC (rev 3075)
+++ branches/Cog/spursistasrc/vm/cointerp.c	2014-09-12 20:57:39 UTC (rev 3076)
@@ -1,9 +1,9 @@
 /* Automatically generated by
-	CCodeGeneratorGlobalStructure VMMaker.oscog-eem.876 uuid: 85989927-97e3-4111-a351-b242bf444291
+	CCodeGeneratorGlobalStructure VMMaker.oscog-eem.878 uuid: 4165e5c9-05a2-4795-9295-8b309fa52e2d
    from
-	CoInterpreter VMMaker.oscog-eem.876 uuid: 85989927-97e3-4111-a351-b242bf444291
+	CoInterpreter VMMaker.oscog-eem.878 uuid: 4165e5c9-05a2-4795-9295-8b309fa52e2d
  */
-static char __buildInfo[] = "CoInterpreter VMMaker.oscog-eem.876 uuid: 85989927-97e3-4111-a351-b242bf444291 " __DATE__ ;
+static char __buildInfo[] = "CoInterpreter VMMaker.oscog-eem.878 uuid: 4165e5c9-05a2-4795-9295-8b309fa52e2d " __DATE__ ;
 char *__interpBuildInfo = __buildInfo;
 
 
@@ -1129,7 +1129,7 @@
 sqInt removeGCRoot(sqInt *varLoc);
 static void runLeakCheckerForFullGCexcludeUnmarkedNewSpaceObjsclassIndicesShouldBeValid(sqInt fullGCFlag, sqInt excludeUnmarkedNewSpaceObjs, sqInt classIndicesShouldBeValid) NoDbgRegParms;
 static void scavengingGCTenuringIf(sqInt tenuringCriterion) NoDbgRegParms;
-static sqInt shortentoIndexableSize(sqInt objOop, sqInt indexableSize) NoDbgRegParms;
+static usqInt shortentoIndexableSize(sqInt objOop, sqInt indexableSize) NoDbgRegParms;
 void shortPrintObjectsFromto(sqInt startAddress, sqInt endAddress);
 sqInt shouldRemapObj(sqInt objOop);
 sqInt shouldRemapOop(sqInt oop);
@@ -2322,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 = "Croquet Closure Cog VM [CoInterpreterPrimitives VMMaker.oscog-eem.876]";
+const char *interpreterVersion = "Croquet Closure Cog VM [CoInterpreterPrimitives VMMaker.oscog-eem.878]";
 sqInt minBackwardJumpCountForCompile = MinBackwardJumpCountForCompile /* 40 */;
 volatile int sendTrace;
 
@@ -51748,7 +51748,7 @@
 	zero if no change
 	was possible. */
 
-static sqInt
+static usqInt
 shortentoIndexableSize(sqInt objOop, sqInt indexableSize)
 {
     usqInt bytesAfter;
@@ -62227,6 +62227,14 @@
 	top = longAt(GIV(stackPointer));
 	GIV(stackPointer) += BytesPerWord;
 	GIV(instructionPointer) = ((sqInt) top);
+	/* begin setMethod: */
+	assert((((usqInt)(longAt((calloutMethodContext + (BaseHeaderSize)) + (MethodIndex << 2))))) >= (startOfMemory()));
+	GIV(method) = longAt((calloutMethodContext + (BaseHeaderSize)) + (MethodIndex << 2));
+	assert(isOopCompiledMethod(GIV(method)));
+	GIV(bytecodeSetSelector) = (headerIndicatesAlternateBytecodeSet(methodHeaderOf(GIV(method)))
+		? 256
+		: 0);
+
 	/* begin setStackPageAndLimit: */
 	assert(thePage != 0);
 	GIV(stackPage) = thePage;

Modified: branches/Cog/spursistasrc/vm/cointerp.h
===================================================================
--- branches/Cog/spursistasrc/vm/cointerp.h	2014-09-10 21:46:44 UTC (rev 3075)
+++ branches/Cog/spursistasrc/vm/cointerp.h	2014-09-12 20:57:39 UTC (rev 3076)
@@ -1,5 +1,5 @@
 /* Automatically generated by
-	CCodeGeneratorGlobalStructure VMMaker.oscog-eem.876 uuid: 85989927-97e3-4111-a351-b242bf444291
+	CCodeGeneratorGlobalStructure VMMaker.oscog-eem.878 uuid: 4165e5c9-05a2-4795-9295-8b309fa52e2d
  */
 
 

Modified: branches/Cog/spursistasrc/vm/gcc3x-cointerp.c
===================================================================
--- branches/Cog/spursistasrc/vm/gcc3x-cointerp.c	2014-09-10 21:46:44 UTC (rev 3075)
+++ branches/Cog/spursistasrc/vm/gcc3x-cointerp.c	2014-09-12 20:57:39 UTC (rev 3076)
@@ -2,11 +2,11 @@
 
 
 /* Automatically generated by
-	CCodeGeneratorGlobalStructure VMMaker.oscog-eem.876 uuid: 85989927-97e3-4111-a351-b242bf444291
+	CCodeGeneratorGlobalStructure VMMaker.oscog-eem.878 uuid: 4165e5c9-05a2-4795-9295-8b309fa52e2d
    from
-	CoInterpreter VMMaker.oscog-eem.876 uuid: 85989927-97e3-4111-a351-b242bf444291
+	CoInterpreter VMMaker.oscog-eem.878 uuid: 4165e5c9-05a2-4795-9295-8b309fa52e2d
  */
-static char __buildInfo[] = "CoInterpreter VMMaker.oscog-eem.876 uuid: 85989927-97e3-4111-a351-b242bf444291 " __DATE__ ;
+static char __buildInfo[] = "CoInterpreter VMMaker.oscog-eem.878 uuid: 4165e5c9-05a2-4795-9295-8b309fa52e2d " __DATE__ ;
 char *__interpBuildInfo = __buildInfo;
 
 
@@ -1132,7 +1132,7 @@
 sqInt removeGCRoot(sqInt *varLoc);
 static void runLeakCheckerForFullGCexcludeUnmarkedNewSpaceObjsclassIndicesShouldBeValid(sqInt fullGCFlag, sqInt excludeUnmarkedNewSpaceObjs, sqInt classIndicesShouldBeValid) NoDbgRegParms;
 static void scavengingGCTenuringIf(sqInt tenuringCriterion) NoDbgRegParms;
-static sqInt shortentoIndexableSize(sqInt objOop, sqInt indexableSize) NoDbgRegParms;
+static usqInt shortentoIndexableSize(sqInt objOop, sqInt indexableSize) NoDbgRegParms;
 void shortPrintObjectsFromto(sqInt startAddress, sqInt endAddress);
 sqInt shouldRemapObj(sqInt objOop);
 sqInt shouldRemapOop(sqInt oop);
@@ -2325,7 +2325,7 @@
 /*540*/	-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,
 /*560*/	-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1, 0, 0, 0,-1,-1
 	};
-const char *interpreterVersion = "Croquet Closure Cog VM [CoInterpreterPrimitives VMMaker.oscog-eem.876]";
+const char *interpreterVersion = "Croquet Closure Cog VM [CoInterpreterPrimitives VMMaker.oscog-eem.878]";
 sqInt minBackwardJumpCountForCompile = MinBackwardJumpCountForCompile /* 40 */;
 volatile int sendTrace;
 
@@ -51757,7 +51757,7 @@
 	zero if no change
 	was possible. */
 
-static sqInt
+static usqInt
 shortentoIndexableSize(sqInt objOop, sqInt indexableSize)
 {
     usqInt bytesAfter;
@@ -62236,6 +62236,14 @@
 	top = longAt(GIV(stackPointer));
 	GIV(stackPointer) += BytesPerWord;
 	GIV(instructionPointer) = ((sqInt) top);
+	/* begin setMethod: */
+	assert((((usqInt)(longAt((calloutMethodContext + (BaseHeaderSize)) + (MethodIndex << 2))))) >= (startOfMemory()));
+	GIV(method) = longAt((calloutMethodContext + (BaseHeaderSize)) + (MethodIndex << 2));
+	assert(isOopCompiledMethod(GIV(method)));
+	GIV(bytecodeSetSelector) = (headerIndicatesAlternateBytecodeSet(methodHeaderOf(GIV(method)))
+		? 256
+		: 0);
+
 	/* begin setStackPageAndLimit: */
 	assert(thePage != 0);
 	GIV(stackPage) = thePage;

Modified: branches/Cog/spursrc/vm/cointerp.c
===================================================================
--- branches/Cog/spursrc/vm/cointerp.c	2014-09-10 21:46:44 UTC (rev 3075)
+++ branches/Cog/spursrc/vm/cointerp.c	2014-09-12 20:57:39 UTC (rev 3076)
@@ -1,9 +1,9 @@
 /* Automatically generated by
-	CCodeGeneratorGlobalStructure VMMaker.oscog-eem.876 uuid: 85989927-97e3-4111-a351-b242bf444291
+	CCodeGeneratorGlobalStructure VMMaker.oscog-eem.878 uuid: 4165e5c9-05a2-4795-9295-8b309fa52e2d
    from
-	CoInterpreter VMMaker.oscog-eem.876 uuid: 85989927-97e3-4111-a351-b242bf444291
+	CoInterpreter VMMaker.oscog-eem.878 uuid: 4165e5c9-05a2-4795-9295-8b309fa52e2d
  */
-static char __buildInfo[] = "CoInterpreter VMMaker.oscog-eem.876 uuid: 85989927-97e3-4111-a351-b242bf444291 " __DATE__ ;
+static char __buildInfo[] = "CoInterpreter VMMaker.oscog-eem.878 uuid: 4165e5c9-05a2-4795-9295-8b309fa52e2d " __DATE__ ;
 char *__interpBuildInfo = __buildInfo;
 
 
@@ -2313,7 +2313,7 @@
 /*540*/	-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,
 /*560*/	-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1, 0, 0, 0,-1,-1
 	};
-const char *interpreterVersion = "Croquet Closure Cog VM [CoInterpreterPrimitives VMMaker.oscog-eem.876]";
+const char *interpreterVersion = "Croquet Closure Cog VM [CoInterpreterPrimitives VMMaker.oscog-eem.878]";
 sqInt minBackwardJumpCountForCompile = MinBackwardJumpCountForCompile /* 40 */;
 volatile int sendTrace;
 
@@ -57191,6 +57191,11 @@
 	top = longAt(GIV(stackPointer));
 	GIV(stackPointer) += BytesPerWord;
 	GIV(instructionPointer) = ((sqInt) top);
+	/* begin setMethod: */
+	assert((((usqInt)(longAt((calloutMethodContext + (BaseHeaderSize)) + (MethodIndex << 2))))) >= (startOfMemory()));
+	GIV(method) = longAt((calloutMethodContext + (BaseHeaderSize)) + (MethodIndex << 2));
+	assert(isOopCompiledMethod(GIV(method)));
+	
 	/* begin setStackPageAndLimit: */
 	assert(thePage != 0);
 	GIV(stackPage) = thePage;
@@ -59477,7 +59482,7 @@
 
 	index = longAt(GIV(stackPointer));
 	if (!((index & 1))) {
-		GIV(primFailCode) = PrimErrBadArgument;
+		(GIV(primFailCode) = PrimErrBadArgument);
 		return;
 	}
 	index = (index >> 1);
@@ -59694,7 +59699,7 @@
 		stSize = (sp1 >> 1);
 	l2:	/* end fetchStackPointerOf: */;
 		if (!(((index >= 1) && (index <= stSize)))) {
-			GIV(primFailCode) = PrimErrBadIndex;
+			(GIV(primFailCode) = PrimErrBadIndex);
 			return;
 		}
 		/* begin subscript:with:format: */
@@ -59719,7 +59724,7 @@
 	assert((senderOop & 1));
 	spouseFP = pointerForOop(senderOop - 1);
 	if (!(((index >= 1) && (index <= (stackPointerIndexForFrame(spouseFP)))))) {
-		GIV(primFailCode) = PrimErrBadIndex;
+		(GIV(primFailCode) = PrimErrBadIndex);
 		return;
 	}
 	value = ((((usqInt)(longAt(spouseFP + FoxMethod)))) < (startOfMemory())
@@ -59782,7 +59787,7 @@
 	index = longAt(GIV(stackPointer) + (1 * BytesPerWord));
 	aContext = longAt(GIV(stackPointer) + (2 * BytesPerWord));
 	if (!((index & 1))) {
-		GIV(primFailCode) = PrimErrBadArgument;
+		(GIV(primFailCode) = PrimErrBadArgument);
 		return;
 	}
 	hdr = long64At(aContext);
@@ -60028,7 +60033,7 @@
 		stSize = (sp1 >> 1);
 	l2:	/* end fetchStackPointerOf: */;
 		if (!(((index >= 1) && (index <= stSize)))) {
-			GIV(primFailCode) = PrimErrBadIndex;
+			(GIV(primFailCode) = PrimErrBadIndex);
 			return;
 		}
 		/* begin subscript:with:storing:format: */
@@ -60084,7 +60089,7 @@
 	assert((senderOop & 1));
 	spouseFP = pointerForOop(senderOop - 1);
 	if (!(((index >= 1) && (index <= (stackPointerIndexForFrame(spouseFP)))))) {
-		GIV(primFailCode) = PrimErrBadIndex;
+		(GIV(primFailCode) = PrimErrBadIndex);
 		return;
 	}
 	if ((((usqInt)(longAt(spouseFP + FoxMethod)))) < (startOfMemory())) {

Modified: branches/Cog/spursrc/vm/cointerp.h
===================================================================
--- branches/Cog/spursrc/vm/cointerp.h	2014-09-10 21:46:44 UTC (rev 3075)
+++ branches/Cog/spursrc/vm/cointerp.h	2014-09-12 20:57:39 UTC (rev 3076)
@@ -1,5 +1,5 @@
 /* Automatically generated by
-	CCodeGeneratorGlobalStructure VMMaker.oscog-eem.876 uuid: 85989927-97e3-4111-a351-b242bf444291
+	CCodeGeneratorGlobalStructure VMMaker.oscog-eem.878 uuid: 4165e5c9-05a2-4795-9295-8b309fa52e2d
  */
 
 

Modified: branches/Cog/spursrc/vm/gcc3x-cointerp.c
===================================================================
--- branches/Cog/spursrc/vm/gcc3x-cointerp.c	2014-09-10 21:46:44 UTC (rev 3075)
+++ branches/Cog/spursrc/vm/gcc3x-cointerp.c	2014-09-12 20:57:39 UTC (rev 3076)
@@ -2,11 +2,11 @@
 
 
 /* Automatically generated by
-	CCodeGeneratorGlobalStructure VMMaker.oscog-eem.876 uuid: 85989927-97e3-4111-a351-b242bf444291
+	CCodeGeneratorGlobalStructure VMMaker.oscog-eem.878 uuid: 4165e5c9-05a2-4795-9295-8b309fa52e2d
    from
-	CoInterpreter VMMaker.oscog-eem.876 uuid: 85989927-97e3-4111-a351-b242bf444291
+	CoInterpreter VMMaker.oscog-eem.878 uuid: 4165e5c9-05a2-4795-9295-8b309fa52e2d
  */
-static char __buildInfo[] = "CoInterpreter VMMaker.oscog-eem.876 uuid: 85989927-97e3-4111-a351-b242bf444291 " __DATE__ ;
+static char __buildInfo[] = "CoInterpreter VMMaker.oscog-eem.878 uuid: 4165e5c9-05a2-4795-9295-8b309fa52e2d " __DATE__ ;
 char *__interpBuildInfo = __buildInfo;
 
 
@@ -2316,7 +2316,7 @@
 /*540*/	-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,
 /*560*/	-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1, 0, 0, 0,-1,-1
 	};
-const char *interpreterVersion = "Croquet Closure Cog VM [CoInterpreterPrimitives VMMaker.oscog-eem.876]";
+const char *interpreterVersion = "Croquet Closure Cog VM [CoInterpreterPrimitives VMMaker.oscog-eem.878]";
 sqInt minBackwardJumpCountForCompile = MinBackwardJumpCountForCompile /* 40 */;
 volatile int sendTrace;
 
@@ -57200,6 +57200,11 @@
 	top = longAt(GIV(stackPointer));
 	GIV(stackPointer) += BytesPerWord;
 	GIV(instructionPointer) = ((sqInt) top);
+	/* begin setMethod: */
+	assert((((usqInt)(longAt((calloutMethodContext + (BaseHeaderSize)) + (MethodIndex << 2))))) >= (startOfMemory()));
+	GIV(method) = longAt((calloutMethodContext + (BaseHeaderSize)) + (MethodIndex << 2));
+	assert(isOopCompiledMethod(GIV(method)));
+	
 	/* begin setStackPageAndLimit: */
 	assert(thePage != 0);
 	GIV(stackPage) = thePage;
@@ -59486,7 +59491,7 @@
 
 	index = longAt(GIV(stackPointer));
 	if (!((index & 1))) {

@@ Diff output truncated at 50000 characters. @@


More information about the Vm-dev mailing list