[Vm-dev] [commit][3250] CogVM source as per VMMaker.oscog-eem.1050

commits at squeakvm.org commits at squeakvm.org
Wed Feb 11 02:46:56 UTC 2015


Revision: 3250
Author:   eliot
Date:     2015-02-10 18:46:48 -0800 (Tue, 10 Feb 2015)
Log Message:
-----------
CogVM source as per VMMaker.oscog-eem.1050

Spur:
It's the atCache, stupid.  Flush the atCache after every become.
Eliminate duplicate flush in flushExternalPrimitives.

General:
Clean up a few more flushAtCache duplicates

Introduce lastPointerOfArray: and use it to slim down become checking.
Simplify getErrorObjectFromPrimFailCode.  Use lastPointerOfMethodHeader:
in makeBaseFrameFor: to same effect.

Modified Paths:
--------------
    branches/Cog/nscogsrc/vm/cointerp.c
    branches/Cog/nscogsrc/vm/cointerp.h
    branches/Cog/nscogsrc/vm/gcc3x-cointerp.c
    branches/Cog/nsspursrc/vm/cointerp.c
    branches/Cog/nsspursrc/vm/cointerp.h
    branches/Cog/nsspursrc/vm/gcc3x-cointerp.c
    branches/Cog/nsspurstacksrc/vm/gcc3x-interp.c
    branches/Cog/nsspurstacksrc/vm/interp.c
    branches/Cog/sistasrc/vm/cointerp.c
    branches/Cog/sistasrc/vm/cointerp.h
    branches/Cog/sistasrc/vm/gcc3x-cointerp.c
    branches/Cog/spursistasrc/vm/cointerp.c
    branches/Cog/spursistasrc/vm/cointerp.h
    branches/Cog/spursistasrc/vm/gcc3x-cointerp.c
    branches/Cog/spursrc/vm/cointerp.c
    branches/Cog/spursrc/vm/cointerp.h
    branches/Cog/spursrc/vm/gcc3x-cointerp.c
    branches/Cog/spurstack64src/vm/gcc3x-interp.c
    branches/Cog/spurstack64src/vm/interp.c
    branches/Cog/spurstacksrc/vm/gcc3x-interp.c
    branches/Cog/spurstacksrc/vm/interp.c
    branches/Cog/src/vm/cointerp.c
    branches/Cog/src/vm/cointerp.h
    branches/Cog/src/vm/cointerpmt.c
    branches/Cog/src/vm/cointerpmt.h
    branches/Cog/src/vm/gcc3x-cointerp.c
    branches/Cog/src/vm/gcc3x-cointerpmt.c
    branches/Cog/stacksrc/vm/gcc3x-interp.c
    branches/Cog/stacksrc/vm/interp.c

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

Modified: branches/Cog/nscogsrc/vm/cointerp.c
===================================================================
--- branches/Cog/nscogsrc/vm/cointerp.c	2015-02-10 23:19:26 UTC (rev 3249)
+++ branches/Cog/nscogsrc/vm/cointerp.c	2015-02-11 02:46:48 UTC (rev 3250)
@@ -1,9 +1,9 @@
 /* Automatically generated by
-	CCodeGeneratorGlobalStructure VMMaker.oscog-eem.1048 uuid: 8c759c0d-f612-4018-8a05-45ec7f6af78f
+	CCodeGeneratorGlobalStructure VMMaker.oscog-eem.1050 uuid: ad3a825c-97ba-4d01-a0e7-637af8cbf52b
    from
-	CoInterpreter VMMaker.oscog-eem.1048 uuid: 8c759c0d-f612-4018-8a05-45ec7f6af78f
+	CoInterpreter VMMaker.oscog-eem.1050 uuid: ad3a825c-97ba-4d01-a0e7-637af8cbf52b
  */
-static char __buildInfo[] = "CoInterpreter VMMaker.oscog-eem.1048 uuid: 8c759c0d-f612-4018-8a05-45ec7f6af78f " __DATE__ ;
+static char __buildInfo[] = "CoInterpreter VMMaker.oscog-eem.1050 uuid: ad3a825c-97ba-4d01-a0e7-637af8cbf52b " __DATE__ ;
 char *__interpBuildInfo = __buildInfo;
 
 
@@ -833,6 +833,7 @@
 static void initializeObjectMemory(sqInt bytesToShift) NoDbgRegParms;
 static sqInt isContextHeader(sqInt aHeader) NoDbgRegParms;
 sqInt isYoungObject(sqInt obj);
+static sqInt lastPointerOfMethodHeader(sqInt methodHeader) NoDbgRegParms;
 sqInt lastPointerOf(sqInt objOop);
 sqInt leakCheckBecome(void);
 sqInt leakCheckFullGC(void);
@@ -1455,8 +1456,8 @@
 _iss sqInt overflowLimit;
 _iss StackPage * overflowedPage;
 _iss sqInt the2ndUnknownShort;
-_iss sqInt atCache[AtCacheTotalSize + 1 /* 65 */];
 _iss long methodCache[MethodCacheSize + 1 /* 4097 */];
+_iss sqInt atCache[AtCacheTotalSize + 1 /* 65 */];
 _iss sqInt traceLog[TraceBufferSize /* 768 */];
 _iss sqInt remapBuffer[RemapBufferSize + 1 /* 26 */];
 _iss sqInt primTraceLog[256];
@@ -2096,7 +2097,7 @@
 	/* 575 */ (void (*)(void))0,
  0 };
 char expensiveAsserts = 0;
-const char *interpreterVersion = "Newspeak Virtual Machine CoInterpreterPrimitives_VMMaker.oscog-eem.1048";
+const char *interpreterVersion = "Newspeak Virtual Machine CoInterpreterPrimitives_VMMaker.oscog-eem.1050";
 sqInt minBackwardJumpCountForCompile = MinBackwardJumpCountForCompile /* 40 */;
 volatile int sendTrace;
 
