[Vm-dev] [commit][2824] CogVM source as per VMMaker.oscog-eem.555

commits at squeakvm.org commits at squeakvm.org
Wed Dec 11 01:31:21 UTC 2013


Revision: 2824
Author:   eliot
Date:     2013-12-10 17:31:20 -0800 (Tue, 10 Dec 2013)
Log Message:
-----------
CogVM source as per VMMaker.oscog-eem.555

Rescue compilation of the "classic" VMs by making sure the relevant
forwarding code is considered dead code.

Modified Paths:
--------------
    branches/Cog/nscogsrc/plugins/BitBltPlugin/BitBltPlugin.c
    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/nscogsrc/vm/interp.h
    branches/Cog/nscogsrc/vm/vmCallback.h
    branches/Cog/spursrc/vm/cointerp.c
    branches/Cog/spursrc/vm/cointerp.h
    branches/Cog/spursrc/vm/gcc3x-cointerp.c
    branches/Cog/spursrc/vm/interp.h
    branches/Cog/spursrc/vm/vmCallback.h
    branches/Cog/spurstacksrc/vm/gcc3x-interp.c
    branches/Cog/spurstacksrc/vm/interp.c
    branches/Cog/spurstacksrc/vm/interp.h
    branches/Cog/spurstacksrc/vm/vmCallback.h
    branches/Cog/src/vm/cogit.c
    branches/Cog/src/vm/cogit.h
    branches/Cog/src/vm/cogmethod.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/src/vm/interp.h
    branches/Cog/src/vm/vmCallback.h
    branches/Cog/stacksrc/vm/gcc3x-interp.c
    branches/Cog/stacksrc/vm/interp.c
    branches/Cog/stacksrc/vm/interp.h
    branches/Cog/stacksrc/vm/vmCallback.h

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

Modified: branches/Cog/nscogsrc/plugins/BitBltPlugin/BitBltPlugin.c
===================================================================
--- branches/Cog/nscogsrc/plugins/BitBltPlugin/BitBltPlugin.c	2013-12-11 00:45:24 UTC (rev 2823)
+++ branches/Cog/nscogsrc/plugins/BitBltPlugin/BitBltPlugin.c	2013-12-11 01:31:20 UTC (rev 2824)
@@ -1,9 +1,9 @@
 /* Automatically generated by
-	SmartSyntaxPluginCodeGenerator VMMaker.oscog-eem.536 uuid: c021f329-3f3a-469b-a838-24e74c1be39c
+	SmartSyntaxPluginCodeGenerator VMMaker.oscog-eem.555 uuid: 9b99d897-eecb-4b11-97c9-7f7a75c7d8b0
    from
-	BitBltSimulation VMMaker.oscog-eem.536 uuid: c021f329-3f3a-469b-a838-24e74c1be39c
+	BitBltSimulation VMMaker.oscog-eem.555 uuid: 9b99d897-eecb-4b11-97c9-7f7a75c7d8b0
  */
-static char __buildInfo[] = "BitBltSimulation VMMaker.oscog-eem.536 uuid: c021f329-3f3a-469b-a838-24e74c1be39c " __DATE__ ;
+static char __buildInfo[] = "BitBltSimulation VMMaker.oscog-eem.555 uuid: 9b99d897-eecb-4b11-97c9-7f7a75c7d8b0 " __DATE__ ;
 
 
 
@@ -344,9 +344,9 @@
 };
 static const char *moduleName =
 #ifdef SQUEAK_BUILTIN_PLUGIN
-	"BitBltPlugin VMMaker.oscog-eem.536 (i)"
+	"BitBltPlugin VMMaker.oscog-eem.555 (i)"
 #else
-	"BitBltPlugin VMMaker.oscog-eem.536 (e)"
+	"BitBltPlugin VMMaker.oscog-eem.555 (e)"
 #endif
 ;
 static sqInt noHalftone;
@@ -3923,7 +3923,7 @@
 					l = ((sx < dx) ? sx : dx);
 					r = (((sx < dx) ? dx : sx)) + bbW;
 					t = ((sy < dy) ? sy : dy);
-					b = (((sy < sy) ? sy : sy)) + bbH;
+					b = (((sy < dy) ? dy : sy)) + bbH;
 					sourceBits = fn(sourceHandle, &sourcePitch, l, t, r-l, b-t);
 				}
 				else {

Modified: branches/Cog/nscogsrc/vm/cogit.c
===================================================================
--- branches/Cog/nscogsrc/vm/cogit.c	2013-12-11 00:45:24 UTC (rev 2823)
+++ branches/Cog/nscogsrc/vm/cogit.c	2013-12-11 01:31:20 UTC (rev 2824)
@@ -1,9 +1,9 @@
 /* Automatically generated by
-	CCodeGenerator VMMaker.oscog-eem.554 uuid: a666e7e4-245e-4e8a-9536-3aefd4509f47
+	CCodeGenerator * VMMaker.oscog-eem.554 uuid: a666e7e4-245e-4e8a-9536-3aefd4509f47
    from
-	StackToRegisterMappingCogit VMMaker.oscog-eem.554 uuid: a666e7e4-245e-4e8a-9536-3aefd4509f47
+	StackToRegisterMappingCogit * VMMaker.oscog-eem.554 uuid: a666e7e4-245e-4e8a-9536-3aefd4509f47
  */
-static char __buildInfo[] = "StackToRegisterMappingCogit VMMaker.oscog-eem.554 uuid: a666e7e4-245e-4e8a-9536-3aefd4509f47 " __DATE__ ;
+static char __buildInfo[] = "StackToRegisterMappingCogit * VMMaker.oscog-eem.554 uuid: a666e7e4-245e-4e8a-9536-3aefd4509f47 " __DATE__ ;
 char *__cogitBuildInfo = __buildInfo;
 
 
@@ -14480,11 +14480,11 @@
 genPushRegisterArgsForNumArgs(sqInt numArgs)
 {
 	if (numArgs <= (numRegArgs())) {
+		assert((numRegArgs()) <= 2);
 		/* begin MoveMw:r:R: */
 		genoperandoperandoperand(MoveMwrR, 0, SPReg, TempReg);
 		/* begin MoveR:Mw:r: */
 		genoperandoperandoperand(MoveRMwr, ReceiverResultReg, 0, SPReg);
-		assert((numRegArgs()) <= 2);
 		if (numArgs > 0) {
 			/* begin PushR: */
 			genoperand(PushR, Arg0Reg);
@@ -14495,6 +14495,7 @@
 		}
 		/* begin PushR: */
 		genoperand(PushR, TempReg);
+
 	}
 }
 

Modified: branches/Cog/nscogsrc/vm/cogit.h
===================================================================
--- branches/Cog/nscogsrc/vm/cogit.h	2013-12-11 00:45:24 UTC (rev 2823)
+++ branches/Cog/nscogsrc/vm/cogit.h	2013-12-11 01:31:20 UTC (rev 2824)
@@ -1,5 +1,5 @@
 /* Automatically generated by
-	CCodeGenerator VMMaker.oscog-eem.554 uuid: a666e7e4-245e-4e8a-9536-3aefd4509f47
+	CCodeGenerator * VMMaker.oscog-eem.554 uuid: a666e7e4-245e-4e8a-9536-3aefd4509f47
  */
 
 

Modified: branches/Cog/nscogsrc/vm/cointerp.c
===================================================================
--- branches/Cog/nscogsrc/vm/cointerp.c	2013-12-11 00:45:24 UTC (rev 2823)
+++ branches/Cog/nscogsrc/vm/cointerp.c	2013-12-11 01:31:20 UTC (rev 2824)
@@ -1,9 +1,9 @@
 /* Automatically generated by
-	CCodeGeneratorGlobalStructure VMMaker.oscog-eem.554 uuid: a666e7e4-245e-4e8a-9536-3aefd4509f47
+	CCodeGeneratorGlobalStructure VMMaker.oscog-eem.555 uuid: 9b99d897-eecb-4b11-97c9-7f7a75c7d8b0
    from
-	CoInterpreter VMMaker.oscog-eem.554 uuid: a666e7e4-245e-4e8a-9536-3aefd4509f47
+	CoInterpreter VMMaker.oscog-eem.555 uuid: 9b99d897-eecb-4b11-97c9-7f7a75c7d8b0
  */
-static char __buildInfo[] = "CoInterpreter VMMaker.oscog-eem.554 uuid: a666e7e4-245e-4e8a-9536-3aefd4509f47 " __DATE__ ;
+static char __buildInfo[] = "CoInterpreter VMMaker.oscog-eem.555 uuid: 9b99d897-eecb-4b11-97c9-7f7a75c7d8b0 " __DATE__ ;
 char *__interpBuildInfo = __buildInfo;
 
 
@@ -571,7 +571,6 @@
 sqInt floatObjectOf(double aFloat);
 double floatValueOf(sqInt oop);
 sqInt flushExternalPrimitiveOf(sqInt methodObj);
-static void followForwardedObjectFieldstoDepth(sqInt objOop, sqInt depth);
 static sqInt followForwarded(sqInt objOop);
 static void followForwardingPointersInStackZone(sqInt theBecomeEffectsFlags);
 static void followNecessaryForwardingInMethod(sqInt methodObj);
@@ -587,7 +586,6 @@
 static sqInt frameHasContext(char *theFP);
 static sqInt frameIsBlockActivation(char *theFP);
 static sqInt frameIsMarked(sqInt theFPInt);
-static sqInt frameMethod(char *theFP);
 static sqInt frameNumArgs(char *theFP);
 static char * frameOfMarriedContext(sqInt aContext);
 usqInt framePointerAddress(void);
@@ -618,7 +616,6 @@
 sqInt getThisSessionID(void);
 static sqInt goodContextSize(sqInt oop);
 static sqInt handleMNUInMachineCodeToclassForMessage(sqInt selectorIndex, sqInt rcvr, sqInt classForMessage);
-static sqInt handleSpecialSelectorSendFaultForfpsp(sqInt obj, char *theFP, char *theSP);
 static void handleStackOverflow(void);
 static sqInt handleStackOverflowOrEventAllowContextSwitch(sqInt mayContextSwitch);
 sqInt headerIndicatesAlternateBytecodeSet(sqInt methodHeader);
@@ -1146,7 +1143,7 @@
 static void rewriteMethodCacheEntryForExternalPrimitiveToFunction(void (*localPrimAddress)(void));
 static sqInt roomToPushNArgs(sqInt n);
 static void runLeakCheckerForFullGC(sqInt fullGCFlag);
-static sqInt safeObjectAfter(sqInt oop);
+static usqInt safeObjectAfter(sqInt oop);
 static sqInt safePrintStringOf(sqInt oop);
 usqInt scavengeThresholdAddress(void);
 EXPORT(sqInt) sendInvokeCallbackContext(VMCallbackContext *vmCallbackContext);
@@ -2033,7 +2030,7 @@
 	/* 575 */ (void (*)(void))0,
  0 };
 static void (*externalPrimitiveTable[MaxExternalPrimitiveTableSize + 1 /* 4097 */])(void);
