[Vm-dev] [commit][3052] CogVM source as per VMMaker.oscog-eem.831

commits at squeakvm.org commits at squeakvm.org
Tue Jul 22 17:45:35 UTC 2014


Revision: 3052
Author:   eliot
Date:     2014-07-22 10:45:31 -0700 (Tue, 22 Jul 2014)
Log Message:
-----------
CogVM source as per VMMaker.oscog-eem.831

Spur:
Fix bug with class table management and two-way become.  Because two-way become
may do an in-place swap obj1 & obj2 in SpurMemoryManager>>doBecome:and:copyHash:
may not be forwarded after the inner become.  Hence they should not be followed
if not forwarded.  The bug manifested as Object's identityHash changing:
superclass is the first slot in a class. Following an unforwarded subclass of
object yields Object.  Setting the hash bits of the followed object smashes
Object's identityHash.

Thanks to Stephane Rollandin for finding the bug.

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

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

Modified: branches/Cog/nsspursrc/vm/cointerp.c
===================================================================
--- branches/Cog/nsspursrc/vm/cointerp.c	2014-07-22 16:38:54 UTC (rev 3051)
+++ branches/Cog/nsspursrc/vm/cointerp.c	2014-07-22 17:45:31 UTC (rev 3052)
@@ -1,9 +1,9 @@
 /* Automatically generated by
-	CCodeGeneratorGlobalStructure VMMaker.oscog-eem.830 uuid: ad7e3584-5924-4500-be7c-ea7ebac3f71c
+	CCodeGeneratorGlobalStructure VMMaker.oscog-eem.831 uuid: c231d214-1763-4c79-9b58-a5bf3385b0c9
    from
-	CoInterpreter VMMaker.oscog-eem.830 uuid: ad7e3584-5924-4500-be7c-ea7ebac3f71c
+	CoInterpreter VMMaker.oscog-eem.831 uuid: c231d214-1763-4c79-9b58-a5bf3385b0c9
  */
-static char __buildInfo[] = "CoInterpreter VMMaker.oscog-eem.830 uuid: ad7e3584-5924-4500-be7c-ea7ebac3f71c " __DATE__ ;
+static char __buildInfo[] = "CoInterpreter VMMaker.oscog-eem.831 uuid: c231d214-1763-4c79-9b58-a5bf3385b0c9 " __DATE__ ;
 char *__interpBuildInfo = __buildInfo;
 
 
@@ -2311,7 +2311,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 CoInterpreter_VMMaker.oscog-eem.830";
+const char *interpreterVersion = "Newspeak Virtual Machine CoInterpreter_VMMaker.oscog-eem.831";
 sqInt minBackwardJumpCountForCompile = MinBackwardJumpCountForCompile /* 10 */;
 volatile int sendTrace;
 
@@ -42466,14 +42466,19 @@
 
 						/* o2 wasn't in the table; put it there */
 