@@ -5436,7 +5437,7 @@
 									/* begin getErrorObjectFromPrimFailCode */
 									if (GIV(primFailCode) > 0) {
 										table = longAt((GIV(specialObjectsOop) + BaseHeaderSize) + (PrimErrTableIndex << (shiftForWord())));
-										if (GIV(primFailCode) <= ((lastPointerOf(table)) / BytesPerWord)) {
+										if (GIV(primFailCode) <= (numSlotsOf(table))) {
 											errorCode = longAt((table + BaseHeaderSize) + ((GIV(primFailCode) - 1) << (shiftForWord())));
 											goto l304;
 										}
@@ -13257,7 +13258,7 @@
 				/* begin getErrorObjectFromPrimFailCode */
 				if (GIV(primFailCode) > 0) {
 					table = longAt((GIV(specialObjectsOop) + BaseHeaderSize) + (PrimErrTableIndex << (shiftForWord())));
-					if (GIV(primFailCode) <= ((lastPointerOf(table)) / BytesPerWord)) {
+					if (GIV(primFailCode) <= (numSlotsOf(table))) {
 						errorCode = longAt((table + BaseHeaderSize) + ((GIV(primFailCode) - 1) << (shiftForWord())));
 						goto l1;
 					}
@@ -13385,7 +13386,7 @@
 				/* begin getErrorObjectFromPrimFailCode */
 				if (GIV(primFailCode) > 0) {
 					table = longAt((GIV(specialObjectsOop) + BaseHeaderSize) + (PrimErrTableIndex << (shiftForWord())));
-					if (GIV(primFailCode) <= ((lastPointerOf(table)) / BytesPerWord)) {
+					if (GIV(primFailCode) <= (numSlotsOf(table))) {
 						errorCode = longAt((table + BaseHeaderSize) + ((GIV(primFailCode) - 1) << (shiftForWord())));
 						goto l1;
 					}
@@ -17078,7 +17079,7 @@
 		 && ((((((sqInt) header)) < 0
 			? header & AlternateHeaderHasPrimFlag
 			: header & V3PrimitiveBitsMask))
-		 && (theIP == (1 + (lastPointerOf(theMethod)))))) {
+		 && (theIP == (1 + (lastPointerOfMethodHeader(header)))))) {
 			theIP += ((((sqInt) header)) < 0
 				? 3
 				: 0);
@@ -18935,10 +18936,8 @@
     sqInt i1;
     sqInt i11;
     sqInt i2;
-    sqInt i21;
     sqInt i3;
     sqInt i4;
-    sqInt i5;
     sqInt iLimiT;
     sqInt lastHash;
     sqInt memEnd;
@@ -19182,22 +19181,22 @@
 	/* default */
 
 	GIV(thisClassIndex) = 5;
-	for (i5 = (InstanceSpecificationIndex + 1), iLimiT = (lengthOf(classArrayClass)); i5 <= iLimiT; i5 += 1) {
-		if ((longAt((classArrayClass + BaseHeaderSize) + ((i5 - 1) << (shiftForWord())))) == classArrayObj) {
-			GIV(thisClassIndex) = i5 - 1;
+	for (i4 = (InstanceSpecificationIndex + 1), iLimiT = (lengthOf(classArrayClass)); i4 <= iLimiT; i4 += 1) {
+		if ((longAt((classArrayClass + BaseHeaderSize) + ((i4 - 1) << (shiftForWord())))) == classArrayObj) {
+			GIV(thisClassIndex) = i4 - 1;
 		}
 	}
 
 	/* default */
 
 	GIV(classNameIndex) = 6;
-	for (i5 = (InstanceSpecificationIndex + 1), iLimiT = (lengthOf(classArrayObj)); i5 <= iLimiT; i5 += 1) {
-		oop = longAt((classArrayObj + BaseHeaderSize) + ((i5 - 1) << (shiftForWord())));
+	for (i4 = (InstanceSpecificationIndex + 1), iLimiT = (lengthOf(classArrayObj)); i4 <= iLimiT; i4 += 1) {
+		oop = longAt((classArrayObj + BaseHeaderSize) + ((i4 - 1) << (shiftForWord())));
 		if ((((oop & 1) == 0)
 		 && (((((usqInt) (longAt(oop))) >> (instFormatFieldLSB())) & 15) >= 8))
 		 && (((lengthOf(oop)) == 5)
 		 && ((strncmp("Array", firstFixedField(oop), 5)) == 0))) {
-			GIV(classNameIndex) = i5 - 1;
+			GIV(classNameIndex) = i4 - 1;
 		}
 	}
 	GIV(method) = (GIV(newMethod) = GIV(nilObj));
@@ -19216,31 +19215,23 @@
 		GIV(atCache)[i1] = 0;
 	}
 	unlinkAllSends();
-	/* begin flushAtCache */
-	for (i2 = 1; i2 <= AtCacheTotalSize; i2 += 1) {
-		GIV(atCache)[i2] = 0;
-	}
 	/* begin initialCleanup */
 	/* begin flushMethodCache */
-	for (i4 = 1; i4 <= MethodCacheSize; i4 += 1) {
-		GIV(methodCache)[i4] = 0;
+	for (i3 = 1; i3 <= MethodCacheSize; i3 += 1) {
+		GIV(methodCache)[i3] = 0;
 	}
 
 	/* this for primitiveExternalMethod */
 
 	GIV(lastMethodCacheProbeWrite) = 0;
 	/* begin flushAtCache */
-	for (i3 = 1; i3 <= AtCacheTotalSize; i3 += 1) {
-		GIV(atCache)[i3] = 0;
+	for (i2 = 1; i2 <= AtCacheTotalSize; i2 += 1) {
+		GIV(atCache)[i2] = 0;
 	}
 	unlinkAllSends();
-	/* begin flushAtCache */
-	for (i11 = 1; i11 <= AtCacheTotalSize; i11 += 1) {
-		GIV(atCache)[i11] = 0;
-	}
 	/* begin flushExternalPrimitiveTable */
-	for (i21 = 0; i21 < MaxExternalPrimitiveTableSize; i21 += 1) {
-		externalPrimitiveTable[i21] = 0;
+	for (i11 = 0; i11 < MaxExternalPrimitiveTableSize; i11 += 1) {
+		externalPrimitiveTable[i11] = 0;
 	}
 	GIV(externalPrimitiveTableFirstFreeIndex) = 0;
 	GIV(profileSemaphore) = (GIV(profileProcess) = (GIV(profileMethod) = GIV(nilObj)));
@@ -19723,7 +19714,7 @@
 				/* begin getErrorObjectFromPrimFailCode */
 				if (GIV(primFailCode) > 0) {
 					table = longAt((GIV(specialObjectsOop) + BaseHeaderSize) + (PrimErrTableIndex << (shiftForWord())));
-					if (GIV(primFailCode) <= ((lastPointerOf(table)) / BytesPerWord)) {
+					if (GIV(primFailCode) <= (numSlotsOf(table))) {
 						errorCode = longAt((table + BaseHeaderSize) + ((GIV(primFailCode) - 1) << (shiftForWord())));
 						goto l1;
 					}
@@ -19958,7 +19949,7 @@
 				/* begin getErrorObjectFromPrimFailCode */
 				if (GIV(primFailCode) > 0) {
 					table = longAt((GIV(specialObjectsOop) + BaseHeaderSize) + (PrimErrTableIndex << (shiftForWord())));
-					if (GIV(primFailCode) <= ((lastPointerOf(table)) / BytesPerWord)) {
+					if (GIV(primFailCode) <= (numSlotsOf(table))) {
 						errorCode = longAt((table + BaseHeaderSize) + ((GIV(primFailCode) - 1) << (shiftForWord())));
 						goto l1;
 					}
@@ -27532,7 +27523,6 @@
 {   DECL_MAYBE_SQ_GLOBAL_STRUCT
     sqInt i;
     sqInt i1;
-    sqInt i2;
 
 	/* begin flushMethodCache */
 	for (i = 1; i <= MethodCacheSize; i += 1) {
@@ -27547,10 +27537,6 @@
 		GIV(atCache)[i1] = 0;
 	}
 	unlinkAllSends();
-	/* begin flushAtCache */
-	for (i2 = 1; i2 <= AtCacheTotalSize; i2 += 1) {
-		GIV(atCache)[i2] = 0;
-	}
 }
 
 
@@ -27568,7 +27554,6 @@
     sqInt i;
     sqInt i1;
     sqInt i2;
-    sqInt i3;
     sqInt methodHeader;
     sqInt oop;
     sqInt oop1;
@@ -27643,13 +27628,9 @@
 		GIV(atCache)[i1] = 0;
 	}
 	unlinkAllSends();
-	/* begin flushAtCache */
-	for (i2 = 1; i2 <= AtCacheTotalSize; i2 += 1) {
-		GIV(atCache)[i2] = 0;
-	}
 	/* begin flushExternalPrimitiveTable */
-	for (i3 = 0; i3 < MaxExternalPrimitiveTableSize; i3 += 1) {
-		externalPrimitiveTable[i3] = 0;
+	for (i2 = 0; i2 < MaxExternalPrimitiveTableSize; i2 += 1) {
+		externalPrimitiveTable[i2] = 0;
 	}
 	GIV(externalPrimitiveTableFirstFreeIndex) = 0;
 }
@@ -33688,7 +33669,6 @@
     sqInt i;
     sqInt i1;
     sqInt i2;
-    sqInt i3;
     sqInt methodHeader;
     sqInt moduleName;
     sqInt oop;
@@ -33794,13 +33774,9 @@
 		GIV(atCache)[i1] = 0;
 	}
 	unlinkAllSends();
-	/* begin flushAtCache */
-	for (i2 = 1; i2 <= AtCacheTotalSize; i2 += 1) {
-		GIV(atCache)[i2] = 0;
-	}
 	/* begin flushExternalPrimitiveTable */
-	for (i3 = 0; i3 < MaxExternalPrimitiveTableSize; i3 += 1) {
-		externalPrimitiveTable[i3] = 0;
+	for (i2 = 0; i2 < MaxExternalPrimitiveTableSize; i2 += 1) {
+		externalPrimitiveTable[i2] = 0;
 	}
 	GIV(externalPrimitiveTableFirstFreeIndex) = 0;
 	forceInterruptCheck();
@@ -37274,6 +37250,24 @@
 }
 
 
+/*	Answer the byte offset of the last pointer field of a
+	CompiledMethod with the given header. Use a temp to
+	allow inlining given MULTIPLEBYTECODESETS complications. */
+
+static sqInt
+lastPointerOfMethodHeader(sqInt methodHeader)
+{
+    sqInt numLiterals;
+
+	/* begin literalCountOfMethodHeader: */
+	assert((methodHeader & 1));
+	numLiterals = ((((sqInt) methodHeader)) < 0
+		? ((methodHeader >> 1)) & AlternateHeaderNumLiteralsMask
+		: (((usqInt) methodHeader) >> 10) & 0xFF);
+	return (((numLiterals + LiteralStart) - 1) * BytesPerOop) + BaseHeaderSize;
+}
+
+
 /*	Return the byte offset of the last pointer field of the given object. 
 	Can be used even when the type bits are not correct.
 	Works with CompiledMethods, as well as ordinary objects. */
@@ -52103,7 +52097,7 @@
 					/* begin getErrorObjectFromPrimFailCode */
 					if (GIV(primFailCode) > 0) {
 						table = longAt((GIV(specialObjectsOop) + BaseHeaderSize) + (PrimErrTableIndex << (shiftForWord())));
-						if (GIV(primFailCode) <= ((lastPointerOf(table)) / BytesPerWord)) {
+						if (GIV(primFailCode) <= (numSlotsOf(table))) {
 							errorCode = longAt((table + BaseHeaderSize) + ((GIV(primFailCode) - 1) << (shiftForWord())));
 							goto l1;
 						}

Modified: branches/Cog/nscogsrc/vm/cointerp.h
===================================================================
--- branches/Cog/nscogsrc/vm/cointerp.h	2015-02-10 23:19:26 UTC (rev 3249)
+++ branches/Cog/nscogsrc/vm/cointerp.h	2015-02-11 02:46:48 UTC (rev 3250)
@@ -1,5 +1,5 @@
 /* Automatically generated by
-	CCodeGeneratorGlobalStructure VMMaker.oscog-eem.1048 uuid: 8c759c0d-f612-4018-8a05-45ec7f6af78f
+	CCodeGeneratorGlobalStructure VMMaker.oscog-eem.1050 uuid: ad3a825c-97ba-4d01-a0e7-637af8cbf52b
  */
 
 

Modified: branches/Cog/nscogsrc/vm/gcc3x-cointerp.c
===================================================================
--- branches/Cog/nscogsrc/vm/gcc3x-cointerp.c	2015-02-10 23:19:26 UTC (rev 3249)
+++ branches/Cog/nscogsrc/vm/gcc3x-cointerp.c	2015-02-11 02:46:48 UTC (rev 3250)
@@ -2,11 +2,11 @@
 
 
 /* Automatically generated by
-	CCodeGeneratorGlobalStructure VMMaker.oscog-eem.1048 uuid: 8c759c0d-f612-4018-8a05-45ec7f6af78f
+	CCodeGeneratorGlobalStructure VMMaker.oscog-eem.1050 uuid: ad3a825c-97ba-4d01-a0e7-637af8cbf52b
    from
-	CoInterpreter VMMaker.oscog-eem.1048 uuid: 8c759c0d-f612-4018-8a05-45ec7f6af78f
+	CoInterpreter VMMaker.oscog-eem.1050 uuid: ad3a825c-97ba-4d01-a0e7-637af8cbf52b
  */
-static char __buildInfo[] = "CoInterpreter VMMaker.oscog-eem.1048 uuid: 8c759c0d-f612-4018-8a05-45ec7f6af78f " __DATE__ ;
+static char __buildInfo[] = "CoInterpreter VMMaker.oscog-eem.1050 uuid: ad3a825c-97ba-4d01-a0e7-637af8cbf52b " __DATE__ ;
 char *__interpBuildInfo = __buildInfo;
 
 
@@ -836,6 +836,7 @@
 static void initializeObjectMemory(sqInt bytesToShift) NoDbgRegParms;
 static sqInt isContextHeader(sqInt aHeader) NoDbgRegParms;
 sqInt isYoungObject(sqInt obj);
+static sqInt lastPointerOfMethodHeader(sqInt methodHeader) NoDbgRegParms;
 sqInt lastPointerOf(sqInt objOop);
 sqInt leakCheckBecome(void);
 sqInt leakCheckFullGC(void);
@@ -1458,8 +1459,8 @@
 _iss sqInt overflowLimit;
 _iss StackPage * overflowedPage;
 _iss sqInt the2ndUnknownShort;
-_iss sqInt atCache[AtCacheTotalSize + 1 /* 65 */];
 _iss long methodCache[MethodCacheSize + 1 /* 4097 */];
+_iss sqInt atCache[AtCacheTotalSize + 1 /* 65 */];
 _iss sqInt traceLog[TraceBufferSize /* 768 */];
 _iss sqInt remapBuffer[RemapBufferSize + 1 /* 26 */];
 _iss sqInt primTraceLog[256];
@@ -2099,7 +2100,7 @@
 	/* 575 */ (void (*)(void))0,
  0 };
 char expensiveAsserts = 0;
-const char *interpreterVersion = "Newspeak Virtual Machine CoInterpreterPrimitives_VMMaker.oscog-eem.1048";
+const char *interpreterVersion = "Newspeak Virtual Machine CoInterpreterPrimitives_VMMaker.oscog-eem.1050";
 sqInt minBackwardJumpCountForCompile = MinBackwardJumpCountForCompile /* 40 */;
 volatile int sendTrace;
 
@@ -5445,7 +5446,7 @@
 									/* begin getErrorObjectFromPrimFailCode */
 									if (GIV(primFailCode) > 0) {
 										table = longAt((GIV(specialObjectsOop) + BaseHeaderSize) + (PrimErrTableIndex << (shiftForWord())));
-										if (GIV(primFailCode) <= ((lastPointerOf(table)) / BytesPerWord)) {
+										if (GIV(primFailCode) <= (numSlotsOf(table))) {
 											errorCode = longAt((table + BaseHeaderSize) + ((GIV(primFailCode) - 1) << (shiftForWord())));
 											goto l304;
 										}
@@ -13266,7 +13267,7 @@
 				/* begin getErrorObjectFromPrimFailCode */
 				if (GIV(primFailCode) > 0) {
 					table = longAt((GIV(specialObjectsOop) + BaseHeaderSize) + (PrimErrTableIndex << (shiftForWord())));
-					if (GIV(primFailCode) <= ((lastPointerOf(table)) / BytesPerWord)) {
+					if (GIV(primFailCode) <= (numSlotsOf(table))) {
 						errorCode = longAt((table + BaseHeaderSize) + ((GIV(primFailCode) - 1) << (shiftForWord())));
 						goto l1;
 					}
@@ -13394,7 +13395,7 @@
 				/* begin getErrorObjectFromPrimFailCode */
 				if (GIV(primFailCode) > 0) {
 					table = longAt((GIV(specialObjectsOop) + BaseHeaderSize) + (PrimErrTableIndex << (shiftForWord())));
-					if (GIV(primFailCode) <= ((lastPointerOf(table)) / BytesPerWord)) {
+					if (GIV(primFailCode) <= (numSlotsOf(table))) {
 						errorCode = longAt((table + BaseHeaderSize) + ((GIV(primFailCode) - 1) << (shiftForWord())));
 						goto l1;
 					}
@@ -17087,7 +17088,7 @@
 		 && ((((((sqInt) header)) < 0
 			? header & AlternateHeaderHasPrimFlag
 			: header & V3PrimitiveBitsMask))
-		 && (theIP == (1 + (lastPointerOf(theMethod)))))) {
+		 && (theIP == (1 + (lastPointerOfMethodHeader(header)))))) {
 			theIP += ((((sqInt) header)) < 0
 				? 3
 				: 0);
@@ -18944,10 +18945,8 @@
     sqInt i1;
     sqInt i11;
     sqInt i2;
-    sqInt i21;
     sqInt i3;
     sqInt i4;
-    sqInt i5;
     sqInt iLimiT;
     sqInt lastHash;
     sqInt memEnd;
@@ -19191,22 +19190,22 @@
 	/* default */
 
 	GIV(thisClassIndex) = 5;
-	for (i5 = (InstanceSpecificationIndex + 1), iLimiT = (lengthOf(classArrayClass)); i5 <= iLimiT; i5 += 1) {
-		if ((longAt((classArrayClass + BaseHeaderSize) + ((i5 - 1) << (shiftForWord())))) == classArrayObj) {
-			GIV(thisClassIndex) = i5 - 1;
+	for (i4 = (InstanceSpecificationIndex + 1), iLimiT = (lengthOf(classArrayClass)); i4 <= iLimiT; i4 += 1) {
+		if ((longAt((classArrayClass + BaseHeaderSize) + ((i4 - 1) << (shiftForWord())))) == classArrayObj) {
+			GIV(thisClassIndex) = i4 - 1;
 		}
 	}
 
 	/* default */
 
 	GIV(classNameIndex) = 6;
-	for (i5 = (InstanceSpecificationIndex + 1), iLimiT = (lengthOf(classArrayObj)); i5 <= iLimiT; i5 += 1) {
-		oop = longAt((classArrayObj + BaseHeaderSize) + ((i5 - 1) << (shiftForWord())));
+	for (i4 = (InstanceSpecificationIndex + 1), iLimiT = (lengthOf(classArrayObj)); i4 <= iLimiT; i4 += 1) {
+		oop = longAt((classArrayObj + BaseHeaderSize) + ((i4 - 1) << (shiftForWord())));
 		if ((((oop & 1) == 0)
 		 && (((((usqInt) (longAt(oop))) >> (instFormatFieldLSB())) & 15) >= 8))
 		 && (((lengthOf(oop)) == 5)
 		 && ((strncmp("Array", firstFixedField(oop), 5)) == 0))) {
-			GIV(classNameIndex) = i5 - 1;
+			GIV(classNameIndex) = i4 - 1;
 		}
 	}
 	GIV(method) = (GIV(newMethod) = GIV(nilObj));
@@ -19225,31 +19224,23 @@
 		GIV(atCache)[i1] = 0;
 	}
 	unlinkAllSends();
-	/* begin flushAtCache */
-	for (i2 = 1; i2 <= AtCacheTotalSize; i2 += 1) {
-		GIV(atCache)[i2] = 0;
-	}
 	/* begin initialCleanup */
 	/* begin flushMethodCache */
-	for (i4 = 1; i4 <= MethodCacheSize; i4 += 1) {
-		GIV(methodCache)[i4] = 0;
+	for (i3 = 1; i3 <= MethodCacheSize; i3 += 1) {
+		GIV(methodCache)[i3] = 0;
 	}
 
 	/* this for primitiveExternalMethod */
 
 	GIV(lastMethodCacheProbeWrite) = 0;
 	/* begin flushAtCache */
-	for (i3 = 1; i3 <= AtCacheTotalSize; i3 += 1) {
-		GIV(atCache)[i3] = 0;
+	for (i2 = 1; i2 <= AtCacheTotalSize; i2 += 1) {
+		GIV(atCache)[i2] = 0;
 	}
 	unlinkAllSends();
-	/* begin flushAtCache */
-	for (i11 = 1; i11 <= AtCacheTotalSize; i11 += 1) {
-		GIV(atCache)[i11] = 0;
-	}
 	/* begin flushExternalPrimitiveTable */
-	for (i21 = 0; i21 < MaxExternalPrimitiveTableSize; i21 += 1) {
-		externalPrimitiveTable[i21] = 0;
+	for (i11 = 0; i11 < MaxExternalPrimitiveTableSize; i11 += 1) {
+		externalPrimitiveTable[i11] = 0;
 	}
 	GIV(externalPrimitiveTableFirstFreeIndex) = 0;
 	GIV(profileSemaphore) = (GIV(profileProcess) = (GIV(profileMethod) = GIV(nilObj)));
@@ -19732,7 +19723,7 @@
 				/* begin getErrorObjectFromPrimFailCode */
 				if (GIV(primFailCode) > 0) {
 					table = longAt((GIV(specialObjectsOop) + BaseHeaderSize) + (PrimErrTableIndex << (shiftForWord())));
-					if (GIV(primFailCode) <= ((lastPointerOf(table)) / BytesPerWord)) {
+					if (GIV(primFailCode) <= (numSlotsOf(table))) {
 						errorCode = longAt((table + BaseHeaderSize) + ((GIV(primFailCode) - 1) << (shiftForWord())));
 						goto l1;
 					}
@@ -19967,7 +19958,7 @@
 				/* begin getErrorObjectFromPrimFailCode */
 				if (GIV(primFailCode) > 0) {
 					table = longAt((GIV(specialObjectsOop) + BaseHeaderSize) + (PrimErrTableIndex << (shiftForWord())));
-					if (GIV(primFailCode) <= ((lastPointerOf(table)) / BytesPerWord)) {
+					if (GIV(primFailCode) <= (numSlotsOf(table))) {
 						errorCode = longAt((table + BaseHeaderSize) + ((GIV(primFailCode) - 1) << (shiftForWord())));
 						goto l1;
 					}
@@ -27541,7 +27532,6 @@
 {   DECL_MAYBE_SQ_GLOBAL_STRUCT
     sqInt i;
     sqInt i1;
-    sqInt i2;
 
 	/* begin flushMethodCache */
 	for (i = 1; i <= MethodCacheSize; i += 1) {
@@ -27556,10 +27546,6 @@
 		GIV(atCache)[i1] = 0;
 	}
 	unlinkAllSends();
-	/* begin flushAtCache */
-	for (i2 = 1; i2 <= AtCacheTotalSize; i2 += 1) {
-		GIV(atCache)[i2] = 0;
-	}
 }
 
 
@@ -27577,7 +27563,6 @@
     sqInt i;
     sqInt i1;
     sqInt i2;
-    sqInt i3;
     sqInt methodHeader;
     sqInt oop;
     sqInt oop1;
@@ -27652,13 +27637,9 @@
 		GIV(atCache)[i1] = 0;
 	}
 	unlinkAllSends();
-	/* begin flushAtCache */
-	for (i2 = 1; i2 <= AtCacheTotalSize; i2 += 1) {
-		GIV(atCache)[i2] = 0;
-	}
 	/* begin flushExternalPrimitiveTable */
-	for (i3 = 0; i3 < MaxExternalPrimitiveTableSize; i3 += 1) {
-		externalPrimitiveTable[i3] = 0;
+	for (i2 = 0; i2 < MaxExternalPrimitiveTableSize; i2 += 1) {
+		externalPrimitiveTable[i2] = 0;
 	}
 	GIV(externalPrimitiveTableFirstFreeIndex) = 0;
 }
@@ -33697,7 +33678,6 @@
     sqInt i;
     sqInt i1;
     sqInt i2;
-    sqInt i3;
     sqInt methodHeader;
     sqInt moduleName;
     sqInt oop;
@@ -33803,13 +33783,9 @@
 		GIV(atCache)[i1] = 0;
 	}
 	unlinkAllSends();
-	/* begin flushAtCache */
-	for (i2 = 1; i2 <= AtCacheTotalSize; i2 += 1) {
-		GIV(atCache)[i2] = 0;
-	}
 	/* begin flushExternalPrimitiveTable */
-	for (i3 = 0; i3 < MaxExternalPrimitiveTableSize; i3 += 1) {
-		externalPrimitiveTable[i3] = 0;
+	for (i2 = 0; i2 < MaxExternalPrimitiveTableSize; i2 += 1) {
+		externalPrimitiveTable[i2] = 0;
 	}
 	GIV(externalPrimitiveTableFirstFreeIndex) = 0;
 	forceInterruptCheck();
@@ -37283,6 +37259,24 @@
 }
 
 
+/*	Answer the byte offset of the last pointer field of a
+	CompiledMethod with the given header. Use a temp to
+	allow inlining given MULTIPLEBYTECODESETS complications. */
+
+static sqInt
+lastPointerOfMethodHeader(sqInt methodHeader)
+{
+    sqInt numLiterals;
+
+	/* begin literalCountOfMethodHeader: */
+	assert((methodHeader & 1));
+	numLiterals = ((((sqInt) methodHeader)) < 0
+		? ((methodHeader >> 1)) & AlternateHeaderNumLiteralsMask
+		: (((usqInt) methodHeader) >> 10) & 0xFF);
+	return (((numLiterals + LiteralStart) - 1) * BytesPerOop) + BaseHeaderSize;
+}
+
+
 /*	Return the byte offset of the last pointer field of the given object. 
 	Can be used even when the type bits are not correct.
 	Works with CompiledMethods, as well as ordinary objects. */
@@ -52112,7 +52106,7 @@
 					/* begin getErrorObjectFromPrimFailCode */
 					if (GIV(primFailCode) > 0) {
 						table = longAt((GIV(specialObjectsOop) + BaseHeaderSize) + (PrimErrTableIndex << (shiftForWord())));
-						if (GIV(primFailCode) <= ((lastPointerOf(table)) / BytesPerWord)) {
+						if (GIV(primFailCode) <= (numSlotsOf(table))) {
 							errorCode = longAt((table + BaseHeaderSize) + ((GIV(primFailCode) - 1) << (shiftForWord())));
 							goto l1;
 						}

Modified: branches/Cog/nsspursrc/vm/cointerp.c
===================================================================
--- branches/Cog/nsspursrc/vm/cointerp.c	2015-02-10 23:19:26 UTC (rev 3249)
+++ branches/Cog/nsspursrc/vm/cointerp.c	2015-02-11 02:46:48 UTC (rev 3250)
@@ -1,9 +1,9 @@
 /* Automatically generated by
-	CCodeGeneratorGlobalStructure VMMaker.oscog-eem.1048 uuid: 8c759c0d-f612-4018-8a05-45ec7f6af78f
+	CCodeGeneratorGlobalStructure VMMaker.oscog-eem.1050 uuid: ad3a825c-97ba-4d01-a0e7-637af8cbf52b
    from
-	CoInterpreter VMMaker.oscog-eem.1048 uuid: 8c759c0d-f612-4018-8a05-45ec7f6af78f
+	CoInterpreter VMMaker.oscog-eem.1050 uuid: ad3a825c-97ba-4d01-a0e7-637af8cbf52b
  */
-static char __buildInfo[] = "CoInterpreter VMMaker.oscog-eem.1048 uuid: 8c759c0d-f612-4018-8a05-45ec7f6af78f " __DATE__ ;
+static char __buildInfo[] = "CoInterpreter VMMaker.oscog-eem.1050 uuid: ad3a825c-97ba-4d01-a0e7-637af8cbf52b " __DATE__ ;
 char *__interpBuildInfo = __buildInfo;
 
 
@@ -2354,7 +2354,7 @@
 /*560*/	-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1, 0, 0, 0,-1,-1
 	};
 char expensiveAsserts = 0;
-const char *interpreterVersion = "Newspeak Virtual Machine CoInterpreterPrimitives_VMMaker.oscog-eem.1048";
+const char *interpreterVersion = "Newspeak Virtual Machine CoInterpreterPrimitives_VMMaker.oscog-eem.1050";
 sqInt minBackwardJumpCountForCompile = MinBackwardJumpCountForCompile /* 40 */;
 volatile int sendTrace;
 
@@ -6318,7 +6318,7 @@
 									/* begin getErrorObjectFromPrimFailCode */
 									if (GIV(primFailCode) > 0) {
 										table = longAt((GIV(specialObjectsOop) + BaseHeaderSize) + (PrimErrTableIndex << (shiftForWord())));
-										if (GIV(primFailCode) <= ((lastPointerOf(table)) / BytesPerWord)) {
+										if (GIV(primFailCode) <= (numSlotsOf(table))) {
 											errorCode = longAt((table + BaseHeaderSize) + ((GIV(primFailCode) - 1) << (shiftForWord())));
 											goto l234;
 										}
@@ -14144,7 +14144,7 @@
 				/* begin getErrorObjectFromPrimFailCode */
 				if (GIV(primFailCode) > 0) {
 					table = longAt((GIV(specialObjectsOop) + BaseHeaderSize) + (PrimErrTableIndex << (shiftForWord())));
-					if (GIV(primFailCode) <= ((lastPointerOf(table)) / BytesPerWord)) {
+					if (GIV(primFailCode) <= (numSlotsOf(table))) {
 						errorCode = longAt((table + BaseHeaderSize) + ((GIV(primFailCode) - 1) << (shiftForWord())));
 						goto l1;
 					}
@@ -14268,7 +14268,7 @@
 				/* begin getErrorObjectFromPrimFailCode */
 				if (GIV(primFailCode) > 0) {
 					table = longAt((GIV(specialObjectsOop) + BaseHeaderSize) + (PrimErrTableIndex << (shiftForWord())));
-					if (GIV(primFailCode) <= ((lastPointerOf(table)) / BytesPerWord)) {
+					if (GIV(primFailCode) <= (numSlotsOf(table))) {
 						errorCode = longAt((table + BaseHeaderSize) + ((GIV(primFailCode) - 1) << (shiftForWord())));
 						goto l1;
 					}
@@ -18293,7 +18293,7 @@
 		numArgs = (((usqInt) header) >> MethodHeaderArgCountShift) & 15;
 		if (((((sqInt) theIP)) > 0)
 		 && ((header & AlternateHeaderHasPrimFlag)
-		 && (theIP == (1 + (lastPointerOf(theMethod)))))) {
+		 && (theIP == (1 + (((((literalCountOfMethodHeader(header)) + LiteralStart) - 1) * BytesPerOop) + BaseHeaderSize))))) {
 			theIP += 3;
 		}
 		longAtput((pointer -= BytesPerWord), rcvr);
@@ -22642,10 +22642,8 @@
     sqInt i1;
     sqInt i11;
     sqInt i2;
-    sqInt i21;
     sqInt i3;
     sqInt i4;
-    sqInt i5;
     sqInt iLimiT;
     usqInt limit;
     sqInt memEnd;
@@ -22925,22 +22923,22 @@
 	/* default */
 
 	GIV(thisClassIndex) = 5;
-	for (i5 = (InstanceSpecificationIndex + 1), iLimiT = (lengthOfformat(classArrayClass, (((usqInt) (longAt(classArrayClass))) >> 24) & 0x1F)); i5 <= iLimiT; i5 += 1) {
-		if ((longAt((classArrayClass + BaseHeaderSize) + ((i5 - 1) << (shiftForWord())))) == classArrayObj) {
-			GIV(thisClassIndex) = i5 - 1;
+	for (i4 = (InstanceSpecificationIndex + 1), iLimiT = (lengthOfformat(classArrayClass, (((usqInt) (longAt(classArrayClass))) >> 24) & 0x1F)); i4 <= iLimiT; i4 += 1) {
+		if ((longAt((classArrayClass + BaseHeaderSize) + ((i4 - 1) << (shiftForWord())))) == classArrayObj) {
+			GIV(thisClassIndex) = i4 - 1;
 		}
 	}
 
 	/* default */
 
 	GIV(classNameIndex) = 6;
-	for (i5 = (InstanceSpecificationIndex + 1), iLimiT = (lengthOfformat(classArrayObj, (((usqInt) (longAt(classArrayObj))) >> 24) & 0x1F)); i5 <= iLimiT; i5 += 1) {
-		oop = longAt((classArrayObj + BaseHeaderSize) + ((i5 - 1) << (shiftForWord())));
+	for (i4 = (InstanceSpecificationIndex + 1), iLimiT = (lengthOfformat(classArrayObj, (((usqInt) (longAt(classArrayObj))) >> 24) & 0x1F)); i4 <= iLimiT; i4 += 1) {
+		oop = longAt((classArrayObj + BaseHeaderSize) + ((i4 - 1) << (shiftForWord())));
 		if ((((oop & 3) == 0)
 		 && (((((usqInt) (longAt(oop))) >> 24) & 0x1F) >= 16))
 		 && (((lengthOfformat(oop, (((usqInt) (longAt(oop))) >> 24) & 0x1F)) == 5)
 		 && ((strncmp("Array", firstFixedField(oop), 5)) == 0))) {
-			GIV(classNameIndex) = i5 - 1;
+			GIV(classNameIndex) = i4 - 1;
 		}
 	}
 	GIV(method) = (GIV(newMethod) = GIV(nilObj));
@@ -22959,31 +22957,23 @@
 		GIV(atCache)[i1] = 0;
 	}
 	unlinkAllSends();
-	/* begin flushAtCache */
-	for (i2 = 1; i2 <= AtCacheTotalSize; i2 += 1) {
-		GIV(atCache)[i2] = 0;
-	}
 	/* begin initialCleanup */
 	/* begin flushMethodCache */
-	for (i4 = 1; i4 <= MethodCacheSize; i4 += 1) {
-		GIV(methodCache)[i4] = 0;
+	for (i3 = 1; i3 <= MethodCacheSize; i3 += 1) {
+		GIV(methodCache)[i3] = 0;
 	}
 
 	/* this for primitiveExternalMethod */
 
 	GIV(lastMethodCacheProbeWrite) = 0;
 	/* begin flushAtCache */
-	for (i3 = 1; i3 <= AtCacheTotalSize; i3 += 1) {
-		GIV(atCache)[i3] = 0;
+	for (i2 = 1; i2 <= AtCacheTotalSize; i2 += 1) {
+		GIV(atCache)[i2] = 0;
 	}
 	unlinkAllSends();
-	/* begin flushAtCache */
-	for (i11 = 1; i11 <= AtCacheTotalSize; i11 += 1) {
-		GIV(atCache)[i11] = 0;
-	}
 	/* begin flushExternalPrimitiveTable */
-	for (i21 = 0; i21 < MaxExternalPrimitiveTableSize; i21 += 1) {
-		externalPrimitiveTable[i21] = 0;
+	for (i11 = 0; i11 < MaxExternalPrimitiveTableSize; i11 += 1) {
+		externalPrimitiveTable[i11] = 0;
 	}
 	GIV(externalPrimitiveTableFirstFreeIndex) = 0;
 	GIV(profileSemaphore) = (GIV(profileProcess) = (GIV(profileMethod) = GIV(nilObj)));
@@ -23464,7 +23454,7 @@
 				/* begin getErrorObjectFromPrimFailCode */
 				if (GIV(primFailCode) > 0) {
 					table = longAt((GIV(specialObjectsOop) + BaseHeaderSize) + (PrimErrTableIndex << (shiftForWord())));
-					if (GIV(primFailCode) <= ((lastPointerOf(table)) / BytesPerWord)) {
+					if (GIV(primFailCode) <= (numSlotsOf(table))) {
 						errorCode = longAt((table + BaseHeaderSize) + ((GIV(primFailCode) - 1) << (shiftForWord())));
 						goto l1;
 					}
@@ -23689,7 +23679,7 @@
 				/* begin getErrorObjectFromPrimFailCode */
 				if (GIV(primFailCode) > 0) {
 					table = longAt((GIV(specialObjectsOop) + BaseHeaderSize) + (PrimErrTableIndex << (shiftForWord())));
-					if (GIV(primFailCode) <= ((lastPointerOf(table)) / BytesPerWord)) {
+					if (GIV(primFailCode) <= (numSlotsOf(table))) {
 						errorCode = longAt((table + BaseHeaderSize) + ((GIV(primFailCode) - 1) << (shiftForWord())));
 						goto l1;
 					}
@@ -31525,7 +31515,6 @@
 {   DECL_MAYBE_SQ_GLOBAL_STRUCT
     sqInt i;
     sqInt i1;
-    sqInt i2;
 
 	/* begin flushMethodCache */
 	for (i = 1; i <= MethodCacheSize; i += 1) {
@@ -31540,10 +31529,6 @@
 		GIV(atCache)[i1] = 0;
 	}
 	unlinkAllSends();
-	/* begin flushAtCache */
-	for (i2 = 1; i2 <= AtCacheTotalSize; i2 += 1) {
-		GIV(atCache)[i2] = 0;
-	}
 }
 
 
@@ -31561,7 +31546,6 @@
     sqInt i;
     sqInt i1;
     sqInt i2;
-    sqInt i3;
     sqInt limit;
     sqInt methodHeader;
     usqInt numSlots;
@@ -31730,13 +31714,9 @@
 		GIV(atCache)[i1] = 0;
 	}
 	unlinkAllSends();
-	/* begin flushAtCache */
-	for (i2 = 1; i2 <= AtCacheTotalSize; i2 += 1) {
-		GIV(atCache)[i2] = 0;
-	}
 	/* begin flushExternalPrimitiveTable */
-	for (i3 = 0; i3 < MaxExternalPrimitiveTableSize; i3 += 1) {
-		externalPrimitiveTable[i3] = 0;
+	for (i2 = 0; i2 < MaxExternalPrimitiveTableSize; i2 += 1) {
+		externalPrimitiveTable[i2] = 0;
 	}
 	GIV(externalPrimitiveTableFirstFreeIndex) = 0;
 }
@@ -38236,7 +38216,6 @@
     sqInt i;
     sqInt i1;
     sqInt i2;
-    sqInt i3;
     sqInt limit;
     sqInt methodHeader;
     sqInt moduleName;
@@ -38436,13 +38415,9 @@
 		GIV(atCache)[i1] = 0;
 	}
 	unlinkAllSends();
-	/* begin flushAtCache */
-	for (i2 = 1; i2 <= AtCacheTotalSize; i2 += 1) {
-		GIV(atCache)[i2] = 0;
-	}
 	/* begin flushExternalPrimitiveTable */
-	for (i3 = 0; i3 < MaxExternalPrimitiveTableSize; i3 += 1) {
-		externalPrimitiveTable[i3] = 0;
+	for (i2 = 0; i2 < MaxExternalPrimitiveTableSize; i2 += 1) {
+		externalPrimitiveTable[i2] = 0;
 	}
 	GIV(externalPrimitiveTableFirstFreeIndex) = 0;
 	forceInterruptCheck();
@@ -43023,7 +42998,6 @@
     sqInt clone1;
     sqInt clone2;
     sqInt contextSize;
-    sqInt contextSize1;
     sqInt ec;
     sqInt effectsFlags;
     sqInt effectsFlags1;
@@ -43031,7 +43005,6 @@
     sqInt fieldOffset1;
     sqInt fmt;
     sqInt fmt1;
-    sqInt fmt2;
     sqInt hash;
     sqInt hash1;
     sqInt hash2;
@@ -43040,8 +43013,6 @@
     sqInt hash5;
     sqInt header;
     sqInt header1;
-    sqInt header11;
-    sqInt header2;
     sqLong headerTemp;
     sqInt i;
     sqInt i1;
@@ -43081,7 +43052,6 @@
     sqInt referent5;
     sqInt size;
     sqInt sp;
-    sqInt sp1;
     sqInt temp1;
     sqInt temp2;
 
@@ -43112,20 +43082,20 @@
 				sp = longAt((array1 + BaseHeaderSize) + (StackPointerIndex << (shiftForWord())));
 				if (!((sp & 1))) {
 					contextSize = 0;
-					goto l3;
+					goto l2;
 				}
 				assert((ReceiverIndex + ((sp >> 1))) < (lengthOf(array1)));
 				contextSize = (sp >> 1);
-			l3:	/* end fetchStackPointerOf: */;
+			l2:	/* end fetchStackPointerOf: */;
 				fieldOffset = (((CtxtTempFrameStart - 1) + contextSize) * BytesPerOop) + BaseHeaderSize;
-				goto l4;
+				goto l3;
 			}
 			fieldOffset = (((numSlotsOf(array1)) - 1) * BytesPerOop) + BaseHeaderSize;
-			goto l4;
+			goto l3;
 		}
 		if (fmt < 24) {
 			fieldOffset = 0;
-			goto l4;
+			goto l3;
 		}
 		/* begin methodHeaderOf: */
 		assert(isCompiledMethod(array1));
@@ -43136,7 +43106,7 @@
 				assert((((((CogMethod *) header1))->objectHeader)) == (nullHeaderForMachineCodeMethod())),
 				((((CogMethod *) header1))->methodHeader)));
 		fieldOffset = ((((literalCountOfMethodHeader(header)) + LiteralStart) - 1) * BytesPerOop) + BaseHeaderSize;
-	l4:	/* end lastPointerOf: */;
+	l3:	/* end lastPointerOf: */;
 
 		/* same size as array2 */
 
@@ -43190,56 +43160,21 @@
 			size += bytesInObject(oop);
 			fieldOffset -= BytesPerOop;
 		}
-		GIV(becomeEffectsFlags) = effectsFlags;
 		if (size >= (GIV(totalFreeOldSpace) + (GIV(scavengeThreshold) - GIV(freeStart)))) {
 			ec = PrimErrNoMemory;
 			goto l1;
 		}
+		GIV(becomeEffectsFlags) = effectsFlags;
 		ec = 0;
 	l1:	/* end containsOnlyValidBecomeObjects:and: */;
 	}
 	else {
 		followForwardedObjectFieldstoDepth(array2, 0);
 		/* begin containsOnlyValidBecomeObjects: */
-		/* begin lastPointerOf: */
-		fmt1 = (((usqInt) (longAt(array1))) >> 24) & 0x1F;
-		assert(fmt1 != (forwardedFormat()));
-		if (fmt1 <= 5) {
-			if ((fmt1 == 3)
-			 && (((longAt(array1)) & 0x3FFFFF) == ClassMethodContextCompactIndex)) {
+		/* begin lastPointerOfArray: */
+		assert(isArray(array1));
+		fieldOffset1 = (((numSlotsOf(array1)) - 1) * BytesPerOop) + BaseHeaderSize;
 
-				/* contexts end at the stack pointer */
-
-				/* begin fetchStackPointerOf: */
-				sp1 = longAt((array1 + BaseHeaderSize) + (StackPointerIndex << (shiftForWord())));
-				if (!((sp1 & 1))) {
-					contextSize1 = 0;
-					goto l5;
-				}
-				assert((ReceiverIndex + ((sp1 >> 1))) < (lengthOf(array1)));
-				contextSize1 = (sp1 >> 1);
-			l5:	/* end fetchStackPointerOf: */;
-				fieldOffset1 = (((CtxtTempFrameStart - 1) + contextSize1) * BytesPerOop) + BaseHeaderSize;
-				goto l6;
-			}
-			fieldOffset1 = (((numSlotsOf(array1)) - 1) * BytesPerOop) + BaseHeaderSize;
-			goto l6;
-		}
-		if (fmt1 < 24) {
-			fieldOffset1 = 0;
-			goto l6;
-		}
-		/* begin methodHeaderOf: */
-		assert(isCompiledMethod(array1));
-		header11 = longAt((array1 + BaseHeaderSize) + (HeaderIndex << (shiftForWord())));
-		header2 = ((header11 & 1)
-			? header11
-			: (assert((((usqInt)header11)) < GIV(newSpaceStart)),
-				assert((((((CogMethod *) header11))->objectHeader)) == (nullHeaderForMachineCodeMethod())),
-				((((CogMethod *) header11))->methodHeader)));
-		fieldOffset1 = ((((literalCountOfMethodHeader(header2)) + LiteralStart) - 1) * BytesPerOop) + BaseHeaderSize;
-	l6:	/* end lastPointerOf: */;
-
 		/* same size as array2 */
 
 		effectsFlags1 = 0;
@@ -43249,28 +43184,28 @@
 			 && (((longAt(oop1)) & 0x3FFFFF) == 8)) {
 				/* begin followForwarded: */
 				assert(isUnambiguouslyForwarder(oop1));
-				referent2 = longAt((oop1 + BaseHeaderSize) + (0 << (shiftForWord())));
-				while (((referent2 & 3) == 0)
-				 && (((longAt(referent2)) & 0x3FFFFF) == 8)) {
-					referent2 = longAt((referent2 + BaseHeaderSize) + (0 << (shiftForWord())));
+				referent3 = longAt((oop1 + BaseHeaderSize) + (0 << (shiftForWord())));
+				while (((referent3 & 3) == 0)
+				 && (((longAt(referent3)) & 0x3FFFFF) == 8)) {
+					referent3 = longAt((referent3 + BaseHeaderSize) + (0 << (shiftForWord())));
 				}
-				oop1 = referent2;
+				oop1 = referent3;
 				longAtput(array1 + fieldOffset1, oop1);
 			}
 			if ((oop1 & 3) != 0) {
 				ec = PrimErrInappropriate;
-				goto l2;
+				goto l4;
 			}
 			if (((((usqInt) (longAt(oop1))) >> 30) & 1) != 0) {
 				ec = PrimErrObjectIsPinned;
-				goto l2;
+				goto l4;
 			}
 			effectsFlags1 = effectsFlags1 | (becomeEffectFlagsFor(oop1));
 			fieldOffset1 -= BytesPerOop;
 		}
 		GIV(becomeEffectsFlags) = effectsFlags1;
 		ec = 0;
-	l2:	/* end containsOnlyValidBecomeObjects: */;
+	l4:	/* end containsOnlyValidBecomeObjects: */;
 	}
 	if (ec != 0) {
 		GIV(becomeEffectsFlags) = 0;
@@ -43384,10 +43319,10 @@
 						}
 					}
 					if (isOldObject(obj1)) {
-						fmt2 = (((usqInt) (longAt(obj1))) >> 24) & 0x1F;
+						fmt1 = (((usqInt) (longAt(obj1))) >> 24) & 0x1F;
 						if (o1HasYoung
-						 && (!((fmt2 >= 9)
- && (fmt2 < 24)))) {
+						 && (!((fmt1 >= 9)
+ && (fmt1 < 24)))) {
 							/* begin possibleRootStoreInto: */
 							if (!(((((usqInt) (longAt(obj1))) >> 29) & 1) != 0)) {
 								remember(obj1);
@@ -43395,17 +43330,17 @@
 						}
 					}
 					if (isOldObject(obj2)) {
-						fmt2 = (((usqInt) (longAt(obj2))) >> 24) & 0x1F;
+						fmt1 = (((usqInt) (longAt(obj2))) >> 24) & 0x1F;
 						if (o2HasYoung
-						 && (!((fmt2 >= 9)
- && (fmt2 < 24)))) {
+						 && (!((fmt1 >= 9)
+ && (fmt1 < 24)))) {
 							/* begin possibleRootStoreInto: */
 							if (!(((((usqInt) (longAt(obj2))) >> 29) & 1) != 0)) {
 								remember(obj2);
 							}
 						}
 					}
-					goto l8;
+					goto l6;
 				}
 				/* begin outOfPlaceBecome:and:copyHashFlag: */
 				clone1 = (((longAt(obj1)) & 0x3FFFFF) == ClassMethodContextCompactIndex
@@ -43493,7 +43428,7 @@
 					GIV(becomeEffectsFlags) = GIV(becomeEffectsFlags) | OldBecameNewFlag;
 				}
 				if (copyHashFlag) {
-					goto l8;
+					goto l6;
 				}
 				if (o1ClassIndex != 0) {
 					if (o2ClassIndex != 0) {
@@ -43539,7 +43474,7 @@
 						long32Atput(newObj1 + 4, ((((long32At(newObj1 + 4)) | 0x3FFFFF) - 0x3FFFFF)) + o2ClassIndex);
 					}
 				}
-			l8:	/* end doBecome:and:copyHash: */;
+			l6:	/* end doBecome:and:copyHash: */;
 				/* begin followField:ofObject: */
 				objOop = longAt((array1 + BaseHeaderSize) + (i << (shiftForWord())));
 				if (((objOop & 3) == 0)
@@ -43635,12 +43570,12 @@
 	if (((longAt(GIV(specialObjectsOop))) & (0x3FFFFF - 8)) == 0) {
 		/* begin followForwarded: */
 		assert(isUnambiguouslyForwarder(GIV(specialObjectsOop)));
-		referent3 = longAt((GIV(specialObjectsOop) + BaseHeaderSize) + (0 << (shiftForWord())));
-		while (((referent3 & 3) == 0)
-		 && (((longAt(referent3)) & 0x3FFFFF) == 8)) {
-			referent3 = longAt((referent3 + BaseHeaderSize) + (0 << (shiftForWord())));
+		referent2 = longAt((GIV(specialObjectsOop) + BaseHeaderSize) + (0 << (shiftForWord())));
+		while (((referent2 & 3) == 0)
+		 && (((longAt(referent2)) & 0x3FFFFF) == 8)) {
+			referent2 = longAt((referent2 + BaseHeaderSize) + (0 << (shiftForWord())));
 		}
-		GIV(specialObjectsOop) = referent3;
+		GIV(specialObjectsOop) = referent2;
 	}
 	followForwardedObjectFieldstoDepth(GIV(specialObjectsOop), 0);
 	/* begin postBecomeAction: */
@@ -43655,7 +43590,7 @@
 	/* begin postBecomeScanClassTable: */
 	assert(validClassTableRootPages());
 	if (!(GIV(becomeEffectsFlags) & BecamePointerObjectFlag)) {
-		goto l7;
+		goto l5;
 	}
 	for (i2 = 0; i2 < GIV(numClassTablePages); i2 += 1) {
 		page = longAt((GIV(hiddenRootsObj) + BaseHeaderSize) + (i2 << (shiftForWord())));
@@ -43700,7 +43635,7 @@
 		}
 	}
 	assert(GIV(classTableIndex) >= (1 << (classTableMajorIndexShift())));
-l7:	/* end postBecomeScanClassTable: */;
+l5:	/* end postBecomeScanClassTable: */;
 	GIV(becomeEffectsFlags) = 0;
 	assert(validClassTableHashes());
 	runLeakCheckerFor(GCModeBecome);
@@ -70811,7 +70746,7 @@
 					/* begin getErrorObjectFromPrimFailCode */
 					if (GIV(primFailCode) > 0) {
 						table = longAt((GIV(specialObjectsOop) + BaseHeaderSize) + (PrimErrTableIndex << (shiftForWord())));
-						if (GIV(primFailCode) <= ((lastPointerOf(table)) / BytesPerWord)) {
+						if (GIV(primFailCode) <= (numSlotsOf(table))) {
 							errorCode = longAt((table + BaseHeaderSize) + ((GIV(primFailCode) - 1) << (shiftForWord())));
 							goto l1;
 						}
@@ -70872,6 +70807,7 @@
     sqInt first;
     sqInt i;
     sqInt i1;
+    sqInt i11;
     sqInt i2;
     sqInt i3;
     sqInt i4;
@@ -70910,13 +70846,17 @@
     sqInt xArray;
 
 	followForwardingPointersInStackZone(theBecomeEffectsFlags);
+	/* begin flushAtCache */
+	for (i = 1; i <= AtCacheTotalSize; i += 1) {
+		GIV(atCache)[i] = 0;
+	}
 	if (theBecomeEffectsFlags != 0) {
 		if (theBecomeEffectsFlags & BecameCompiledMethodFlag) {
 			/* begin followForwardedMethodsInMethodCache */
-			for (i = 0; i < MethodCacheSize; i += MethodCacheEntrySize) {
-				c = GIV(methodCache)[i + MethodCacheClass];
-				s = GIV(methodCache)[i + MethodCacheSelector];
-				m = GIV(methodCache)[i + MethodCacheMethod];
+			for (i1 = 0; i1 < MethodCacheSize; i1 += MethodCacheEntrySize) {
+				c = GIV(methodCache)[i1 + MethodCacheClass];
+				s = GIV(methodCache)[i1 + MethodCacheSelector];
+				m = GIV(methodCache)[i1 + MethodCacheMethod];
 				if ((c != 0)
 				 && ((s != 0)
 				 && ((m != 0)
@@ -70930,7 +70870,7 @@
 						referent = longAt((referent + BaseHeaderSize) + (0 << (shiftForWord())));
 					}
 					m = referent;
-					GIV(methodCache)[i + MethodCacheMethod] = m;
+					GIV(methodCache)[i1 + MethodCacheMethod] = m;
 				}
 			}
 			/* begin followForwardedMethodsInMethodZone */
@@ -70949,8 +70889,8 @@
 				}
 			}
 			/* begin flushAtCache */
-			for (i1 = 1; i1 <= AtCacheTotalSize; i1 += 1) {
-				GIV(atCache)[i1] = 0;
+			for (i11 = 1; i11 <= AtCacheTotalSize; i11 += 1) {
+				GIV(atCache)[i11] = 0;
 			}
 			/* begin flushBecommedClassesInMethodZone */
 			unlinkSendsToForwardedClasses();

Modified: branches/Cog/nsspursrc/vm/cointerp.h
===================================================================
--- branches/Cog/nsspursrc/vm/cointerp.h	2015-02-10 23:19:26 UTC (rev 3249)
+++ branches/Cog/nsspursrc/vm/cointerp.h	2015-02-11 02:46:48 UTC (rev 3250)
@@ -1,5 +1,5 @@
 /* Automatically generated by
-	CCodeGeneratorGlobalStructure VMMaker.oscog-eem.1048 uuid: 8c759c0d-f612-4018-8a05-45ec7f6af78f
+	CCodeGeneratorGlobalStructure VMMaker.oscog-eem.1050 uuid: ad3a825c-97ba-4d01-a0e7-637af8cbf52b
  */
 
 

Modified: branches/Cog/nsspursrc/vm/gcc3x-cointerp.c
===================================================================
--- branches/Cog/nsspursrc/vm/gcc3x-cointerp.c	2015-02-10 23:19:26 UTC (rev 3249)
+++ branches/Cog/nsspursrc/vm/gcc3x-cointerp.c	2015-02-11 02:46:48 UTC (rev 3250)
@@ -2,11 +2,11 @@
 
 
 /* Automatically generated by
-	CCodeGeneratorGlobalStructure VMMaker.oscog-eem.1048 uuid: 8c759c0d-f612-4018-8a05-45ec7f6af78f
+	CCodeGeneratorGlobalStructure VMMaker.oscog-eem.1050 uuid: ad3a825c-97ba-4d01-a0e7-637af8cbf52b
    from
-	CoInterpreter VMMaker.oscog-eem.1048 uuid: 8c759c0d-f612-4018-8a05-45ec7f6af78f
+	CoInterpreter VMMaker.oscog-eem.1050 uuid: ad3a825c-97ba-4d01-a0e7-637af8cbf52b
  */
-static char __buildInfo[] = "CoInterpreter VMMaker.oscog-eem.1048 uuid: 8c759c0d-f612-4018-8a05-45ec7f6af78f " __DATE__ ;
+static char __buildInfo[] = "CoInterpreter VMMaker.oscog-eem.1050 uuid: ad3a825c-97ba-4d01-a0e7-637af8cbf52b " __DATE__ ;
 char *__interpBuildInfo = __buildInfo;
 
 
@@ -2357,7 +2357,7 @@
 /*560*/	-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1, 0, 0, 0,-1,-1
 	};
 char expensiveAsserts = 0;
-const char *interpreterVersion = "Newspeak Virtual Machine CoInterpreterPrimitives_VMMaker.oscog-eem.1048";
+const char *interpreterVersion = "Newspeak Virtual Machine CoInterpreterPrimitives_VMMaker.oscog-eem.1050";
 sqInt minBackwardJumpCountForCompile = MinBackwardJumpCountForCompile /* 40 */;
 volatile int sendTrace;
 
@@ -6327,7 +6327,7 @@
 									/* begin getErrorObjectFromPrimFailCode */
 									if (GIV(primFailCode) > 0) {
 										table = longAt((GIV(specialObjectsOop) + BaseHeaderSize) + (PrimErrTableIndex << (shiftForWord())));
-										if (GIV(primFailCode) <= ((lastPointerOf(table)) / BytesPerWord)) {
+										if (GIV(primFailCode) <= (numSlotsOf(table))) {
 											errorCode = longAt((table + BaseHeaderSize) + ((GIV(primFailCode) - 1) << (shiftForWord())));
 											goto l234;
 										}
@@ -14153,7 +14153,7 @@
 				/* begin getErrorObjectFromPrimFailCode */
 				if (GIV(primFailCode) > 0) {
 					table = longAt((GIV(specialObjectsOop) + BaseHeaderSize) + (PrimErrTableIndex << (shiftForWord())));
-					if (GIV(primFailCode) <= ((lastPointerOf(table)) / BytesPerWord)) {
+					if (GIV(primFailCode) <= (numSlotsOf(table))) {
 						errorCode = longAt((table + BaseHeaderSize) + ((GIV(primFailCode) - 1) << (shiftForWord())));
 						goto l1;
 					}
@@ -14277,7 +14277,7 @@
 				/* begin getErrorObjectFromPrimFailCode */
 				if (GIV(primFailCode) > 0) {
 					table = longAt((GIV(specialObjectsOop) + BaseHeaderSize) + (PrimErrTableIndex << (shiftForWord())));
-					if (GIV(primFailCode) <= ((lastPointerOf(table)) / BytesPerWord)) {
+					if (GIV(primFailCode) <= (numSlotsOf(table))) {
 						errorCode = longAt((table + BaseHeaderSize) + ((GIV(primFailCode) - 1) << (shiftForWord())));
 						goto l1;
 					}
@@ -18302,7 +18302,7 @@
 		numArgs = (((usqInt) header) >> MethodHeaderArgCountShift) & 15;
 		if (((((sqInt) theIP)) > 0)
 		 && ((header & AlternateHeaderHasPrimFlag)
-		 && (theIP == (1 + (lastPointerOf(theMethod)))))) {
+		 && (theIP == (1 + (((((literalCountOfMethodHeader(header)) + LiteralStart) - 1) * BytesPerOop) + BaseHeaderSize))))) {
 			theIP += 3;
 		}
 		longAtput((pointer -= BytesPerWord), rcvr);
@@ -22651,10 +22651,8 @@
     sqInt i1;
     sqInt i11;
     sqInt i2;
-    sqInt i21;
     sqInt i3;
     sqInt i4;
-    sqInt i5;
     sqInt iLimiT;
     usqInt limit;
     sqInt memEnd;
@@ -22934,22 +22932,22 @@
 	/* default */
 
 	GIV(thisClassIndex) = 5;
-	for (i5 = (InstanceSpecificationIndex + 1), iLimiT = (lengthOfformat(classArrayClass, (((usqInt) (longAt(classArrayClass))) >> 24) & 0x1F)); i5 <= iLimiT; i5 += 1) {
-		if ((longAt((classArrayClass + BaseHeaderSize) + ((i5 - 1) << (shiftForWord())))) == classArrayObj) {
-			GIV(thisClassIndex) = i5 - 1;
+	for (i4 = (InstanceSpecificationIndex + 1), iLimiT = (lengthOfformat(classArrayClass, (((usqInt) (longAt(classArrayClass))) >> 24) & 0x1F)); i4 <= iLimiT; i4 += 1) {
+		if ((longAt((classArrayClass + BaseHeaderSize) + ((i4 - 1) << (shiftForWord())))) == classArrayObj) {
+			GIV(thisClassIndex) = i4 - 1;
 		}
 	}
 
 	/* default */
 
 	GIV(classNameIndex) = 6;
-	for (i5 = (InstanceSpecificationIndex + 1), iLimiT = (lengthOfformat(classArrayObj, (((usqInt) (longAt(classArrayObj))) >> 24) & 0x1F)); i5 <= iLimiT; i5 += 1) {
-		oop = longAt((classArrayObj + BaseHeaderSize) + ((i5 - 1) << (shiftForWord())));
+	for (i4 = (InstanceSpecificationIndex + 1), iLimiT = (lengthOfformat(classArrayObj, (((usqInt) (longAt(classArrayObj))) >> 24) & 0x1F)); i4 <= iLimiT; i4 += 1) {
+		oop = longAt((classArrayObj + BaseHeaderSize) + ((i4 - 1) << (shiftForWord())));
 		if ((((oop & 3) == 0)
 		 && (((((usqInt) (longAt(oop))) >> 24) & 0x1F) >= 16))
 		 && (((lengthOfformat(oop, (((usqInt) (longAt(oop))) >> 24) & 0x1F)) == 5)
 		 && ((strncmp("Array", firstFixedField(oop), 5)) == 0))) {
-			GIV(classNameIndex) = i5 - 1;
+			GIV(classNameIndex) = i4 - 1;
 		}
 	}
 	GIV(method) = (GIV(newMethod) = GIV(nilObj));
@@ -22968,31 +22966,23 @@
 		GIV(atCache)[i1] = 0;
 	}
 	unlinkAllSends();
-	/* begin flushAtCache */
-	for (i2 = 1; i2 <= AtCacheTotalSize; i2 += 1) {
-		GIV(atCache)[i2] = 0;
-	}
 	/* begin initialCleanup */
 	/* begin flushMethodCache */
-	for (i4 = 1; i4 <= MethodCacheSize; i4 += 1) {
-		GIV(methodCache)[i4] = 0;
+	for (i3 = 1; i3 <= MethodCacheSize; i3 += 1) {
+		GIV(methodCache)[i3] = 0;
 	}
 
 	/* this for primitiveExternalMethod */
 
 	GIV(lastMethodCacheProbeWrite) = 0;
 	/* begin flushAtCache */
-	for (i3 = 1; i3 <= AtCacheTotalSize; i3 += 1) {
-		GIV(atCache)[i3] = 0;
+	for (i2 = 1; i2 <= AtCacheTotalSize; i2 += 1) {
+		GIV(atCache)[i2] = 0;
 	}
 	unlinkAllSends();
-	/* begin flushAtCache */
-	for (i11 = 1; i11 <= AtCacheTotalSize; i11 += 1) {
-		GIV(atCache)[i11] = 0;
-	}
 	/* begin flushExternalPrimitiveTable */
-	for (i21 = 0; i21 < MaxExternalPrimitiveTableSize; i21 += 1) {
-		externalPrimitiveTable[i21] = 0;
+	for (i11 = 0; i11 < MaxExternalPrimitiveTableSize; i11 += 1) {
+		externalPrimitiveTable[i11] = 0;
 	}
 	GIV(externalPrimitiveTableFirstFreeIndex) = 0;
 	GIV(profileSemaphore) = (GIV(profileProcess) = (GIV(profileMethod) = GIV(nilObj)));
@@ -23473,7 +23463,7 @@
 				/* begin getErrorObjectFromPrimFailCode */
 				if (GIV(primFailCode) > 0) {
 					table = longAt((GIV(specialObjectsOop) + BaseHeaderSize) + (PrimErrTableIndex << (shiftForWord())));
-					if (GIV(primFailCode) <= ((lastPointerOf(table)) / BytesPerWord)) {
+					if (GIV(primFailCode) <= (numSlotsOf(table))) {
 						errorCode = longAt((table + BaseHeaderSize) + ((GIV(primFailCode) - 1) << (shiftForWord())));
 						goto l1;
 					}
@@ -23698,7 +23688,7 @@
 				/* begin getErrorObjectFromPrimFailCode */
 				if (GIV(primFailCode) > 0) {
 					table = longAt((GIV(specialObjectsOop) + BaseHeaderSize) + (PrimErrTableIndex << (shiftForWord())));
-					if (GIV(primFailCode) <= ((lastPointerOf(table)) / BytesPerWord)) {
+					if (GIV(primFailCode) <= (numSlotsOf(table))) {
 						errorCode = longAt((table + BaseHeaderSize) + ((GIV(primFailCode) - 1) << (shiftForWord())));
 						goto l1;
 					}
@@ -31534,7 +31524,6 @@
 {   DECL_MAYBE_SQ_GLOBAL_STRUCT
     sqInt i;
     sqInt i1;
-    sqInt i2;
 
 	/* begin flushMethodCache */
 	for (i = 1; i <= MethodCacheSize; i += 1) {
@@ -31549,10 +31538,6 @@
 		GIV(atCache)[i1] = 0;
 	}
 	unlinkAllSends();
-	/* begin flushAtCache */
-	for (i2 = 1; i2 <= AtCacheTotalSize; i2 += 1) {
-		GIV(atCache)[i2] = 0;
-	}
 }
 
 
@@ -31570,7 +31555,6 @@
     sqInt i;
     sqInt i1;
     sqInt i2;
-    sqInt i3;
     sqInt limit;
     sqInt methodHeader;
     usqInt numSlots;
@@ -31739,13 +31723,9 @@
 		GIV(atCache)[i1] = 0;
 	}
 	unlinkAllSends();
-	/* begin flushAtCache */
-	for (i2 = 1; i2 <= AtCacheTotalSize; i2 += 1) {
-		GIV(atCache)[i2] = 0;
-	}
 	/* begin flushExternalPrimitiveTable */
-	for (i3 = 0; i3 < MaxExternalPrimitiveTableSize; i3 += 1) {
-		externalPrimitiveTable[i3] = 0;
+	for (i2 = 0; i2 < MaxExternalPrimitiveTableSize; i2 += 1) {
+		externalPrimitiveTable[i2] = 0;
 	}
 	GIV(externalPrimitiveTableFirstFreeIndex) = 0;
 }
@@ -38245,7 +38225,6 @@
     sqInt i;
     sqInt i1;
     sqInt i2;
-    sqInt i3;
     sqInt limit;
     sqInt methodHeader;
     sqInt moduleName;
@@ -38445,13 +38424,9 @@
 		GIV(atCache)[i1] = 0;
 	}
 	unlinkAllSends();
-	/* begin flushAtCache */
-	for (i2 = 1; i2 <= AtCacheTotalSize; i2 += 1) {
-		GIV(atCache)[i2] = 0;
-	}
 	/* begin flushExternalPrimitiveTable */
-	for (i3 = 0; i3 < MaxExternalPrimitiveTableSize; i3 += 1) {
-		externalPrimitiveTable[i3] = 0;
+	for (i2 = 0; i2 < MaxExternalPrimitiveTableSize; i2 += 1) {
+		externalPrimitiveTable[i2] = 0;
 	}
 	GIV(externalPrimitiveTableFirstFreeIndex) = 0;
 	forceInterruptCheck();
@@ -43032,7 +43007,6 @@
     sqInt clone1;
     sqInt clone2;
     sqInt contextSize;
-    sqInt contextSize1;
     sqInt ec;
     sqInt effectsFlags;
     sqInt effectsFlags1;
@@ -43040,7 +43014,6 @@
     sqInt fieldOffset1;
     sqInt fmt;
     sqInt fmt1;
-    sqInt fmt2;
     sqInt hash;
     sqInt hash1;
     sqInt hash2;
@@ -43049,8 +43022,6 @@
     sqInt hash5;
     sqInt header;
     sqInt header1;
-    sqInt header11;
-    sqInt header2;
     sqLong headerTemp;
     sqInt i;
     sqInt i1;
@@ -43090,7 +43061,6 @@
     sqInt referent5;
     sqInt size;
     sqInt sp;
-    sqInt sp1;
     sqInt temp1;
     sqInt temp2;
 
@@ -43121,20 +43091,20 @@
 				sp = longAt((array1 + BaseHeaderSize) + (StackPointerIndex << (shiftForWord())));
 				if (!((sp & 1))) {
 					contextSize = 0;
-					goto l3;
+					goto l2;
 				}
 				assert((ReceiverIndex + ((sp >> 1))) < (lengthOf(array1)));
 				contextSize = (sp >> 1);
-			l3:	/* end fetchStackPointerOf: */;
+			l2:	/* end fetchStackPointerOf: */;
 				fieldOffset = (((CtxtTempFrameStart - 1) + contextSize) * BytesPerOop) + BaseHeaderSize;
-				goto l4;
+				goto l3;
 			}
 			fieldOffset = (((numSlotsOf(array1)) - 1) * BytesPerOop) + BaseHeaderSize;
-			goto l4;
+			goto l3;
 		}
 		if (fmt < 24) {
 			fieldOffset = 0;
-			goto l4;
+			goto l3;
 		}
 		/* begin methodHeaderOf: */
 		assert(isCompiledMethod(array1));
@@ -43145,7 +43115,7 @@
 				assert((((((CogMethod *) header1))->objectHeader)) == (nullHeaderForMachineCodeMethod())),

@@ Diff output truncated at 50000 characters. @@


More information about the Vm-dev mailing list