-const char *interpreterVersion = "Newspeak Virtual Machine CoInterpreter_VMMaker.oscog-eem.554";
+const char *interpreterVersion = "Newspeak Virtual Machine CoInterpreter_VMMaker.oscog-eem.555";
 sqInt minBackwardJumpCountForCompile = MinBackwardJumpCountForCompile /* 10 */;
 volatile int sendTrace;
 
@@ -5669,6 +5666,7 @@
 						/* begin internalPush: */
 						longAtPointerput((localSP -= BytesPerOop), longAt((rcvr + BaseHeaderSize) + (byte3 << ShiftForWord)));
 					}
+					null;
 					goto l4;
 				}
 				if (opType == 3) {
@@ -5678,6 +5676,7 @@
 					assert(GIV(method) == (iframeMethod(localFP)));
 					object = longAt((GIV(method) + BaseHeaderSize) + ((byte3 + LiteralStart) << ShiftForWord));
 					longAtPointerput((localSP -= BytesPerOop), object);
+					null;
 					goto l4;
 				}
 				if (opType == 4) {
@@ -5691,6 +5690,7 @@
 					object2 = longAt((oop + BaseHeaderSize) + (ValueIndex << ShiftForWord));
 					longAtPointerput((localSP -= BytesPerOop), object2);
 
+					null;
 					goto l4;
 				}
 				top = longAtPointer(localSP);
@@ -22067,12 +22067,6 @@
 	}
 }
 
-static void
-followForwardedObjectFieldstoDepth(sqInt objOop, sqInt depth)
-{
-	error("shouldNotImplement");
-}
-
 static sqInt
 followForwarded(sqInt objOop)
 {
@@ -22172,9 +22166,6 @@
 /*	To avoid any chance of a forwarded object during super sends we follow the
 	methodClassAssociation. The forwarded object send fault only copes with
 	normal sends to instances. */
-/*	To avoid any chance of a forwarded object during super sends we follow the
-	methodClassAssociation. The forwarded object send fault only copes with
-	normal sends to instances. */
 
 static void
 followNecessaryForwardingInMethod(sqInt methodObj)
@@ -22186,19 +22177,7 @@
     sqInt header;
     sqInt offset;
 
-	/* begin literal:ofMethod: */
-	offset = (literalCountOfHeader(headerOf(methodObj))) - 1;
-	assoc = longAt((methodObj + BaseHeaderSize) + ((offset + LiteralStart) << ShiftForWord));
 	
-	classObj = longAt((assoc + BaseHeaderSize) + (ValueIndex << ShiftForWord));
-	
-	header = longAt((methodObj + BaseHeaderSize) + (HeaderIndex << ShiftForWord));
-	if (isCogMethodReference(header)) {
-		cogMethod = ((CogMethod *) header);
-		if ((cogMethod->cmUsesMethodClass)) {
-			followForwardedLiteralsIn(cogMethod);
-		}
-	}
 }
 
 
@@ -22391,13 +22370,7 @@
 		: ((longAt(theFPInt + FoxIFrameFlags)) & 2) != 0);
 }
 
-static sqInt
-frameMethod(char *theFP)
-{
-	return longAt(theFP + FoxMethod);
-}
 
-
 /*	See encodeFrameFieldHasContext:numArgs: */
 
 static sqInt
@@ -23027,51 +23000,6 @@
 }
 
 