-						/* begin followForwarded: */
-						assert(isUnambiguouslyForwarder(obj1));
-						referent9 = longAt((obj1 + (BaseHeaderSize)) + (0 << 2));
-						while (((referent9 & 3) == 0)
-						 && (((longAt(referent9)) & 0x3FFFFF) == 8)) {
-							referent9 = longAt((referent9 + (BaseHeaderSize)) + (0 << 2));
+						if (((longAt(obj1)) & (0x3FFFFF - 8)) == 0) {
+							/* begin followForwarded: */
+							assert(isUnambiguouslyForwarder(obj1));
+							referent9 = longAt((obj1 + (BaseHeaderSize)) + (0 << 2));
+							while (((referent9 & 3) == 0)
+							 && (((longAt(referent9)) & 0x3FFFFF) == 8)) {
+								referent9 = longAt((referent9 + (BaseHeaderSize)) + (0 << 2));
+							}
+							newObj2 = referent9;
 						}
-						newObj2 = referent9;
+						else {
+							newObj2 = obj1;
+						}
 						assert((rawHashBitsOf(newObj2)) == 0);
 						/* begin setHashBitsOf:to: */
 						flag("endianness");
@@ -42484,14 +42489,19 @@
 				}
 				else {
 					if (o2ClassIndex != 0) {
-						/* begin followForwarded: */
-						assert(isUnambiguouslyForwarder(obj2));
-						referent13 = longAt((obj2 + (BaseHeaderSize)) + (0 << 2));
-						while (((referent13 & 3) == 0)
-						 && (((longAt(referent13)) & 0x3FFFFF) == 8)) {
-							referent13 = longAt((referent13 + (BaseHeaderSize)) + (0 << 2));
+						if (((longAt(obj2)) & (0x3FFFFF - 8)) == 0) {
+							/* begin followForwarded: */
+							assert(isUnambiguouslyForwarder(obj2));
+							referent13 = longAt((obj2 + (BaseHeaderSize)) + (0 << 2));
+							while (((referent13 & 3) == 0)
+							 && (((longAt(referent13)) & 0x3FFFFF) == 8)) {
+								referent13 = longAt((referent13 + (BaseHeaderSize)) + (0 << 2));
+							}
+							newObj1 = referent13;
 						}
-						newObj1 = referent13;
+						else {
+							newObj1 = obj2;
+						}
 						assert((rawHashBitsOf(newObj1)) == 0);
 						/* begin setHashBitsOf:to: */
 						flag("endianness");
@@ -64375,7 +64385,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);
@@ -64621,7 +64631,7 @@
 		stSize = (sp1 >> 1);
 	l2:	/* end fetchStackPointerOf: */;
 		if (!(((index >= 1) && (index <= stSize)))) {
-			GIV(primFailCode) = PrimErrBadIndex;
+			(GIV(primFailCode) = PrimErrBadIndex);
 			return;
 		}
 		/* begin subscript:with:storing:format: */
@@ -64677,7 +64687,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-07-22 16:38:54 UTC (rev 3051)
+++ branches/Cog/nsspursrc/vm/cointerp.h	2014-07-22 17:45:31 UTC (rev 3052)
@@ -1,5 +1,5 @@
 /* Automatically generated by
-	CCodeGeneratorGlobalStructure VMMaker.oscog-eem.830 uuid: ad7e3584-5924-4500-be7c-ea7ebac3f71c
+	CCodeGeneratorGlobalStructure VMMaker.oscog-eem.831 uuid: c231d214-1763-4c79-9b58-a5bf3385b0c9
  */
 
 

Modified: branches/Cog/nsspursrc/vm/gcc3x-cointerp.c
===================================================================
--- branches/Cog/nsspursrc/vm/gcc3x-cointerp.c	2014-07-22 16:38:54 UTC (rev 3051)
+++ branches/Cog/nsspursrc/vm/gcc3x-cointerp.c	2014-07-22 17:45:31 UTC (rev 3052)
@@ -2,11 +2,11 @@
 
 
 /* Automatically generated by
-	CCodeGeneratorGlobalStructure VMMaker.oscog-eem.830 uuid: ad7e3584-5924-4500-be7c-ea7ebac3f71c
+	CCodeGeneratorGlobalStructure VMMaker.oscog-eem.831 uuid: c231d214-1763-4c79-9b58-a5bf3385b0c9
    from
-	CoInterpreter VMMaker.oscog-eem.830 uuid: ad7e3584-5924-4500-be7c-ea7ebac3f71c
+	CoInterpreter VMMaker.oscog-eem.831 uuid: c231d214-1763-4c79-9b58-a5bf3385b0c9
  */
-static char __buildInfo[] = "CoInterpreter VMMaker.oscog-eem.830 uuid: ad7e3584-5924-4500-be7c-ea7ebac3f71c " __DATE__ ;
+static char __buildInfo[] = "CoInterpreter VMMaker.oscog-eem.831 uuid: c231d214-1763-4c79-9b58-a5bf3385b0c9 " __DATE__ ;
 char *__interpBuildInfo = __buildInfo;
 
 
@@ -2314,7 +2314,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 CoInterpreter_VMMaker.oscog-eem.830";
+const char *interpreterVersion = "Newspeak Virtual Machine CoInterpreter_VMMaker.oscog-eem.831";
 sqInt minBackwardJumpCountForCompile = MinBackwardJumpCountForCompile /* 10 */;
 volatile int sendTrace;
 
@@ -42475,14 +42475,19 @@
 
 						/* o2 wasn't in the table; put it there */
 
-						/* begin followForwarded: */
-						assert(isUnambiguouslyForwarder(obj1));
-						referent9 = longAt((obj1 + (BaseHeaderSize)) + (0 << 2));
-						while (((referent9 & 3) == 0)
-						 && (((longAt(referent9)) & 0x3FFFFF) == 8)) {
-							referent9 = longAt((referent9 + (BaseHeaderSize)) + (0 << 2));
+						if (((longAt(obj1)) & (0x3FFFFF - 8)) == 0) {
+							/* begin followForwarded: */
+							assert(isUnambiguouslyForwarder(obj1));
+							referent9 = longAt((obj1 + (BaseHeaderSize)) + (0 << 2));
+							while (((referent9 & 3) == 0)
+							 && (((longAt(referent9)) & 0x3FFFFF) == 8)) {
+								referent9 = longAt((referent9 + (BaseHeaderSize)) + (0 << 2));
+							}
+							newObj2 = referent9;
 						}
-						newObj2 = referent9;
+						else {
+							newObj2 = obj1;
+						}
 						assert((rawHashBitsOf(newObj2)) == 0);
 						/* begin setHashBitsOf:to: */
 						flag("endianness");
@@ -42493,14 +42498,19 @@
 				}
 				else {
 					if (o2ClassIndex != 0) {
-						/* begin followForwarded: */
-						assert(isUnambiguouslyForwarder(obj2));
-						referent13 = longAt((obj2 + (BaseHeaderSize)) + (0 << 2));
-						while (((referent13 & 3) == 0)
-						 && (((longAt(referent13)) & 0x3FFFFF) == 8)) {
-							referent13 = longAt((referent13 + (BaseHeaderSize)) + (0 << 2));
+						if (((longAt(obj2)) & (0x3FFFFF - 8)) == 0) {
+							/* begin followForwarded: */
+							assert(isUnambiguouslyForwarder(obj2));
+							referent13 = longAt((obj2 + (BaseHeaderSize)) + (0 << 2));
+							while (((referent13 & 3) == 0)
+							 && (((longAt(referent13)) & 0x3FFFFF) == 8)) {
+								referent13 = longAt((referent13 + (BaseHeaderSize)) + (0 << 2));
+							}
+							newObj1 = referent13;
 						}
-						newObj1 = referent13;
+						else {
+							newObj1 = obj2;
+						}
 						assert((rawHashBitsOf(newObj1)) == 0);
 						/* begin setHashBitsOf:to: */
 						flag("endianness");
@@ -64384,7 +64394,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);
@@ -64630,7 +64640,7 @@
 		stSize = (sp1 >> 1);
 	l2:	/* end fetchStackPointerOf: */;
 		if (!(((index >= 1) && (index <= stSize)))) {
-			GIV(primFailCode) = PrimErrBadIndex;
+			(GIV(primFailCode) = PrimErrBadIndex);
 			return;
 		}
 		/* begin subscript:with:storing:format: */
@@ -64686,7 +64696,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/interp.h
===================================================================
--- branches/Cog/nsspursrc/vm/interp.h	2014-07-22 16:38:54 UTC (rev 3051)
+++ branches/Cog/nsspursrc/vm/interp.h	2014-07-22 17:45:31 UTC (rev 3052)
@@ -1,5 +1,5 @@
 /* Automatically generated by
-	CCodeGeneratorGlobalStructure VMMaker.oscog-eem.830 uuid: ad7e3584-5924-4500-be7c-ea7ebac3f71c
+	CCodeGeneratorGlobalStructure VMMaker.oscog-eem.831 uuid: c231d214-1763-4c79-9b58-a5bf3385b0c9
  */
 
 #define VM_PROXY_MAJOR 1

Modified: branches/Cog/nsspursrc/vm/vmCallback.h
===================================================================
--- branches/Cog/nsspursrc/vm/vmCallback.h	2014-07-22 16:38:54 UTC (rev 3051)
+++ branches/Cog/nsspursrc/vm/vmCallback.h	2014-07-22 17:45:31 UTC (rev 3052)
@@ -1,5 +1,5 @@
 /* Automatically generated by
-	CCodeGeneratorGlobalStructure VMMaker.oscog-eem.830 uuid: ad7e3584-5924-4500-be7c-ea7ebac3f71c
+	CCodeGeneratorGlobalStructure VMMaker.oscog-eem.831 uuid: c231d214-1763-4c79-9b58-a5bf3385b0c9
  */
 
 #define VM_CALLBACK_INC 1

Modified: branches/Cog/nsspurstacksrc/vm/gcc3x-interp.c
===================================================================
--- branches/Cog/nsspurstacksrc/vm/gcc3x-interp.c	2014-07-22 16:38:54 UTC (rev 3051)
+++ branches/Cog/nsspurstacksrc/vm/gcc3x-interp.c	2014-07-22 17:45:31 UTC (rev 3052)
@@ -2,11 +2,11 @@
 
 
 /* Automatically generated by
-	CCodeGeneratorGlobalStructure VMMaker.oscog-eem.830 uuid: ad7e3584-5924-4500-be7c-ea7ebac3f71c
+	CCodeGeneratorGlobalStructure VMMaker.oscog-eem.831 uuid: c231d214-1763-4c79-9b58-a5bf3385b0c9
    from
-	StackInterpreter VMMaker.oscog-eem.830 uuid: ad7e3584-5924-4500-be7c-ea7ebac3f71c
+	StackInterpreter VMMaker.oscog-eem.831 uuid: c231d214-1763-4c79-9b58-a5bf3385b0c9
  */
-static char __buildInfo[] = "StackInterpreter VMMaker.oscog-eem.830 uuid: ad7e3584-5924-4500-be7c-ea7ebac3f71c " __DATE__ ;
+static char __buildInfo[] = "StackInterpreter VMMaker.oscog-eem.831 uuid: c231d214-1763-4c79-9b58-a5bf3385b0c9 " __DATE__ ;
 char *__interpBuildInfo = __buildInfo;
 
 
@@ -2062,7 +2062,7 @@
  0 };
 char * breakSelector;
 sqInt breakSelectorLength = -1;
-const char *interpreterVersion = "Newspeak Virtual Machine StackInterpreter_VMMaker.oscog-eem.830";
+const char *interpreterVersion = "Newspeak Virtual Machine StackInterpreter_VMMaker.oscog-eem.831";
 volatile int sendTrace;
 sqInt suppressHeartbeatFlag;
 
@@ -30999,14 +30999,19 @@
 
 						/* o2 wasn't in the table; put it there */
 
-						/* begin followForwarded: */
-						assert(isUnambiguouslyForwarder(obj1));
-						referent7 = longAt((obj1 + (BaseHeaderSize)) + (0 << 2));
-						while (((referent7 & 3) == 0)
-						 && (((longAt(referent7)) & 0x3FFFFF) == 8)) {
-							referent7 = longAt((referent7 + (BaseHeaderSize)) + (0 << 2));
+						if (((longAt(obj1)) & (0x3FFFFF - 8)) == 0) {
+							/* begin followForwarded: */
+							assert(isUnambiguouslyForwarder(obj1));
+							referent7 = longAt((obj1 + (BaseHeaderSize)) + (0 << 2));
+							while (((referent7 & 3) == 0)
+							 && (((longAt(referent7)) & 0x3FFFFF) == 8)) {
+								referent7 = longAt((referent7 + (BaseHeaderSize)) + (0 << 2));
+							}
+							newObj2 = referent7;
 						}
-						newObj2 = referent7;
+						else {
+							newObj2 = obj1;
+						}
 						assert((rawHashBitsOf(newObj2)) == 0);
 						/* begin setHashBitsOf:to: */
 						flag("endianness");
@@ -31017,14 +31022,19 @@
 				}
 				else {
 					if (o2ClassIndex != 0) {
-						/* begin followForwarded: */
-						assert(isUnambiguouslyForwarder(obj2));
-						referent13 = longAt((obj2 + (BaseHeaderSize)) + (0 << 2));
-						while (((referent13 & 3) == 0)
-						 && (((longAt(referent13)) & 0x3FFFFF) == 8)) {
-							referent13 = longAt((referent13 + (BaseHeaderSize)) + (0 << 2));
+						if (((longAt(obj2)) & (0x3FFFFF - 8)) == 0) {
+							/* begin followForwarded: */
+							assert(isUnambiguouslyForwarder(obj2));
+							referent13 = longAt((obj2 + (BaseHeaderSize)) + (0 << 2));
+							while (((referent13 & 3) == 0)
+							 && (((longAt(referent13)) & 0x3FFFFF) == 8)) {
+								referent13 = longAt((referent13 + (BaseHeaderSize)) + (0 << 2));
+							}
+							newObj1 = referent13;
 						}
-						newObj1 = referent13;
+						else {
+							newObj1 = obj2;
+						}
 						assert((rawHashBitsOf(newObj1)) == 0);
 						/* begin setHashBitsOf:to: */
 						flag("endianness");

Modified: branches/Cog/nsspurstacksrc/vm/interp.c
===================================================================
--- branches/Cog/nsspurstacksrc/vm/interp.c	2014-07-22 16:38:54 UTC (rev 3051)
+++ branches/Cog/nsspurstacksrc/vm/interp.c	2014-07-22 17:45:31 UTC (rev 3052)
@@ -1,9 +1,9 @@
 /* Automatically generated by
-	CCodeGeneratorGlobalStructure VMMaker.oscog-eem.830 uuid: ad7e3584-5924-4500-be7c-ea7ebac3f71c
+	CCodeGeneratorGlobalStructure VMMaker.oscog-eem.831 uuid: c231d214-1763-4c79-9b58-a5bf3385b0c9
    from
-	StackInterpreter VMMaker.oscog-eem.830 uuid: ad7e3584-5924-4500-be7c-ea7ebac3f71c
+	StackInterpreter VMMaker.oscog-eem.831 uuid: c231d214-1763-4c79-9b58-a5bf3385b0c9
  */
-static char __buildInfo[] = "StackInterpreter VMMaker.oscog-eem.830 uuid: ad7e3584-5924-4500-be7c-ea7ebac3f71c " __DATE__ ;
+static char __buildInfo[] = "StackInterpreter VMMaker.oscog-eem.831 uuid: c231d214-1763-4c79-9b58-a5bf3385b0c9 " __DATE__ ;
 char *__interpBuildInfo = __buildInfo;
 
 
@@ -2059,7 +2059,7 @@
  0 };
 char * breakSelector;
 sqInt breakSelectorLength = -1;
-const char *interpreterVersion = "Newspeak Virtual Machine StackInterpreter_VMMaker.oscog-eem.830";
+const char *interpreterVersion = "Newspeak Virtual Machine StackInterpreter_VMMaker.oscog-eem.831";
 volatile int sendTrace;
 sqInt suppressHeartbeatFlag;
 
@@ -30990,14 +30990,19 @@
 
 						/* o2 wasn't in the table; put it there */
 
-						/* begin followForwarded: */
-						assert(isUnambiguouslyForwarder(obj1));
-						referent7 = longAt((obj1 + (BaseHeaderSize)) + (0 << 2));
-						while (((referent7 & 3) == 0)
-						 && (((longAt(referent7)) & 0x3FFFFF) == 8)) {
-							referent7 = longAt((referent7 + (BaseHeaderSize)) + (0 << 2));
+						if (((longAt(obj1)) & (0x3FFFFF - 8)) == 0) {
+							/* begin followForwarded: */
+							assert(isUnambiguouslyForwarder(obj1));
+							referent7 = longAt((obj1 + (BaseHeaderSize)) + (0 << 2));
+							while (((referent7 & 3) == 0)
+							 && (((longAt(referent7)) & 0x3FFFFF) == 8)) {
+								referent7 = longAt((referent7 + (BaseHeaderSize)) + (0 << 2));
+							}
+							newObj2 = referent7;
 						}
-						newObj2 = referent7;
+						else {
+							newObj2 = obj1;
+						}
 						assert((rawHashBitsOf(newObj2)) == 0);
 						/* begin setHashBitsOf:to: */
 						flag("endianness");
@@ -31008,14 +31013,19 @@
 				}
 				else {
 					if (o2ClassIndex != 0) {
-						/* begin followForwarded: */
-						assert(isUnambiguouslyForwarder(obj2));
-						referent13 = longAt((obj2 + (BaseHeaderSize)) + (0 << 2));
-						while (((referent13 & 3) == 0)
-						 && (((longAt(referent13)) & 0x3FFFFF) == 8)) {
-							referent13 = longAt((referent13 + (BaseHeaderSize)) + (0 << 2));
+						if (((longAt(obj2)) & (0x3FFFFF - 8)) == 0) {
+							/* begin followForwarded: */
+							assert(isUnambiguouslyForwarder(obj2));
+							referent13 = longAt((obj2 + (BaseHeaderSize)) + (0 << 2));
+							while (((referent13 & 3) == 0)
+							 && (((longAt(referent13)) & 0x3FFFFF) == 8)) {
+								referent13 = longAt((referent13 + (BaseHeaderSize)) + (0 << 2));
+							}
+							newObj1 = referent13;
 						}
-						newObj1 = referent13;
+						else {
+							newObj1 = obj2;
+						}
 						assert((rawHashBitsOf(newObj1)) == 0);
 						/* begin setHashBitsOf:to: */
 						flag("endianness");

Modified: branches/Cog/nsspurstacksrc/vm/interp.h
===================================================================
--- branches/Cog/nsspurstacksrc/vm/interp.h	2014-07-22 16:38:54 UTC (rev 3051)
+++ branches/Cog/nsspurstacksrc/vm/interp.h	2014-07-22 17:45:31 UTC (rev 3052)
@@ -1,5 +1,5 @@
 /* Automatically generated by
-	CCodeGeneratorGlobalStructure VMMaker.oscog-eem.830 uuid: ad7e3584-5924-4500-be7c-ea7ebac3f71c
+	CCodeGeneratorGlobalStructure VMMaker.oscog-eem.831 uuid: c231d214-1763-4c79-9b58-a5bf3385b0c9
  */
 
 #define VM_PROXY_MAJOR 1

Modified: branches/Cog/nsspurstacksrc/vm/vmCallback.h
===================================================================
--- branches/Cog/nsspurstacksrc/vm/vmCallback.h	2014-07-22 16:38:54 UTC (rev 3051)
+++ branches/Cog/nsspurstacksrc/vm/vmCallback.h	2014-07-22 17:45:31 UTC (rev 3052)
@@ -1,5 +1,5 @@
 /* Automatically generated by
-	CCodeGeneratorGlobalStructure VMMaker.oscog-eem.830 uuid: ad7e3584-5924-4500-be7c-ea7ebac3f71c
+	CCodeGeneratorGlobalStructure VMMaker.oscog-eem.831 uuid: c231d214-1763-4c79-9b58-a5bf3385b0c9
  */
 
 #define VM_CALLBACK_INC 1


Property changes on: branches/Cog/platforms/Cross/vm/sqSCCSVersion.h
___________________________________________________________________
Modified: checkindate
   - Tue Jul 22 06:32:10 HST 2014
   + Tue Jul 22 07:44:01 HST 2014

Modified: branches/Cog/spursistasrc/vm/cointerp.c
===================================================================
--- branches/Cog/spursistasrc/vm/cointerp.c	2014-07-22 16:38:54 UTC (rev 3051)
+++ branches/Cog/spursistasrc/vm/cointerp.c	2014-07-22 17:45:31 UTC (rev 3052)
@@ -1,9 +1,9 @@
 /* Automatically generated by
-	CCodeGeneratorGlobalStructure VMMaker.oscog-eem.830 uuid: ad7e3584-5924-4500-be7c-ea7ebac3f71c
+	CCodeGeneratorGlobalStructure VMMaker.oscog-eem.831 uuid: c231d214-1763-4c79-9b58-a5bf3385b0c9
    from
-	CoInterpreter VMMaker.oscog-eem.830 uuid: ad7e3584-5924-4500-be7c-ea7ebac3f71c
+	CoInterpreter VMMaker.oscog-eem.831 uuid: c231d214-1763-4c79-9b58-a5bf3385b0c9
  */
-static char __buildInfo[] = "CoInterpreter VMMaker.oscog-eem.830 uuid: ad7e3584-5924-4500-be7c-ea7ebac3f71c " __DATE__ ;
+static char __buildInfo[] = "CoInterpreter VMMaker.oscog-eem.831 uuid: c231d214-1763-4c79-9b58-a5bf3385b0c9 " __DATE__ ;
 char *__interpBuildInfo = __buildInfo;
 
 
@@ -1116,7 +1116,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);
@@ -2306,7 +2306,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 [CoInterpreter VMMaker.oscog-eem.830]";
+const char *interpreterVersion = "Croquet Closure Cog VM [CoInterpreter VMMaker.oscog-eem.831]";
 sqInt minBackwardJumpCountForCompile = MinBackwardJumpCountForCompile /* 10 */;
 volatile int sendTrace;
 
@@ -5494,6 +5494,7 @@
 							GIV(framePointer) = localFP;
 							
 							ceEnterCogCodePopReceiverReg();
+							null;
 							goto l147;
 						}
 						localIP = pointerForOop(longAt(localFP + FoxIFSavedIP));
@@ -5508,7 +5509,7 @@
 					/* begin fetchNextBytecode */
 					currentBytecode = byteAtPointer(++localIP);
 
-					/* return self */
+					null;
 				l147:	/* end baseFrameReturn */;
 					goto l146;
 				}
@@ -37293,14 +37294,19 @@
 
 						/* o2 wasn't in the table; put it there */
 
-						/* begin followForwarded: */
-						assert(isUnambiguouslyForwarder(obj1));
-						referent9 = longAt((obj1 + (BaseHeaderSize)) + (0 << 2));
-						while (((referent9 & 3) == 0)
-						 && (((longAt(referent9)) & 0x3FFFFF) == 8)) {
-							referent9 = longAt((referent9 + (BaseHeaderSize)) + (0 << 2));
+						if (((longAt(obj1)) & (0x3FFFFF - 8)) == 0) {
+							/* begin followForwarded: */
+							assert(isUnambiguouslyForwarder(obj1));
+							referent9 = longAt((obj1 + (BaseHeaderSize)) + (0 << 2));
+							while (((referent9 & 3) == 0)
+							 && (((longAt(referent9)) & 0x3FFFFF) == 8)) {
+								referent9 = longAt((referent9 + (BaseHeaderSize)) + (0 << 2));
+							}
+							newObj2 = referent9;
 						}
-						newObj2 = referent9;
+						else {
+							newObj2 = obj1;
+						}
 						assert((rawHashBitsOf(newObj2)) == 0);
 						/* begin setHashBitsOf:to: */
 						flag("endianness");
@@ -37311,14 +37317,19 @@
 				}
 				else {
 					if (o2ClassIndex != 0) {
-						/* begin followForwarded: */
-						assert(isUnambiguouslyForwarder(obj2));
-						referent13 = longAt((obj2 + (BaseHeaderSize)) + (0 << 2));
-						while (((referent13 & 3) == 0)
-						 && (((longAt(referent13)) & 0x3FFFFF) == 8)) {
-							referent13 = longAt((referent13 + (BaseHeaderSize)) + (0 << 2));
+						if (((longAt(obj2)) & (0x3FFFFF - 8)) == 0) {
+							/* begin followForwarded: */
+							assert(isUnambiguouslyForwarder(obj2));
+							referent13 = longAt((obj2 + (BaseHeaderSize)) + (0 << 2));
+							while (((referent13 & 3) == 0)
+							 && (((longAt(referent13)) & 0x3FFFFF) == 8)) {
+								referent13 = longAt((referent13 + (BaseHeaderSize)) + (0 << 2));
+							}
+							newObj1 = referent13;
 						}
-						newObj1 = referent13;
+						else {
+							newObj1 = obj2;
+						}
 						assert((rawHashBitsOf(newObj1)) == 0);
 						/* begin setHashBitsOf:to: */
 						flag("endianness");
@@ -46455,7 +46466,7 @@
 	zero if no change
 	was possible. */
 
-static sqInt
+static usqInt
 shortentoIndexableSize(sqInt objOop, sqInt indexableSize)
 {
     usqInt bytesAfter;
@@ -58758,7 +58769,7 @@
 
 	index = longAt(GIV(stackPointer));
 	if (!((index & 1))) {
-		(GIV(primFailCode) = PrimErrBadArgument);
+		GIV(primFailCode) = PrimErrBadArgument;
 		return;
 	}
 	index = (index >> 1);
@@ -58975,7 +58986,7 @@
 		stSize = (sp1 >> 1);
 	l2:	/* end fetchStackPointerOf: */;
 		if (!(((index >= 1) && (index <= stSize)))) {
-			(GIV(primFailCode) = PrimErrBadIndex);
+			GIV(primFailCode) = PrimErrBadIndex;
 			return;
 		}
 		/* begin subscript:with:format: */
@@ -59000,7 +59011,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())

Modified: branches/Cog/spursistasrc/vm/cointerp.h
===================================================================
--- branches/Cog/spursistasrc/vm/cointerp.h	2014-07-22 16:38:54 UTC (rev 3051)
+++ branches/Cog/spursistasrc/vm/cointerp.h	2014-07-22 17:45:31 UTC (rev 3052)
@@ -1,5 +1,5 @@
 /* Automatically generated by
-	CCodeGeneratorGlobalStructure VMMaker.oscog-eem.830 uuid: ad7e3584-5924-4500-be7c-ea7ebac3f71c
+	CCodeGeneratorGlobalStructure VMMaker.oscog-eem.831 uuid: c231d214-1763-4c79-9b58-a5bf3385b0c9
  */
 
 

Modified: branches/Cog/spursistasrc/vm/gcc3x-cointerp.c
===================================================================
--- branches/Cog/spursistasrc/vm/gcc3x-cointerp.c	2014-07-22 16:38:54 UTC (rev 3051)
+++ branches/Cog/spursistasrc/vm/gcc3x-cointerp.c	2014-07-22 17:45:31 UTC (rev 3052)
@@ -2,11 +2,11 @@
 
 
 /* Automatically generated by
-	CCodeGeneratorGlobalStructure VMMaker.oscog-eem.830 uuid: ad7e3584-5924-4500-be7c-ea7ebac3f71c
+	CCodeGeneratorGlobalStructure VMMaker.oscog-eem.831 uuid: c231d214-1763-4c79-9b58-a5bf3385b0c9
    from
-	CoInterpreter VMMaker.oscog-eem.830 uuid: ad7e3584-5924-4500-be7c-ea7ebac3f71c
+	CoInterpreter VMMaker.oscog-eem.831 uuid: c231d214-1763-4c79-9b58-a5bf3385b0c9
  */
-static char __buildInfo[] = "CoInterpreter VMMaker.oscog-eem.830 uuid: ad7e3584-5924-4500-be7c-ea7ebac3f71c " __DATE__ ;
+static char __buildInfo[] = "CoInterpreter VMMaker.oscog-eem.831 uuid: c231d214-1763-4c79-9b58-a5bf3385b0c9 " __DATE__ ;
 char *__interpBuildInfo = __buildInfo;
 
 
@@ -1119,7 +1119,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);
@@ -2309,7 +2309,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 [CoInterpreter VMMaker.oscog-eem.830]";
+const char *interpreterVersion = "Croquet Closure Cog VM [CoInterpreter VMMaker.oscog-eem.831]";
 sqInt minBackwardJumpCountForCompile = MinBackwardJumpCountForCompile /* 10 */;
 volatile int sendTrace;
 
@@ -5503,6 +5503,7 @@
 							GIV(framePointer) = localFP;
 							
 							ceEnterCogCodePopReceiverReg();
+							null;
 							goto l147;
 						}
 						localIP = pointerForOop(longAt(localFP + FoxIFSavedIP));
@@ -5517,7 +5518,7 @@
 					/* begin fetchNextBytecode */
 					currentBytecode = byteAtPointer(++localIP);
 
-					/* return self */
+					null;
 				l147:	/* end baseFrameReturn */;
 					goto l146;
 				}
@@ -37302,14 +37303,19 @@
 
 						/* o2 wasn't in the table; put it there */
 
-						/* begin followForwarded: */
-						assert(isUnambiguouslyForwarder(obj1));
-						referent9 = longAt((obj1 + (BaseHeaderSize)) + (0 << 2));
-						while (((referent9 & 3) == 0)
-						 && (((longAt(referent9)) & 0x3FFFFF) == 8)) {
-							referent9 = longAt((referent9 + (BaseHeaderSize)) + (0 << 2));
+						if (((longAt(obj1)) & (0x3FFFFF - 8)) == 0) {
+							/* begin followForwarded: */
+							assert(isUnambiguouslyForwarder(obj1));
+							referent9 = longAt((obj1 + (BaseHeaderSize)) + (0 << 2));
+							while (((referent9 & 3) == 0)
+							 && (((longAt(referent9)) & 0x3FFFFF) == 8)) {
+								referent9 = longAt((referent9 + (BaseHeaderSize)) + (0 << 2));
+							}
+							newObj2 = referent9;
 						}
-						newObj2 = referent9;
+						else {
+							newObj2 = obj1;
+						}
 						assert((rawHashBitsOf(newObj2)) == 0);
 						/* begin setHashBitsOf:to: */
 						flag("endianness");
@@ -37320,14 +37326,19 @@
 				}
 				else {
 					if (o2ClassIndex != 0) {
-						/* begin followForwarded: */
-						assert(isUnambiguouslyForwarder(obj2));
-						referent13 = longAt((obj2 + (BaseHeaderSize)) + (0 << 2));
-						while (((referent13 & 3) == 0)
-						 && (((longAt(referent13)) & 0x3FFFFF) == 8)) {
-							referent13 = longAt((referent13 + (BaseHeaderSize)) + (0 << 2));
+						if (((longAt(obj2)) & (0x3FFFFF - 8)) == 0) {
+							/* begin followForwarded: */
+							assert(isUnambiguouslyForwarder(obj2));
+							referent13 = longAt((obj2 + (BaseHeaderSize)) + (0 << 2));
+							while (((referent13 & 3) == 0)
+							 && (((longAt(referent13)) & 0x3FFFFF) == 8)) {
+								referent13 = longAt((referent13 + (BaseHeaderSize)) + (0 << 2));
+							}
+							newObj1 = referent13;
 						}
-						newObj1 = referent13;
+						else {
+							newObj1 = obj2;
+						}
 						assert((rawHashBitsOf(newObj1)) == 0);
 						/* begin setHashBitsOf:to: */
 						flag("endianness");
@@ -46464,7 +46475,7 @@
 	zero if no change
 	was possible. */
 
-static sqInt
+static usqInt
 shortentoIndexableSize(sqInt objOop, sqInt indexableSize)
 {
     usqInt bytesAfter;
@@ -58767,7 +58778,7 @@
 
 	index = longAt(GIV(stackPointer));
 	if (!((index & 1))) {
-		(GIV(primFailCode) = PrimErrBadArgument);
+		GIV(primFailCode) = PrimErrBadArgument;
 		return;
 	}
 	index = (index >> 1);
@@ -58984,7 +58995,7 @@
 		stSize = (sp1 >> 1);
 	l2:	/* end fetchStackPointerOf: */;
 		if (!(((index >= 1) && (index <= stSize)))) {
-			(GIV(primFailCode) = PrimErrBadIndex);
+			GIV(primFailCode) = PrimErrBadIndex;
 			return;
 		}
 		/* begin subscript:with:format: */
@@ -59009,7 +59020,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())

Modified: branches/Cog/spursistasrc/vm/interp.h
===================================================================
--- branches/Cog/spursistasrc/vm/interp.h	2014-07-22 16:38:54 UTC (rev 3051)
+++ branches/Cog/spursistasrc/vm/interp.h	2014-07-22 17:45:31 UTC (rev 3052)
@@ -1,5 +1,5 @@
 /* Automatically generated by
-	CCodeGeneratorGlobalStructure VMMaker.oscog-eem.830 uuid: ad7e3584-5924-4500-be7c-ea7ebac3f71c
+	CCodeGeneratorGlobalStructure VMMaker.oscog-eem.831 uuid: c231d214-1763-4c79-9b58-a5bf3385b0c9
  */
 
 #define VM_PROXY_MAJOR 1

Modified: branches/Cog/spursistasrc/vm/vmCallback.h
===================================================================
--- branches/Cog/spursistasrc/vm/vmCallback.h	2014-07-22 16:38:54 UTC (rev 3051)
+++ branches/Cog/spursistasrc/vm/vmCallback.h	2014-07-22 17:45:31 UTC (rev 3052)
@@ -1,5 +1,5 @@
 /* Automatically generated by
-	CCodeGeneratorGlobalStructure VMMaker.oscog-eem.830 uuid: ad7e3584-5924-4500-be7c-ea7ebac3f71c
+	CCodeGeneratorGlobalStructure VMMaker.oscog-eem.831 uuid: c231d214-1763-4c79-9b58-a5bf3385b0c9
  */
 
 #define VM_CALLBACK_INC 1

Modified: branches/Cog/spursrc/vm/cointerp.c
===================================================================
--- branches/Cog/spursrc/vm/cointerp.c	2014-07-22 16:38:54 UTC (rev 3051)
+++ branches/Cog/spursrc/vm/cointerp.c	2014-07-22 17:45:31 UTC (rev 3052)
@@ -1,9 +1,9 @@
 /* Automatically generated by
-	CCodeGeneratorGlobalStructure VMMaker.oscog-eem.830 uuid: ad7e3584-5924-4500-be7c-ea7ebac3f71c
+	CCodeGeneratorGlobalStructure VMMaker.oscog-eem.831 uuid: c231d214-1763-4c79-9b58-a5bf3385b0c9
    from
-	CoInterpreter VMMaker.oscog-eem.830 uuid: ad7e3584-5924-4500-be7c-ea7ebac3f71c
+	CoInterpreter VMMaker.oscog-eem.831 uuid: c231d214-1763-4c79-9b58-a5bf3385b0c9
  */
-static char __buildInfo[] = "CoInterpreter VMMaker.oscog-eem.830 uuid: ad7e3584-5924-4500-be7c-ea7ebac3f71c " __DATE__ ;
+static char __buildInfo[] = "CoInterpreter VMMaker.oscog-eem.831 uuid: c231d214-1763-4c79-9b58-a5bf3385b0c9 " __DATE__ ;
 char *__interpBuildInfo = __buildInfo;
 
 
@@ -2301,7 +2301,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 [CoInterpreter VMMaker.oscog-eem.830]";
+const char *interpreterVersion = "Croquet Closure Cog VM [CoInterpreter VMMaker.oscog-eem.831]";
 sqInt minBackwardJumpCountForCompile = MinBackwardJumpCountForCompile /* 10 */;
 volatile int sendTrace;
 
@@ -37089,14 +37089,19 @@
 
 						/* o2 wasn't in the table; put it there */
 
-						/* begin followForwarded: */
-						assert(isUnambiguouslyForwarder(obj1));
-						referent9 = longAt((obj1 + (BaseHeaderSize)) + (0 << 2));
-						while (((referent9 & 3) == 0)
-						 && (((longAt(referent9)) & 0x3FFFFF) == 8)) {
-							referent9 = longAt((referent9 + (BaseHeaderSize)) + (0 << 2));
+						if (((longAt(obj1)) & (0x3FFFFF - 8)) == 0) {
+							/* begin followForwarded: */
+							assert(isUnambiguouslyForwarder(obj1));
+							referent9 = longAt((obj1 + (BaseHeaderSize)) + (0 << 2));
+							while (((referent9 & 3) == 0)
+							 && (((longAt(referent9)) & 0x3FFFFF) == 8)) {
+								referent9 = longAt((referent9 + (BaseHeaderSize)) + (0 << 2));
+							}
+							newObj2 = referent9;
 						}
-						newObj2 = referent9;
+						else {
+							newObj2 = obj1;
+						}
 						assert((rawHashBitsOf(newObj2)) == 0);
 						/* begin setHashBitsOf:to: */
 						flag("endianness");
@@ -37107,14 +37112,19 @@
 				}
 				else {
 					if (o2ClassIndex != 0) {
-						/* begin followForwarded: */
-						assert(isUnambiguouslyForwarder(obj2));
-						referent13 = longAt((obj2 + (BaseHeaderSize)) + (0 << 2));
-						while (((referent13 & 3) == 0)
-						 && (((longAt(referent13)) & 0x3FFFFF) == 8)) {
-							referent13 = longAt((referent13 + (BaseHeaderSize)) + (0 << 2));
+						if (((longAt(obj2)) & (0x3FFFFF - 8)) == 0) {
+							/* begin followForwarded: */
+							assert(isUnambiguouslyForwarder(obj2));
+							referent13 = longAt((obj2 + (BaseHeaderSize)) + (0 << 2));
+							while (((referent13 & 3) == 0)
+							 && (((longAt(referent13)) & 0x3FFFFF) == 8)) {
+								referent13 = longAt((referent13 + (BaseHeaderSize)) + (0 << 2));
+							}
+							newObj1 = referent13;
 						}
-						newObj1 = referent13;
+						else {
+							newObj1 = obj2;
+						}
 						assert((rawHashBitsOf(newObj1)) == 0);
 						/* begin setHashBitsOf:to: */
 						flag("endianness");
@@ -58518,7 +58528,7 @@
 
 	index = longAt(GIV(stackPointer));
 	if (!((index & 1))) {
-		(GIV(primFailCode) = PrimErrBadArgument);
+		GIV(primFailCode) = PrimErrBadArgument;
 		return;
 	}
 	index = (index >> 1);
@@ -58735,7 +58745,7 @@
 		stSize = (sp1 >> 1);
 	l2:	/* end fetchStackPointerOf: */;
 		if (!(((index >= 1) && (index <= stSize)))) {
-			(GIV(primFailCode) = PrimErrBadIndex);
+			GIV(primFailCode) = PrimErrBadIndex;
 			return;
 		}
 		/* begin subscript:with:format: */
@@ -58760,7 +58770,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())
@@ -58823,7 +58833,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);
@@ -59069,7 +59079,7 @@
 		stSize = (sp1 >> 1);
 	l2:	/* end fetchStackPointerOf: */;
 		if (!(((index >= 1) && (index <= stSize)))) {
-			GIV(primFailCode) = PrimErrBadIndex;
+			(GIV(primFailCode) = PrimErrBadIndex);
 			return;
 		}
 		/* begin subscript:with:storing:format: */
@@ -59125,7 +59135,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-07-22 16:38:54 UTC (rev 3051)
+++ branches/Cog/spursrc/vm/cointerp.h	2014-07-22 17:45:31 UTC (rev 3052)
@@ -1,5 +1,5 @@
 /* Automatically generated by
-	CCodeGeneratorGlobalStructure VMMaker.oscog-eem.830 uuid: ad7e3584-5924-4500-be7c-ea7ebac3f71c
+	CCodeGeneratorGlobalStructure VMMaker.oscog-eem.831 uuid: c231d214-1763-4c79-9b58-a5bf3385b0c9
  */
 
 

Modified: branches/Cog/spursrc/vm/gcc3x-cointerp.c
===================================================================
--- branches/Cog/spursrc/vm/gcc3x-cointerp.c	2014-07-22 16:38:54 UTC (rev 3051)
+++ branches/Cog/spursrc/vm/gcc3x-cointerp.c	2014-07-22 17:45:31 UTC (rev 3052)
@@ -2,11 +2,11 @@
 
 
 /* Automatically generated by
-	CCodeGeneratorGlobalStructure VMMaker.oscog-eem.830 uuid: ad7e3584-5924-4500-be7c-ea7ebac3f71c
+	CCodeGeneratorGlobalStructure VMMaker.oscog-eem.831 uuid: c231d214-1763-4c79-9b58-a5bf3385b0c9
    from
-	CoInterpreter VMMaker.oscog-eem.830 uuid: ad7e3584-5924-4500-be7c-ea7ebac3f71c
+	CoInterpreter VMMaker.oscog-eem.831 uuid: c231d214-1763-4c79-9b58-a5bf3385b0c9
  */
-static char __buildInfo[] = "CoInterpreter VMMaker.oscog-eem.830 uuid: ad7e3584-5924-4500-be7c-ea7ebac3f71c " __DATE__ ;
+static char __buildInfo[] = "CoInterpreter VMMaker.oscog-eem.831 uuid: c231d214-1763-4c79-9b58-a5bf3385b0c9 " __DATE__ ;
 char *__interpBuildInfo = __buildInfo;
 
 
@@ -2304,7 +2304,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 [CoInterpreter VMMaker.oscog-eem.830]";
+const char *interpreterVersion = "Croquet Closure Cog VM [CoInterpreter VMMaker.oscog-eem.831]";
 sqInt minBackwardJumpCountForCompile = MinBackwardJumpCountForCompile /* 10 */;
 volatile int sendTrace;
 
@@ -37098,14 +37098,19 @@
 
 						/* o2 wasn't in the table; put it there */
 
-						/* begin followForwarded: */
-						assert(isUnambiguouslyForwarder(obj1));
-						referent9 = longAt((obj1 + (BaseHeaderSize)) + (0 << 2));
-						while (((referent9 & 3) == 0)
-						 && (((longAt(referent9)) & 0x3FFFFF) == 8)) {
-							referent9 = longAt((referent9 + (BaseHeaderSize)) + (0 << 2));
+						if (((longAt(obj1)) & (0x3FFFFF - 8)) == 0) {
+							/* begin followForwarded: */
+							assert(isUnambiguouslyForwarder(obj1));
+							referent9 = longAt((obj1 + (BaseHeaderSize)) + (0 << 2));
+							while (((referent9 & 3) == 0)
+							 && (((longAt(referent9)) & 0x3FFFFF) == 8)) {
+								referent9 = longAt((referent9 + (BaseHeaderSize)) + (0 << 2));
+							}
+							newObj2 = referent9;
 						}
-						newObj2 = referent9;
+						else {
+							newObj2 = obj1;
+						}
 						assert((rawHashBitsOf(newObj2)) == 0);
 						/* begin setHashBitsOf:to: */
 						flag("endianness");
@@ -37116,14 +37121,19 @@
 				}
 				else {
 					if (o2ClassIndex != 0) {
-						/* begin followForwarded: */
-						assert(isUnambiguouslyForwarder(obj2));
-						referent13 = longAt((obj2 + (BaseHeaderSize)) + (0 << 2));
-						while (((referent13 & 3) == 0)
-						 && (((longAt(referent13)) & 0x3FFFFF) == 8)) {
-							referent13 = longAt((referent13 + (BaseHeaderSize)) + (0 << 2));
+						if (((longAt(obj2)) & (0x3FFFFF - 8)) == 0) {
+							/* begin followForwarded: */
+							assert(isUnambiguouslyForwarder(obj2));
+							referent13 = longAt((obj2 + (BaseHeaderSize)) + (0 << 2));
+							while (((referent13 & 3) == 0)
+							 && (((longAt(referent13)) & 0x3FFFFF) == 8)) {
+								referent13 = longAt((referent13 + (BaseHeaderSize)) + (0 << 2));
+							}
+							newObj1 = referent13;
 						}
-						newObj1 = referent13;
+						else {
+							newObj1 = obj2;
+						}
 						assert((rawHashBitsOf(newObj1)) == 0);
 						/* begin setHashBitsOf:to: */
 						flag("endianness");
@@ -58527,7 +58537,7 @@
 
 	index = longAt(GIV(stackPointer));
 	if (!((index & 1))) {
-		(GIV(primFailCode) = PrimErrBadArgument);
+		GIV(primFailCode) = PrimErrBadArgument;
 		return;
 	}
 	index = (index >> 1);
@@ -58744,7 +58754,7 @@
 		stSize = (sp1 >> 1);
 	l2:	/* end fetchStackPointerOf: */;
 		if (!(((index >= 1) && (index <= stSize)))) {
-			(GIV(primFailCode) = PrimErrBadIndex);
+			GIV(primFailCode) = PrimErrBadIndex;
 			return;
 		}
 		/* begin subscript:with:format: */
@@ -58769,7 +58779,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())
@@ -58832,7 +58842,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);
@@ -59078,7 +59088,7 @@
 		stSize = (sp1 >> 1);
 	l2:	/* end fetchStackPointerOf: */;
 		if (!(((index >= 1) && (index <= stSize)))) {
-			GIV(primFailCode) = PrimErrBadIndex;
+			(GIV(primFailCode) = PrimErrBadIndex);
 			return;
 		}
 		/* begin subscript:with:storing:format: */
@@ -59134,7 +59144,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/interp.h
===================================================================
--- branches/Cog/spursrc/vm/interp.h	2014-07-22 16:38:54 UTC (rev 3051)
+++ branches/Cog/spursrc/vm/interp.h	2014-07-22 17:45:31 UTC (rev 3052)
@@ -1,5 +1,5 @@
 /* Automatically generated by
-	CCodeGeneratorGlobalStructure VMMaker.oscog-eem.830 uuid: ad7e3584-5924-4500-be7c-ea7ebac3f71c
+	CCodeGeneratorGlobalStructure VMMaker.oscog-eem.831 uuid: c231d214-1763-4c79-9b58-a5bf3385b0c9
  */
 
 #define VM_PROXY_MAJOR 1

Modified: branches/Cog/spursrc/vm/vmCallback.h
===================================================================
--- branches/Cog/spursrc/vm/vmCallback.h	2014-07-22 16:38:54 UTC (rev 3051)
+++ branches/Cog/spursrc/vm/vmCallback.h	2014-07-22 17:45:31 UTC (rev 3052)
@@ -1,5 +1,5 @@
 /* Automatically generated by
-	CCodeGeneratorGlobalStructure VMMaker.oscog-eem.830 uuid: ad7e3584-5924-4500-be7c-ea7ebac3f71c
+	CCodeGeneratorGlobalStructure VMMaker.oscog-eem.831 uuid: c231d214-1763-4c79-9b58-a5bf3385b0c9
  */
 
 #define VM_CALLBACK_INC 1

Modified: branches/Cog/spurstacksrc/vm/gcc3x-interp.c
===================================================================
--- branches/Cog/spurstacksrc/vm/gcc3x-interp.c	2014-07-22 16:38:54 UTC (rev 3051)
+++ branches/Cog/spurstacksrc/vm/gcc3x-interp.c	2014-07-22 17:45:31 UTC (rev 3052)
@@ -2,11 +2,11 @@
 
 
 /* Automatically generated by
-	CCodeGeneratorGlobalStructure VMMaker.oscog-eem.830 uuid: ad7e3584-5924-4500-be7c-ea7ebac3f71c
+	CCodeGeneratorGlobalStructure VMMaker.oscog-eem.831 uuid: c231d214-1763-4c79-9b58-a5bf3385b0c9
    from
-	StackInterpreter VMMaker.oscog-eem.830 uuid: ad7e3584-5924-4500-be7c-ea7ebac3f71c
+	StackInterpreter VMMaker.oscog-eem.831 uuid: c231d214-1763-4c79-9b58-a5bf3385b0c9
  */
-static char __buildInfo[] = "StackInterpreter VMMaker.oscog-eem.830 uuid: ad7e3584-5924-4500-be7c-ea7ebac3f71c " __DATE__ ;
+static char __buildInfo[] = "StackInterpreter VMMaker.oscog-eem.831 uuid: c231d214-1763-4c79-9b58-a5bf3385b0c9 " __DATE__ ;
 char *__interpBuildInfo = __buildInfo;
 
 
@@ -2055,7 +2055,7 @@
  0 };
 char * breakSelector;
 sqInt breakSelectorLength = -1;
-const char *interpreterVersion = "Croquet Closure Stack VM [StackInterpreter VMMaker.oscog-eem.830]";
+const char *interpreterVersion = "Croquet Closure Stack VM [StackInterpreter VMMaker.oscog-eem.831]";
 volatile int sendTrace;
 sqInt suppressHeartbeatFlag;
 
@@ -26473,14 +26473,19 @@
 
 						/* o2 wasn't in the table; put it there */
 
-						/* begin followForwarded: */
-						assert(isUnambiguouslyForwarder(obj1));
-						referent7 = longAt((obj1 + (BaseHeaderSize)) + (0 << 2));
-						while (((referent7 & 3) == 0)
-						 && (((longAt(referent7)) & 0x3FFFFF) == 8)) {
-							referent7 = longAt((referent7 + (BaseHeaderSize)) + (0 << 2));
+						if (((longAt(obj1)) & (0x3FFFFF - 8)) == 0) {
+							/* begin followForwarded: */
+							assert(isUnambiguouslyForwarder(obj1));
+							referent7 = longAt((obj1 + (BaseHeaderSize)) + (0 << 2));
+							while (((referent7 & 3) == 0)
+							 && (((longAt(referent7)) & 0x3FFFFF) == 8)) {
+								referent7 = longAt((referent7 + (BaseHeaderSize)) + (0 << 2));
+							}
+							newObj2 = referent7;
 						}
-						newObj2 = referent7;
+						else {
+							newObj2 = obj1;
+						}
 						assert((rawHashBitsOf(newObj2)) == 0);
 						/* begin setHashBitsOf:to: */
 						flag("endianness");
@@ -26491,14 +26496,19 @@
 				}
 				else {
 					if (o2ClassIndex != 0) {
-						/* begin followForwarded: */
-						assert(isUnambiguouslyForwarder(obj2));
-						referent13 = longAt((obj2 + (BaseHeaderSize)) + (0 << 2));
-						while (((referent13 & 3) == 0)
-						 && (((longAt(referent13)) & 0x3FFFFF) == 8)) {
-							referent13 = longAt((referent13 + (BaseHeaderSize)) + (0 << 2));
+						if (((longAt(obj2)) & (0x3FFFFF - 8)) == 0) {
+							/* begin followForwarded: */
+							assert(isUnambiguouslyForwarder(obj2));
+							referent13 = longAt((obj2 + (BaseHeaderSize)) + (0 << 2));
+							while (((referent13 & 3) == 0)
+							 && (((longAt(referent13)) & 0x3FFFFF) == 8)) {
+								referent13 = longAt((referent13 + (BaseHeaderSize)) + (0 << 2));
+							}
+							newObj1 = referent13;
 						}
-						newObj1 = referent13;
+						else {
+							newObj1 = obj2;
+						}
 						assert((rawHashBitsOf(newObj1)) == 0);
 						/* begin setHashBitsOf:to: */
 						flag("endianness");

Modified: branches/Cog/spurstacksrc/vm/interp.c
===================================================================
--- branches/Cog/spurstacksrc/vm/interp.c	2014-07-22 16:38:54 UTC (rev 3051)
+++ branches/Cog/spurstacksrc/vm/interp.c	2014-07-22 17:45:31 UTC (rev 3052)
@@ -1,9 +1,9 @@
 /* Automatically generated by
-	CCodeGeneratorGlobalStructure VMMaker.oscog-eem.830 uuid: ad7e3584-5924-4500-be7c-ea7ebac3f71c
+	CCodeGeneratorGlobalStructure VMMaker.oscog-eem.831 uuid: c231d214-1763-4c79-9b58-a5bf3385b0c9
    from
-	StackInterpreter VMMaker.oscog-eem.830 uuid: ad7e3584-5924-4500-be7c-ea7ebac3f71c
+	StackInterpreter VMMaker.oscog-eem.831 uuid: c231d214-1763-4c79-9b58-a5bf3385b0c9
  */
-static char __buildInfo[] = "StackInterpreter VMMaker.oscog-eem.830 uuid: ad7e3584-5924-4500-be7c-ea7ebac3f71c " __DATE__ ;
+static char __buildInfo[] = "StackInterpreter VMMaker.oscog-eem.831 uuid: c231d214-1763-4c79-9b58-a5bf3385b0c9 " __DATE__ ;
 char *__interpBuildInfo = __buildInfo;
 
 
@@ -2052,7 +2052,7 @@
  0 };
 char * breakSelector;
 sqInt breakSelectorLength = -1;
-const char *interpreterVersion = "Croquet Closure Stack VM [StackInterpreter VMMaker.oscog-eem.830]";
+const char *interpreterVersion = "Croquet Closure Stack VM [StackInterpreter VMMaker.oscog-eem.831]";
 volatile int sendTrace;
 sqInt suppressHeartbeatFlag;
 
@@ -26464,14 +26464,19 @@
 
 						/* o2 wasn't in the table; put it there */
 
-						/* begin followForwarded: */
-						assert(isUnambiguouslyForwarder(obj1));
-						referent7 = longAt((obj1 + (BaseHeaderSize)) + (0 << 2));
-						while (((referent7 & 3) == 0)
-						 && (((longAt(referent7)) & 0x3FFFFF) == 8)) {
-							referent7 = longAt((referent7 + (BaseHeaderSize)) + (0 << 2));
+						if (((longAt(obj1)) & (0x3FFFFF - 8)) == 0) {
+							/* begin followForwarded: */
+							assert(isUnambiguouslyForwarder(obj1));
+							referent7 = longAt((obj1 + (BaseHeaderSize)) + (0 << 2));
+							while (((referent7 & 3) == 0)
+							 && (((longAt(referent7)) & 0x3FFFFF) == 8)) {
+								referent7 = longAt((referent7 + (BaseHeaderSize)) + (0 << 2));
+							}
+							newObj2 = referent7;
 						}
-						newObj2 = referent7;
+						else {
+							newObj2 = obj1;
+						}
 						assert((rawHashBitsOf(newObj2)) == 0);
 						/* begin setHashBitsOf:to: */
 						flag("endianness");
@@ -26482,14 +26487,19 @@
 				}
 				else {
 					if (o2ClassIndex != 0) {
-						/* begin followForwarded: */
-						assert(isUnambiguouslyForwarder(obj2));
-						referent13 = longAt((obj2 + (BaseHeaderSize)) + (0 << 2));
-						while (((referent13 & 3) == 0)
-						 && (((longAt(referent13)) & 0x3FFFFF) == 8)) {
-							referent13 = longAt((referent13 + (BaseHeaderSize)) + (0 << 2));
+						if (((longAt(obj2)) & (0x3FFFFF - 8)) == 0) {
+							/* begin followForwarded: */
+							assert(isUnambiguouslyForwarder(obj2));
+							referent13 = longAt((obj2 + (BaseHeaderSize)) + (0 << 2));
+							while (((referent13 & 3) == 0)
+							 && (((longAt(referent13)) & 0x3FFFFF) == 8)) {
+								referent13 = longAt((referent13 + (BaseHeaderSize)) + (0 << 2));
+							}
+							newObj1 = referent13;
 						}
-						newObj1 = referent13;
+						else {
+							newObj1 = obj2;
+						}
 						assert((rawHashBitsOf(newObj1)) == 0);
 						/* begin setHashBitsOf:to: */
 						flag("endianness");

Modified: branches/Cog/spurstacksrc/vm/interp.h
===================================================================
--- branches/Cog/spurstacksrc/vm/interp.h	2014-07-22 16:38:54 UTC (rev 3051)
+++ branches/Cog/spurstacksrc/vm/interp.h	2014-07-22 17:45:31 UTC (rev 3052)
@@ -1,5 +1,5 @@
 /* Automatically generated by
-	CCodeGeneratorGlobalStructure VMMaker.oscog-eem.830 uuid: ad7e3584-5924-4500-be7c-ea7ebac3f71c
+	CCodeGeneratorGlobalStructure VMMaker.oscog-eem.831 uuid: c231d214-1763-4c79-9b58-a5bf3385b0c9
  */
 
 #define VM_PROXY_MAJOR 1

Modified: branches/Cog/spurstacksrc/vm/vmCallback.h
===================================================================
--- branches/Cog/spurstacksrc/vm/vmCallback.h	2014-07-22 16:38:54 UTC (rev 3051)
+++ branches/Cog/spurstacksrc/vm/vmCallback.h	2014-07-22 17:45:31 UTC (rev 3052)
@@ -1,5 +1,5 @@
 /* Automatically generated by
-	CCodeGeneratorGlobalStructure VMMaker.oscog-eem.830 uuid: ad7e3584-5924-4500-be7c-ea7ebac3f71c
+	CCodeGeneratorGlobalStructure VMMaker.oscog-eem.831 uuid: c231d214-1763-4c79-9b58-a5bf3385b0c9
  */
 
 #define VM_CALLBACK_INC 1



More information about the Vm-dev mailing list