-/*	Handle a special send fault that may be due to a special selector
-	send accessing a forwarded object.
-	Unforward the object on the stack and in inst vars and answer its target. */
-
-static sqInt
-handleSpecialSelectorSendFaultForfpsp(sqInt obj, char *theFP, char *theSP)
-{
-    sqInt oop;
-    char *ptr;
-
-	assert(isOopForwarded(obj));
-	/* begin followForwardedFrameContents:stackPointer: */
-	for (ptr = (theFP + (frameStackedReceiverOffsetNumArgs(((((usqInt)(longAt(theFP + FoxMethod)))) < (startOfMemory())
-	? ((mframeCogMethod(theFP))->cmNumArgs)
-	: byteAt((theFP + FoxIFrameFlags) + 1))))); ptr <= ((theFP + FoxCallerSavedIP) + BytesPerWord); ptr += BytesPerWord) {
-		oop = longAt(ptr);
-		if (((oop & 1) == 0)
-		 && (isForwarded(oop))) {
-			longAtput(ptr, followForwarded(oop));
-		}
-	}
-	for (ptr = theSP; ptr <= (frameReceiverOffset(theFP)); ptr += BytesPerWord) {
-		oop = longAt(ptr);
-		if (((oop & 1) == 0)
-		 && (isForwarded(oop))) {
-			longAtput(ptr, followForwarded(oop));
-		}
-	}
-	assert(!(isForwarded(frameMethod(theFP))));
-	if (((((usqInt)(longAt(theFP + FoxMethod)))) < (startOfMemory())
-		? ((longAt(theFP + FoxMethod)) & MFMethodFlagHasContextFlag) != 0
-		: (byteAt((theFP + FoxIFrameFlags) + 2)) != 0)) {
-		assert(!(isForwarded(frameContext(theFP))));
-	}
-	if (isPointers(((((usqInt)(longAt(theFP + FoxMethod)))) < (startOfMemory())
-		? longAt(theFP + FoxMFReceiver)
-		: longAt(theFP + FoxIFReceiver)))) {
-		followForwardedObjectFieldstoDepth(((((usqInt)(longAt(theFP + FoxMethod)))) < (startOfMemory())
-			? longAt(theFP + FoxMFReceiver)
-			: longAt(theFP + FoxIFReceiver)), 0);
-	}
-	return followForwarded(obj);
-}
-
-
 /*	Check for stack overflow, moving frames to another stack if so. */
 
 static void
@@ -23801,17 +23729,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;
 
@@ -23822,21 +23748,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;
@@ -23851,7 +23763,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)) {
 
@@ -23905,18 +23817,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)) {
@@ -50126,7 +50038,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	2013-12-11 00:45:24 UTC (rev 2823)
+++ branches/Cog/nscogsrc/vm/cointerp.h	2013-12-11 01:31:20 UTC (rev 2824)
@@ -1,5 +1,5 @@
 /* Automatically generated by
-	CCodeGeneratorGlobalStructure VMMaker.oscog-eem.554 uuid: a666e7e4-245e-4e8a-9536-3aefd4509f47
+	CCodeGeneratorGlobalStructure VMMaker.oscog-eem.555 uuid: 9b99d897-eecb-4b11-97c9-7f7a75c7d8b0
  */
 
 

Modified: branches/Cog/nscogsrc/vm/gcc3x-cointerp.c
===================================================================
--- branches/Cog/nscogsrc/vm/gcc3x-cointerp.c	2013-12-11 00:45:24 UTC (rev 2823)
+++ branches/Cog/nscogsrc/vm/gcc3x-cointerp.c	2013-12-11 01:31:20 UTC (rev 2824)
@@ -2,11 +2,11 @@
 
 
 /* Automatically generated by
-	CCodeGeneratorGlobalStructure VMMaker.oscog-eem.554 uuid: a666e7e4-245e-4e8a-9536-3aefd4509f47
+	CCodeGeneratorGlobalStructure VMMaker.oscog-eem.555 uuid: 9b99d897-eecb-4b11-97c9-7f7a75c7d8b0
    from
-	CoInterpreter VMMaker.oscog-eem.554 uuid: a666e7e4-245e-4e8a-9536-3aefd4509f47
+	CoInterpreter VMMaker.oscog-eem.555 uuid: 9b99d897-eecb-4b11-97c9-7f7a75c7d8b0
  */
-static char __buildInfo[] = "CoInterpreter VMMaker.oscog-eem.554 uuid: a666e7e4-245e-4e8a-9536-3aefd4509f47 " __DATE__ ;
+static char __buildInfo[] = "CoInterpreter VMMaker.oscog-eem.555 uuid: 9b99d897-eecb-4b11-97c9-7f7a75c7d8b0 " __DATE__ ;
 char *__interpBuildInfo = __buildInfo;
 
 
@@ -574,7 +574,6 @@
 sqInt floatObjectOf(double aFloat);
 double floatValueOf(sqInt oop);
 sqInt flushExternalPrimitiveOf(sqInt methodObj);
-static void followForwardedObjectFieldstoDepth(sqInt objOop, sqInt depth);
 static sqInt followForwarded(sqInt objOop);
 static void followForwardingPointersInStackZone(sqInt theBecomeEffectsFlags);
 static void followNecessaryForwardingInMethod(sqInt methodObj);
@@ -590,7 +589,6 @@
 static sqInt frameHasContext(char *theFP);
 static sqInt frameIsBlockActivation(char *theFP);
 static sqInt frameIsMarked(sqInt theFPInt);
-static sqInt frameMethod(char *theFP);
 static sqInt frameNumArgs(char *theFP);
 static char * frameOfMarriedContext(sqInt aContext);
 usqInt framePointerAddress(void);
@@ -621,7 +619,6 @@
 sqInt getThisSessionID(void);
 static sqInt goodContextSize(sqInt oop);
 static sqInt handleMNUInMachineCodeToclassForMessage(sqInt selectorIndex, sqInt rcvr, sqInt classForMessage);
-static sqInt handleSpecialSelectorSendFaultForfpsp(sqInt obj, char *theFP, char *theSP);
 static void handleStackOverflow(void);
 static sqInt handleStackOverflowOrEventAllowContextSwitch(sqInt mayContextSwitch);
 sqInt headerIndicatesAlternateBytecodeSet(sqInt methodHeader);
@@ -1149,7 +1146,7 @@
 static void rewriteMethodCacheEntryForExternalPrimitiveToFunction(void (*localPrimAddress)(void));
 static sqInt roomToPushNArgs(sqInt n);
 static void runLeakCheckerForFullGC(sqInt fullGCFlag);
-static sqInt safeObjectAfter(sqInt oop);
+static usqInt safeObjectAfter(sqInt oop);
 static sqInt safePrintStringOf(sqInt oop);
 usqInt scavengeThresholdAddress(void);
 EXPORT(sqInt) sendInvokeCallbackContext(VMCallbackContext *vmCallbackContext);
@@ -2036,7 +2033,7 @@
 	/* 575 */ (void (*)(void))0,
  0 };
 static void (*externalPrimitiveTable[MaxExternalPrimitiveTableSize + 1 /* 4097 */])(void);
-const char *interpreterVersion = "Newspeak Virtual Machine CoInterpreter_VMMaker.oscog-eem.554";
+const char *interpreterVersion = "Newspeak Virtual Machine CoInterpreter_VMMaker.oscog-eem.555";
 sqInt minBackwardJumpCountForCompile = MinBackwardJumpCountForCompile /* 10 */;
 volatile int sendTrace;
 
@@ -5678,6 +5675,7 @@
 						/* begin internalPush: */
 						longAtPointerput((localSP -= BytesPerOop), longAt((rcvr + BaseHeaderSize) + (byte3 << ShiftForWord)));
 					}
+					null;
 					goto l4;
 				}
 				if (opType == 3) {
@@ -5687,6 +5685,7 @@
 					assert(GIV(method) == (iframeMethod(localFP)));
 					object = longAt((GIV(method) + BaseHeaderSize) + ((byte3 + LiteralStart) << ShiftForWord));
 					longAtPointerput((localSP -= BytesPerOop), object);
+					null;
 					goto l4;
 				}
 				if (opType == 4) {
@@ -5700,6 +5699,7 @@
 					object2 = longAt((oop + BaseHeaderSize) + (ValueIndex << ShiftForWord));
 					longAtPointerput((localSP -= BytesPerOop), object2);
 
+					null;
 					goto l4;
 				}
 				top = longAtPointer(localSP);
@@ -22076,12 +22076,6 @@
 	}
 }
 
-static void
-followForwardedObjectFieldstoDepth(sqInt objOop, sqInt depth)
-{
-	error("shouldNotImplement");
-}
-
 static sqInt
 followForwarded(sqInt objOop)
 {
@@ -22181,9 +22175,6 @@
 /*	To avoid any chance of a forwarded object during super sends we follow the
 	methodClassAssociation. The forwarded object send fault only copes with
 	normal sends to instances. */
-/*	To avoid any chance of a forwarded object during super sends we follow the
-	methodClassAssociation. The forwarded object send fault only copes with
-	normal sends to instances. */
 
 static void
 followNecessaryForwardingInMethod(sqInt methodObj)
@@ -22195,19 +22186,7 @@
     sqInt header;
     sqInt offset;
 
-	/* begin literal:ofMethod: */
-	offset = (literalCountOfHeader(headerOf(methodObj))) - 1;
-	assoc = longAt((methodObj + BaseHeaderSize) + ((offset + LiteralStart) << ShiftForWord));
 	
-	classObj = longAt((assoc + BaseHeaderSize) + (ValueIndex << ShiftForWord));
-	
-	header = longAt((methodObj + BaseHeaderSize) + (HeaderIndex << ShiftForWord));
-	if (isCogMethodReference(header)) {
-		cogMethod = ((CogMethod *) header);
-		if ((cogMethod->cmUsesMethodClass)) {
-			followForwardedLiteralsIn(cogMethod);
-		}
-	}
 }
 
 
@@ -22400,13 +22379,7 @@
 		: ((longAt(theFPInt + FoxIFrameFlags)) & 2) != 0);
 }
 
-static sqInt
-frameMethod(char *theFP)
-{
-	return longAt(theFP + FoxMethod);
-}
 
-
 /*	See encodeFrameFieldHasContext:numArgs: */
 
 static sqInt
@@ -23036,51 +23009,6 @@
 }
 
 
-/*	Handle a special send fault that may be due to a special selector
-	send accessing a forwarded object.
-	Unforward the object on the stack and in inst vars and answer its target. */
-
-static sqInt
-handleSpecialSelectorSendFaultForfpsp(sqInt obj, char *theFP, char *theSP)
-{
-    sqInt oop;
-    char *ptr;
-
-	assert(isOopForwarded(obj));
-	/* begin followForwardedFrameContents:stackPointer: */
-	for (ptr = (theFP + (frameStackedReceiverOffsetNumArgs(((((usqInt)(longAt(theFP + FoxMethod)))) < (startOfMemory())
-	? ((mframeCogMethod(theFP))->cmNumArgs)
-	: byteAt((theFP + FoxIFrameFlags) + 1))))); ptr <= ((theFP + FoxCallerSavedIP) + BytesPerWord); ptr += BytesPerWord) {
-		oop = longAt(ptr);
-		if (((oop & 1) == 0)
-		 && (isForwarded(oop))) {
-			longAtput(ptr, followForwarded(oop));
-		}
-	}
-	for (ptr = theSP; ptr <= (frameReceiverOffset(theFP)); ptr += BytesPerWord) {
-		oop = longAt(ptr);
-		if (((oop & 1) == 0)
-		 && (isForwarded(oop))) {
-			longAtput(ptr, followForwarded(oop));
-		}
-	}
-	assert(!(isForwarded(frameMethod(theFP))));
-	if (((((usqInt)(longAt(theFP + FoxMethod)))) < (startOfMemory())
-		? ((longAt(theFP + FoxMethod)) & MFMethodFlagHasContextFlag) != 0
-		: (byteAt((theFP + FoxIFrameFlags) + 2)) != 0)) {
-		assert(!(isForwarded(frameContext(theFP))));
-	}
-	if (isPointers(((((usqInt)(longAt(theFP + FoxMethod)))) < (startOfMemory())
-		? longAt(theFP + FoxMFReceiver)
-		: longAt(theFP + FoxIFReceiver)))) {
-		followForwardedObjectFieldstoDepth(((((usqInt)(longAt(theFP + FoxMethod)))) < (startOfMemory())
-			? longAt(theFP + FoxMFReceiver)
-			: longAt(theFP + FoxIFReceiver)), 0);
-	}
-	return followForwarded(obj);
-}
-
-
 /*	Check for stack overflow, moving frames to another stack if so. */
 
 static void
@@ -23810,17 +23738,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;
 
@@ -23831,21 +23757,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;
@@ -23860,7 +23772,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)) {
 
@@ -23914,18 +23826,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)) {
@@ -50135,7 +50047,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/interp.h
===================================================================
--- branches/Cog/nscogsrc/vm/interp.h	2013-12-11 00:45:24 UTC (rev 2823)
+++ branches/Cog/nscogsrc/vm/interp.h	2013-12-11 01:31:20 UTC (rev 2824)
@@ -1,5 +1,5 @@
 /* Automatically generated by
-	CCodeGeneratorGlobalStructure VMMaker.oscog-eem.554 uuid: a666e7e4-245e-4e8a-9536-3aefd4509f47
+	CCodeGeneratorGlobalStructure VMMaker.oscog-eem.555 uuid: 9b99d897-eecb-4b11-97c9-7f7a75c7d8b0
  */
 
 #define VM_PROXY_MAJOR 1

Modified: branches/Cog/nscogsrc/vm/vmCallback.h
===================================================================
--- branches/Cog/nscogsrc/vm/vmCallback.h	2013-12-11 00:45:24 UTC (rev 2823)
+++ branches/Cog/nscogsrc/vm/vmCallback.h	2013-12-11 01:31:20 UTC (rev 2824)
@@ -1,5 +1,5 @@
 /* Automatically generated by
-	CCodeGeneratorGlobalStructure VMMaker.oscog-eem.554 uuid: a666e7e4-245e-4e8a-9536-3aefd4509f47
+	CCodeGeneratorGlobalStructure VMMaker.oscog-eem.555 uuid: 9b99d897-eecb-4b11-97c9-7f7a75c7d8b0
  */
 
 #define VM_CALLBACK_INC 1


Property changes on: branches/Cog/platforms/Cross/vm/sqSCCSVersion.h
___________________________________________________________________
Modified: checkindate
   - Tue Dec 10 16:43:00 PST 2013
   + Tue Dec 10 17:30:58 PST 2013

Modified: branches/Cog/spursrc/vm/cointerp.c
===================================================================
--- branches/Cog/spursrc/vm/cointerp.c	2013-12-11 00:45:24 UTC (rev 2823)
+++ branches/Cog/spursrc/vm/cointerp.c	2013-12-11 01:31:20 UTC (rev 2824)
@@ -1,9 +1,9 @@
 /* Automatically generated by
-	CCodeGeneratorGlobalStructure VMMaker.oscog-eem.554 uuid: a666e7e4-245e-4e8a-9536-3aefd4509f47
+	CCodeGeneratorGlobalStructure VMMaker.oscog-eem.555 uuid: 9b99d897-eecb-4b11-97c9-7f7a75c7d8b0
    from
-	CoInterpreter VMMaker.oscog-eem.554 uuid: a666e7e4-245e-4e8a-9536-3aefd4509f47
+	CoInterpreter VMMaker.oscog-eem.555 uuid: 9b99d897-eecb-4b11-97c9-7f7a75c7d8b0
  */
-static char __buildInfo[] = "CoInterpreter VMMaker.oscog-eem.554 uuid: a666e7e4-245e-4e8a-9536-3aefd4509f47 " __DATE__ ;
+static char __buildInfo[] = "CoInterpreter VMMaker.oscog-eem.555 uuid: 9b99d897-eecb-4b11-97c9-7f7a75c7d8b0 " __DATE__ ;
 char *__interpBuildInfo = __buildInfo;
 
 
@@ -2159,7 +2159,7 @@
  0 };
 static void (*externalPrimitiveTable[MaxExternalPrimitiveTableSize + 1 /* 4097 */])(void);
 usqInt heapBase;
-const char *interpreterVersion = "Croquet Closure Cog VM [CoInterpreter VMMaker.oscog-eem.554]";
+const char *interpreterVersion = "Croquet Closure Cog VM [CoInterpreter VMMaker.oscog-eem.555]";
 sqInt minBackwardJumpCountForCompile = MinBackwardJumpCountForCompile /* 10 */;
 volatile int sendTrace;
 
@@ -23049,9 +23049,6 @@
 /*	To avoid any chance of a forwarded object during super sends we follow the
 	methodClassAssociation. The forwarded object send fault only copes with
 	normal sends to instances. */
-/*	To avoid any chance of a forwarded object during super sends we follow the
-	methodClassAssociation. The forwarded object send fault only copes with
-	normal sends to instances. */
 
 static void
 followNecessaryForwardingInMethod(sqInt methodObj)
@@ -23065,6 +23062,7 @@
     sqInt referent;
     sqInt referent1;
 
+	/* begin actuallyFollowNecessaryForwardingInMethod: */
 	/* begin literal:ofMethod: */
 	offset = (literalCountOfHeader(headerOf(methodObj))) - 1;
 	assoc = longAt((methodObj + (BaseHeaderSize)) + ((offset + LiteralStart) << 2));
@@ -23134,6 +23132,7 @@
 			followForwardedLiteralsIn(cogMethod);
 		}
 	}
+
 }
 
 

Modified: branches/Cog/spursrc/vm/cointerp.h
===================================================================
--- branches/Cog/spursrc/vm/cointerp.h	2013-12-11 00:45:24 UTC (rev 2823)
+++ branches/Cog/spursrc/vm/cointerp.h	2013-12-11 01:31:20 UTC (rev 2824)
@@ -1,5 +1,5 @@
 /* Automatically generated by
-	CCodeGeneratorGlobalStructure VMMaker.oscog-eem.554 uuid: a666e7e4-245e-4e8a-9536-3aefd4509f47
+	CCodeGeneratorGlobalStructure VMMaker.oscog-eem.555 uuid: 9b99d897-eecb-4b11-97c9-7f7a75c7d8b0
  */
 
 

Modified: branches/Cog/spursrc/vm/gcc3x-cointerp.c
===================================================================
--- branches/Cog/spursrc/vm/gcc3x-cointerp.c	2013-12-11 00:45:24 UTC (rev 2823)
+++ branches/Cog/spursrc/vm/gcc3x-cointerp.c	2013-12-11 01:31:20 UTC (rev 2824)
@@ -2,11 +2,11 @@
 
 
 /* Automatically generated by
-	CCodeGeneratorGlobalStructure VMMaker.oscog-eem.554 uuid: a666e7e4-245e-4e8a-9536-3aefd4509f47
+	CCodeGeneratorGlobalStructure VMMaker.oscog-eem.555 uuid: 9b99d897-eecb-4b11-97c9-7f7a75c7d8b0
    from
-	CoInterpreter VMMaker.oscog-eem.554 uuid: a666e7e4-245e-4e8a-9536-3aefd4509f47
+	CoInterpreter VMMaker.oscog-eem.555 uuid: 9b99d897-eecb-4b11-97c9-7f7a75c7d8b0
  */
-static char __buildInfo[] = "CoInterpreter VMMaker.oscog-eem.554 uuid: a666e7e4-245e-4e8a-9536-3aefd4509f47 " __DATE__ ;
+static char __buildInfo[] = "CoInterpreter VMMaker.oscog-eem.555 uuid: 9b99d897-eecb-4b11-97c9-7f7a75c7d8b0 " __DATE__ ;
 char *__interpBuildInfo = __buildInfo;
 
 
@@ -2162,7 +2162,7 @@
  0 };
 static void (*externalPrimitiveTable[MaxExternalPrimitiveTableSize + 1 /* 4097 */])(void);
 usqInt heapBase;
-const char *interpreterVersion = "Croquet Closure Cog VM [CoInterpreter VMMaker.oscog-eem.554]";
+const char *interpreterVersion = "Croquet Closure Cog VM [CoInterpreter VMMaker.oscog-eem.555]";
 sqInt minBackwardJumpCountForCompile = MinBackwardJumpCountForCompile /* 10 */;
 volatile int sendTrace;
 
@@ -23058,9 +23058,6 @@
 /*	To avoid any chance of a forwarded object during super sends we follow the
 	methodClassAssociation. The forwarded object send fault only copes with
 	normal sends to instances. */
-/*	To avoid any chance of a forwarded object during super sends we follow the
-	methodClassAssociation. The forwarded object send fault only copes with
-	normal sends to instances. */
 
 static void
 followNecessaryForwardingInMethod(sqInt methodObj)
@@ -23074,6 +23071,7 @@
     sqInt referent;
     sqInt referent1;
 
+	/* begin actuallyFollowNecessaryForwardingInMethod: */
 	/* begin literal:ofMethod: */
 	offset = (literalCountOfHeader(headerOf(methodObj))) - 1;
 	assoc = longAt((methodObj + (BaseHeaderSize)) + ((offset + LiteralStart) << 2));
@@ -23143,6 +23141,7 @@
 			followForwardedLiteralsIn(cogMethod);
 		}
 	}
+
 }
 
 

Modified: branches/Cog/spursrc/vm/interp.h
===================================================================
--- branches/Cog/spursrc/vm/interp.h	2013-12-11 00:45:24 UTC (rev 2823)
+++ branches/Cog/spursrc/vm/interp.h	2013-12-11 01:31:20 UTC (rev 2824)
@@ -1,5 +1,5 @@
 /* Automatically generated by
-	CCodeGeneratorGlobalStructure VMMaker.oscog-eem.554 uuid: a666e7e4-245e-4e8a-9536-3aefd4509f47
+	CCodeGeneratorGlobalStructure VMMaker.oscog-eem.555 uuid: 9b99d897-eecb-4b11-97c9-7f7a75c7d8b0
  */
 
 #define VM_PROXY_MAJOR 1

Modified: branches/Cog/spursrc/vm/vmCallback.h
===================================================================
--- branches/Cog/spursrc/vm/vmCallback.h	2013-12-11 00:45:24 UTC (rev 2823)
+++ branches/Cog/spursrc/vm/vmCallback.h	2013-12-11 01:31:20 UTC (rev 2824)
@@ -1,5 +1,5 @@
 /* Automatically generated by
-	CCodeGeneratorGlobalStructure VMMaker.oscog-eem.554 uuid: a666e7e4-245e-4e8a-9536-3aefd4509f47
+	CCodeGeneratorGlobalStructure VMMaker.oscog-eem.555 uuid: 9b99d897-eecb-4b11-97c9-7f7a75c7d8b0
  */
 
 #define VM_CALLBACK_INC 1

Modified: branches/Cog/spurstacksrc/vm/gcc3x-interp.c
===================================================================
--- branches/Cog/spurstacksrc/vm/gcc3x-interp.c	2013-12-11 00:45:24 UTC (rev 2823)
+++ branches/Cog/spurstacksrc/vm/gcc3x-interp.c	2013-12-11 01:31:20 UTC (rev 2824)
@@ -2,11 +2,11 @@
 
 
 /* Automatically generated by
-	CCodeGeneratorGlobalStructure VMMaker.oscog-eem.554 uuid: a666e7e4-245e-4e8a-9536-3aefd4509f47
+	CCodeGeneratorGlobalStructure VMMaker.oscog-eem.555 uuid: 9b99d897-eecb-4b11-97c9-7f7a75c7d8b0
    from
-	StackInterpreter VMMaker.oscog-eem.554 uuid: a666e7e4-245e-4e8a-9536-3aefd4509f47
+	StackInterpreter VMMaker.oscog-eem.555 uuid: 9b99d897-eecb-4b11-97c9-7f7a75c7d8b0
  */
-static char __buildInfo[] = "StackInterpreter VMMaker.oscog-eem.554 uuid: a666e7e4-245e-4e8a-9536-3aefd4509f47 " __DATE__ ;
+static char __buildInfo[] = "StackInterpreter VMMaker.oscog-eem.555 uuid: 9b99d897-eecb-4b11-97c9-7f7a75c7d8b0 " __DATE__ ;
 char *__interpBuildInfo = __buildInfo;
 
 
@@ -1952,7 +1952,7 @@
  0 };
 char * breakSelector;
 sqInt breakSelectorLength = -1;
-const char *interpreterVersion = "Croquet Closure Stack VM [StackInterpreter VMMaker.oscog-eem.554]";
+const char *interpreterVersion = "Croquet Closure Stack VM [StackInterpreter VMMaker.oscog-eem.555]";
 volatile int sendTrace;
 sqInt suppressHeartbeatFlag;
 
@@ -20876,6 +20876,7 @@
     sqInt referent;
     sqInt referent1;
 
+	/* begin actuallyFollowNecessaryForwardingInMethod: */
 	/* begin literal:ofMethod: */
 	offset = (
 #if MULTIPLEBYTECODESETS
@@ -20954,6 +20955,7 @@
 		}
 		longAtput((assoc + (BaseHeaderSize)) + (ValueIndex << 2), classObj);
 	}
+
 }
 
 

Modified: branches/Cog/spurstacksrc/vm/interp.c
===================================================================
--- branches/Cog/spurstacksrc/vm/interp.c	2013-12-11 00:45:24 UTC (rev 2823)
+++ branches/Cog/spurstacksrc/vm/interp.c	2013-12-11 01:31:20 UTC (rev 2824)
@@ -1,9 +1,9 @@
 /* Automatically generated by
-	CCodeGeneratorGlobalStructure VMMaker.oscog-eem.554 uuid: a666e7e4-245e-4e8a-9536-3aefd4509f47
+	CCodeGeneratorGlobalStructure VMMaker.oscog-eem.555 uuid: 9b99d897-eecb-4b11-97c9-7f7a75c7d8b0
    from
-	StackInterpreter VMMaker.oscog-eem.554 uuid: a666e7e4-245e-4e8a-9536-3aefd4509f47
+	StackInterpreter VMMaker.oscog-eem.555 uuid: 9b99d897-eecb-4b11-97c9-7f7a75c7d8b0
  */
-static char __buildInfo[] = "StackInterpreter VMMaker.oscog-eem.554 uuid: a666e7e4-245e-4e8a-9536-3aefd4509f47 " __DATE__ ;
+static char __buildInfo[] = "StackInterpreter VMMaker.oscog-eem.555 uuid: 9b99d897-eecb-4b11-97c9-7f7a75c7d8b0 " __DATE__ ;
 char *__interpBuildInfo = __buildInfo;
 
 
@@ -1949,7 +1949,7 @@
  0 };
 char * breakSelector;
 sqInt breakSelectorLength = -1;
-const char *interpreterVersion = "Croquet Closure Stack VM [StackInterpreter VMMaker.oscog-eem.554]";
+const char *interpreterVersion = "Croquet Closure Stack VM [StackInterpreter VMMaker.oscog-eem.555]";
 volatile int sendTrace;
 sqInt suppressHeartbeatFlag;
 
@@ -20867,6 +20867,7 @@
     sqInt referent;
     sqInt referent1;
 
+	/* begin actuallyFollowNecessaryForwardingInMethod: */
 	/* begin literal:ofMethod: */
 	offset = (
 #if MULTIPLEBYTECODESETS
@@ -20945,6 +20946,7 @@
 		}
 		longAtput((assoc + (BaseHeaderSize)) + (ValueIndex << 2), classObj);
 	}
+
 }
 
 

Modified: branches/Cog/spurstacksrc/vm/interp.h
===================================================================
--- branches/Cog/spurstacksrc/vm/interp.h	2013-12-11 00:45:24 UTC (rev 2823)
+++ branches/Cog/spurstacksrc/vm/interp.h	2013-12-11 01:31:20 UTC (rev 2824)
@@ -1,5 +1,5 @@
 /* Automatically generated by
-	CCodeGeneratorGlobalStructure VMMaker.oscog-eem.554 uuid: a666e7e4-245e-4e8a-9536-3aefd4509f47
+	CCodeGeneratorGlobalStructure VMMaker.oscog-eem.555 uuid: 9b99d897-eecb-4b11-97c9-7f7a75c7d8b0
  */
 
 #define VM_PROXY_MAJOR 1

Modified: branches/Cog/spurstacksrc/vm/vmCallback.h
===================================================================
--- branches/Cog/spurstacksrc/vm/vmCallback.h	2013-12-11 00:45:24 UTC (rev 2823)
+++ branches/Cog/spurstacksrc/vm/vmCallback.h	2013-12-11 01:31:20 UTC (rev 2824)
@@ -1,5 +1,5 @@
 /* Automatically generated by
-	CCodeGeneratorGlobalStructure VMMaker.oscog-eem.554 uuid: a666e7e4-245e-4e8a-9536-3aefd4509f47
+	CCodeGeneratorGlobalStructure VMMaker.oscog-eem.555 uuid: 9b99d897-eecb-4b11-97c9-7f7a75c7d8b0
  */
 
 #define VM_CALLBACK_INC 1

Modified: branches/Cog/src/vm/cogit.c
===================================================================
--- branches/Cog/src/vm/cogit.c	2013-12-11 00:45:24 UTC (rev 2823)
+++ branches/Cog/src/vm/cogit.c	2013-12-11 01:31:20 UTC (rev 2824)
@@ -1,9 +1,9 @@
 /* Automatically generated by
-	CCodeGenerator VMMaker.oscog-eem.554 uuid: a666e7e4-245e-4e8a-9536-3aefd4509f47
+	CCodeGenerator VMMaker.oscog-eem.555 uuid: 9b99d897-eecb-4b11-97c9-7f7a75c7d8b0
    from
-	StackToRegisterMappingCogit VMMaker.oscog-eem.554 uuid: a666e7e4-245e-4e8a-9536-3aefd4509f47
+	StackToRegisterMappingCogit VMMaker.oscog-eem.555 uuid: 9b99d897-eecb-4b11-97c9-7f7a75c7d8b0
  */
-static char __buildInfo[] = "StackToRegisterMappingCogit VMMaker.oscog-eem.554 uuid: a666e7e4-245e-4e8a-9536-3aefd4509f47 " __DATE__ ;
+static char __buildInfo[] = "StackToRegisterMappingCogit VMMaker.oscog-eem.555 uuid: 9b99d897-eecb-4b11-97c9-7f7a75c7d8b0 " __DATE__ ;
 char *__cogitBuildInfo = __buildInfo;
 
 
@@ -13363,11 +13363,11 @@
 genPushRegisterArgsForNumArgs(sqInt numArgs)
 {
 	if (numArgs <= (numRegArgs())) {
+		assert((numRegArgs()) <= 2);
 		/* begin MoveMw:r:R: */
 		genoperandoperandoperand(MoveMwrR, 0, SPReg, TempReg);
 		/* begin MoveR:Mw:r: */
 		genoperandoperandoperand(MoveRMwr, ReceiverResultReg, 0, SPReg);
-		assert((numRegArgs()) <= 2);
 		if (numArgs > 0) {
 			/* begin PushR: */
 			genoperand(PushR, Arg0Reg);
@@ -13378,6 +13378,7 @@
 		}
 		/* begin PushR: */
 		genoperand(PushR, TempReg);
+
 	}
 }
 

Modified: branches/Cog/src/vm/cogit.h
===================================================================
--- branches/Cog/src/vm/cogit.h	2013-12-11 00:45:24 UTC (rev 2823)
+++ branches/Cog/src/vm/cogit.h	2013-12-11 01:31:20 UTC (rev 2824)
@@ -1,5 +1,5 @@
 /* Automatically generated by
-	CCodeGenerator VMMaker.oscog-eem.554 uuid: a666e7e4-245e-4e8a-9536-3aefd4509f47
+	CCodeGenerator VMMaker.oscog-eem.555 uuid: 9b99d897-eecb-4b11-97c9-7f7a75c7d8b0
  */
 
 

Modified: branches/Cog/src/vm/cogmethod.h
===================================================================
--- branches/Cog/src/vm/cogmethod.h	2013-12-11 00:45:24 UTC (rev 2823)
+++ branches/Cog/src/vm/cogmethod.h	2013-12-11 01:31:20 UTC (rev 2824)
@@ -1,5 +1,5 @@
 /* Automatically generated by
-	CCodeGenerator VMMaker.oscog-eem.554 uuid: a666e7e4-245e-4e8a-9536-3aefd4509f47
+	CCodeGenerator VMMaker.oscog-eem.555 uuid: 9b99d897-eecb-4b11-97c9-7f7a75c7d8b0
  */
 
 typedef struct {

Modified: branches/Cog/src/vm/cointerp.c
===================================================================
--- branches/Cog/src/vm/cointerp.c	2013-12-11 00:45:24 UTC (rev 2823)
+++ branches/Cog/src/vm/cointerp.c	2013-12-11 01:31:20 UTC (rev 2824)
@@ -1,9 +1,9 @@
 /* Automatically generated by
-	CCodeGeneratorGlobalStructure VMMaker.oscog-eem.554 uuid: a666e7e4-245e-4e8a-9536-3aefd4509f47
+	CCodeGeneratorGlobalStructure VMMaker.oscog-eem.555 uuid: 9b99d897-eecb-4b11-97c9-7f7a75c7d8b0
    from
-	CoInterpreter VMMaker.oscog-eem.554 uuid: a666e7e4-245e-4e8a-9536-3aefd4509f47
+	CoInterpreter VMMaker.oscog-eem.555 uuid: 9b99d897-eecb-4b11-97c9-7f7a75c7d8b0
  */
-static char __buildInfo[] = "CoInterpreter VMMaker.oscog-eem.554 uuid: a666e7e4-245e-4e8a-9536-3aefd4509f47 " __DATE__ ;
+static char __buildInfo[] = "CoInterpreter VMMaker.oscog-eem.555 uuid: 9b99d897-eecb-4b11-97c9-7f7a75c7d8b0 " __DATE__ ;
 char *__interpBuildInfo = __buildInfo;
 
 
@@ -564,7 +564,6 @@
 sqInt floatObjectOf(double aFloat);
 double floatValueOf(sqInt oop);
 sqInt flushExternalPrimitiveOf(sqInt methodObj);
-static void followForwardedObjectFieldstoDepth(sqInt objOop, sqInt depth);
 static sqInt followForwarded(sqInt objOop);
 static void followForwardingPointersInStackZone(sqInt theBecomeEffectsFlags);
 static void followNecessaryForwardingInMethod(sqInt methodObj);
@@ -580,7 +579,6 @@
 static sqInt frameHasContext(char *theFP);
 static sqInt frameIsBlockActivation(char *theFP);
 static sqInt frameIsMarked(sqInt theFPInt);
-static sqInt frameMethod(char *theFP);
 static sqInt frameNumArgs(char *theFP);
 static char * frameOfMarriedContext(sqInt aContext);
 usqInt framePointerAddress(void);
@@ -611,7 +609,6 @@
 sqInt getThisSessionID(void);
 static sqInt goodContextSize(sqInt oop);
 static sqInt handleMNUInMachineCodeToclassForMessage(sqInt selectorIndex, sqInt rcvr, sqInt classForMessage);
-static sqInt handleSpecialSelectorSendFaultForfpsp(sqInt obj, char *theFP, char *theSP);
 static void handleStackOverflow(void);
 static sqInt handleStackOverflowOrEventAllowContextSwitch(sqInt mayContextSwitch);
 sqInt headerIndicatesAlternateBytecodeSet(sqInt methodHeader);
@@ -1137,7 +1134,7 @@
 static void rewriteMethodCacheEntryForExternalPrimitiveToFunction(void (*localPrimAddress)(void));
 static sqInt roomToPushNArgs(sqInt n);
 static void runLeakCheckerForFullGC(sqInt fullGCFlag);
-static sqInt safeObjectAfter(sqInt oop);
+static usqInt safeObjectAfter(sqInt oop);
 static sqInt safePrintStringOf(sqInt oop);
 usqInt scavengeThresholdAddress(void);
 EXPORT(sqInt) sendInvokeCallbackContext(VMCallbackContext *vmCallbackContext);
@@ -2023,7 +2020,7 @@
 	/* 575 */ (void (*)(void))0,
  0 };
 static void (*externalPrimitiveTable[MaxExternalPrimitiveTableSize + 1 /* 4097 */])(void);
-const char *interpreterVersion = "Croquet Closure Cog VM [CoInterpreter VMMaker.oscog-eem.554]";
+const char *interpreterVersion = "Croquet Closure Cog VM [CoInterpreter VMMaker.oscog-eem.555]";
 sqInt minBackwardJumpCountForCompile = MinBackwardJumpCountForCompile /* 10 */;
 volatile int sendTrace;
 
@@ -17774,12 +17771,6 @@
 	}
 }
 
-static void
-followForwardedObjectFieldstoDepth(sqInt objOop, sqInt depth)
-{
-	error("shouldNotImplement");
-}
-
 static sqInt
 followForwarded(sqInt objOop)
 {
@@ -17879,9 +17870,6 @@
 /*	To avoid any chance of a forwarded object during super sends we follow the
 	methodClassAssociation. The forwarded object send fault only copes with
 	normal sends to instances. */
-/*	To avoid any chance of a forwarded object during super sends we follow the
-	methodClassAssociation. The forwarded object send fault only copes with
-	normal sends to instances. */
 
 static void
 followNecessaryForwardingInMethod(sqInt methodObj)
@@ -17893,19 +17881,7 @@
     sqInt header;
     sqInt offset;
 
-	/* begin literal:ofMethod: */
-	offset = (literalCountOfHeader(headerOf(methodObj))) - 1;
-	assoc = longAt((methodObj + BaseHeaderSize) + ((offset + LiteralStart) << ShiftForWord));
 	
-	classObj = longAt((assoc + BaseHeaderSize) + (ValueIndex << ShiftForWord));
-	
-	header = longAt((methodObj + BaseHeaderSize) + (HeaderIndex << ShiftForWord));
-	if (isCogMethodReference(header)) {
-		cogMethod = ((CogMethod *) header);
-		if ((cogMethod->cmUsesMethodClass)) {
-			followForwardedLiteralsIn(cogMethod);
-		}
-	}
 }
 
 
@@ -18098,13 +18074,7 @@
 		: ((longAt(theFPInt + FoxIFrameFlags)) & 2) != 0);
 }
 
-static sqInt
-frameMethod(char *theFP)
-{
-	return longAt(theFP + FoxMethod);
-}
 
-
 /*	See encodeFrameFieldHasContext:numArgs: */
 
 static sqInt
@@ -18732,51 +18702,6 @@
 }
 
 
-/*	Handle a special send fault that may be due to a special selector
-	send accessing a forwarded object.
-	Unforward the object on the stack and in inst vars and answer its target. */
-
-static sqInt
-handleSpecialSelectorSendFaultForfpsp(sqInt obj, char *theFP, char *theSP)
-{
-    sqInt oop;
-    char *ptr;
-
-	assert(isOopForwarded(obj));
-	/* begin followForwardedFrameContents:stackPointer: */
-	for (ptr = (theFP + (frameStackedReceiverOffsetNumArgs(((((usqInt)(longAt(theFP + FoxMethod)))) < (startOfMemory())
-	? ((mframeCogMethod(theFP))->cmNumArgs)
-	: byteAt((theFP + FoxIFrameFlags) + 1))))); ptr <= ((theFP + FoxCallerSavedIP) + BytesPerWord); ptr += BytesPerWord) {
-		oop = longAt(ptr);
-		if (((oop & 1) == 0)
-		 && (isForwarded(oop))) {
-			longAtput(ptr, followForwarded(oop));
-		}
-	}
-	for (ptr = theSP; ptr <= (frameReceiverOffset(theFP)); ptr += BytesPerWord) {
-		oop = longAt(ptr);
-		if (((oop & 1) == 0)
-		 && (isForwarded(oop))) {
-			longAtput(ptr, followForwarded(oop));
-		}
-	}
-	assert(!(isForwarded(frameMethod(theFP))));
-	if (((((usqInt)(longAt(theFP + FoxMethod)))) < (startOfMemory())
-		? ((longAt(theFP + FoxMethod)) & MFMethodFlagHasContextFlag) != 0
-		: (byteAt((theFP + FoxIFrameFlags) + 2)) != 0)) {
-		assert(!(isForwarded(frameContext(theFP))));
-	}
-	if (isPointers(((((usqInt)(longAt(theFP + FoxMethod)))) < (startOfMemory())
-		? longAt(theFP + FoxMFReceiver)
-		: longAt(theFP + FoxIFReceiver)))) {
-		followForwardedObjectFieldstoDepth(((((usqInt)(longAt(theFP + FoxMethod)))) < (startOfMemory())
-			? longAt(theFP + FoxMFReceiver)
-			: longAt(theFP + FoxIFReceiver)), 0);
-	}
-	return followForwarded(obj);
-}
-
-
 /*	Check for stack overflow, moving frames to another stack if so. */
 
 static void
@@ -19257,17 +19182,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;
 
@@ -19278,21 +19201,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;
@@ -19307,7 +19216,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)) {
 
@@ -19361,18 +19270,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)) {
@@ -45421,7 +45330,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	2013-12-11 00:45:24 UTC (rev 2823)
+++ branches/Cog/src/vm/cointerp.h	2013-12-11 01:31:20 UTC (rev 2824)
@@ -1,5 +1,5 @@
 /* Automatically generated by
-	CCodeGeneratorGlobalStructure VMMaker.oscog-eem.554 uuid: a666e7e4-245e-4e8a-9536-3aefd4509f47
+	CCodeGeneratorGlobalStructure VMMaker.oscog-eem.555 uuid: 9b99d897-eecb-4b11-97c9-7f7a75c7d8b0
  */
 
 

Modified: branches/Cog/src/vm/cointerpmt.c
===================================================================
--- branches/Cog/src/vm/cointerpmt.c	2013-12-11 00:45:24 UTC (rev 2823)
+++ branches/Cog/src/vm/cointerpmt.c	2013-12-11 01:31:20 UTC (rev 2824)
@@ -1,9 +1,9 @@
 /* Automatically generated by
-	CCodeGeneratorGlobalStructure VMMaker.oscog-eem.554 uuid: a666e7e4-245e-4e8a-9536-3aefd4509f47
+	CCodeGeneratorGlobalStructure VMMaker.oscog-eem.555 uuid: 9b99d897-eecb-4b11-97c9-7f7a75c7d8b0
    from
-	CoInterpreterMT VMMaker.oscog-eem.554 uuid: a666e7e4-245e-4e8a-9536-3aefd4509f47
+	CoInterpreterMT VMMaker.oscog-eem.555 uuid: 9b99d897-eecb-4b11-97c9-7f7a75c7d8b0
  */
-static char __buildInfo[] = "CoInterpreterMT VMMaker.oscog-eem.554 uuid: a666e7e4-245e-4e8a-9536-3aefd4509f47 " __DATE__ ;
+static char __buildInfo[] = "CoInterpreterMT VMMaker.oscog-eem.555 uuid: 9b99d897-eecb-4b11-97c9-7f7a75c7d8b0 " __DATE__ ;
 char *__interpBuildInfo = __buildInfo;
 
 
@@ -613,7 +613,6 @@
 sqInt floatObjectOf(double aFloat);
 double floatValueOf(sqInt oop);
 sqInt flushExternalPrimitiveOf(sqInt methodObj);
-static void followForwardedObjectFieldstoDepth(sqInt objOop, sqInt depth);
 static sqInt followForwarded(sqInt objOop);
 static void followForwardingPointersInStackZone(sqInt theBecomeEffectsFlags);
 static void followNecessaryForwardingInMethod(sqInt methodObj);
@@ -629,7 +628,6 @@
 static sqInt frameHasContext(char *theFP);
 static sqInt frameIsBlockActivation(char *theFP);
 static sqInt frameIsMarked(sqInt theFPInt);
-static sqInt frameMethod(char *theFP);
 static sqInt frameNumArgs(char *theFP);
 static char * frameOfMarriedContext(sqInt aContext);
 usqInt framePointerAddress(void);
@@ -663,7 +661,6 @@
 static sqInt goodContextSize(sqInt oop);
 static sqInt growThreadInfosToAtLeast(sqInt index);
 static sqInt handleMNUInMachineCodeToclassForMessage(sqInt selectorIndex, sqInt rcvr, sqInt classForMessage);
-static sqInt handleSpecialSelectorSendFaultForfpsp(sqInt obj, char *theFP, char *theSP);
 static void handleStackOverflow(void);
 static sqInt handleStackOverflowOrEventAllowContextSwitch(sqInt mayContextSwitch);
 sqInt headerIndicatesAlternateBytecodeSet(sqInt methodHeader);
@@ -2121,7 +2118,7 @@
 	/* 575 */ (void (*)(void))0,
  0 };
 static void (*externalPrimitiveTable[MaxExternalPrimitiveTableSize + 1 /* 4097 */])(void);
-const char *interpreterVersion = "Croquet Closure Cog MT VM [CoInterpreterMT VMMaker.oscog-eem.554]";
+const char *interpreterVersion = "Croquet Closure Cog MT VM [CoInterpreterMT VMMaker.oscog-eem.555]";
 sqInt minBackwardJumpCountForCompile = MinBackwardJumpCountForCompile /* 10 */;
 volatile int sendTrace;
 sqInt willNotThreadWarnCount;
@@ -5635,7 +5632,6 @@
 						/* begin internalPush: */
 						longAtPointerput((localSP -= BytesPerOop), longAt((rcvr + BaseHeaderSize) + (byte3 << ShiftForWord)));
 					}
-					null;
 					goto l4;
 				}
 				if (opType == 3) {
@@ -5645,7 +5641,6 @@
 					assert(GIV(method) == (iframeMethod(localFP)));
 					object = longAt((GIV(method) + BaseHeaderSize) + ((byte3 + LiteralStart) << ShiftForWord));
 					longAtPointerput((localSP -= BytesPerOop), object);
-					null;
 					goto l4;
 				}
 				if (opType == 4) {
@@ -5659,7 +5654,6 @@
 					object2 = longAt((oop + BaseHeaderSize) + (ValueIndex << ShiftForWord));
 					longAtPointerput((localSP -= BytesPerOop), object2);
 
-					null;
 					goto l4;
 				}
 				top = longAtPointer(localSP);
@@ -18439,12 +18433,6 @@
 	}
 }
 
-static void
-followForwardedObjectFieldstoDepth(sqInt objOop, sqInt depth)
-{
-	error("shouldNotImplement");
-}
-
 static sqInt

@@ Diff output truncated at 50000 characters. @@


More information about the Vm-dev mailing list