[Vm-dev] [commit][3120] CogVM source as per VMMaker.oscog-eem.916

commits at squeakvm.org commits at squeakvm.org
Fri Oct 31 19:13:28 UTC 2014


Revision: 3120
Author:   eliot
Date:     2014-10-31 12:13:28 -0700 (Fri, 31 Oct 2014)
Log Message:
-----------
CogVM source as per VMMaker.oscog-eem.916

Spur:
Reimplement deriving the accessorDepth and retrying primitives on primitive
failure machinery.  Always take the primitive index from newMethod (setting
newMethod to a SmallInteger for primitiveDoPrimitiveWithArgs.

Have the Cogit always set primitiveFunctionPointer and newMethod for the retry.

Add isNonInteger(Non)Immediate: and use it in several of
the integer conversion routines that were missing code
to exclude Character immediates, with fatal consequences.

With these changes the Pharo 4 test suite runs without
crashing on the latest Pharo Spur boot image.

Modified Paths:
--------------
    branches/Cog/nscogsrc/vm/cogit.c
    branches/Cog/nscogsrc/vm/cogit.h
    branches/Cog/nscogsrc/vm/cointerp.c
    branches/Cog/nscogsrc/vm/cointerp.h
    branches/Cog/nscogsrc/vm/gcc3x-cointerp.c
    branches/Cog/nsspursrc/vm/cogit.c
    branches/Cog/nsspursrc/vm/cogit.h
    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/cogit.c
    branches/Cog/sistasrc/vm/cogit.h
    branches/Cog/sistasrc/vm/cointerp.c
    branches/Cog/sistasrc/vm/cointerp.h
    branches/Cog/sistasrc/vm/gcc3x-cointerp.c
    branches/Cog/spursistasrc/vm/cogit.c
    branches/Cog/spursistasrc/vm/cogit.h
    branches/Cog/spursistasrc/vm/cointerp.c
    branches/Cog/spursistasrc/vm/cointerp.h
    branches/Cog/spursistasrc/vm/gcc3x-cointerp.c
    branches/Cog/spursrc/vm/cogit.c
    branches/Cog/spursrc/vm/cogit.h
    branches/Cog/spursrc/vm/cointerp.c
    branches/Cog/spursrc/vm/cointerp.h
    branches/Cog/spursrc/vm/gcc3x-cointerp.c
    branches/Cog/spurstacksrc/vm/gcc3x-interp.c
    branches/Cog/spurstacksrc/vm/interp.c
    branches/Cog/src/vm/cogit.c
    branches/Cog/src/vm/cogit.h
    branches/Cog/src/vm/cointerp.c
    branches/Cog/src/vm/cointerp.h
    branches/Cog/src/vm/cointerpmt.c
    branches/Cog/src/vm/cointerpmt.h
    branches/Cog/src/vm/gcc3x-cointerp.c
    branches/Cog/src/vm/gcc3x-cointerpmt.c
    branches/Cog/stacksrc/vm/gcc3x-interp.c
    branches/Cog/stacksrc/vm/interp.c

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

Modified: branches/Cog/nscogsrc/vm/cogit.c
===================================================================
--- branches/Cog/nscogsrc/vm/cogit.c	2014-10-31 19:11:22 UTC (rev 3119)
+++ branches/Cog/nscogsrc/vm/cogit.c	2014-10-31 19:13:28 UTC (rev 3120)
@@ -1,9 +1,9 @@
 /* Automatically generated by
-	CCodeGenerator VMMaker.oscog-eem.911 uuid: 39c7bff8-ff88-43a5-88bc-cbbdb206cbcd
+	CCodeGenerator VMMaker.oscog-eem.916 uuid: 79925bdf-769f-446f-8532-f04f0e2f11ae
    from
-	StackToRegisterMappingCogit VMMaker.oscog-eem.911 uuid: 39c7bff8-ff88-43a5-88bc-cbbdb206cbcd
+	StackToRegisterMappingCogit VMMaker.oscog-eem.916 uuid: 79925bdf-769f-446f-8532-f04f0e2f11ae
  */
-static char __buildInfo[] = "StackToRegisterMappingCogit VMMaker.oscog-eem.911 uuid: 39c7bff8-ff88-43a5-88bc-cbbdb206cbcd " __DATE__ ;
+static char __buildInfo[] = "StackToRegisterMappingCogit VMMaker.oscog-eem.916 uuid: 79925bdf-769f-446f-8532-f04f0e2f11ae " __DATE__ ;
 char *__cogitBuildInfo = __buildInfo;
 
 

Modified: branches/Cog/nscogsrc/vm/cogit.h
===================================================================
--- branches/Cog/nscogsrc/vm/cogit.h	2014-10-31 19:11:22 UTC (rev 3119)
+++ branches/Cog/nscogsrc/vm/cogit.h	2014-10-31 19:13:28 UTC (rev 3120)
@@ -1,5 +1,5 @@
 /* Automatically generated by
-	CCodeGenerator VMMaker.oscog-eem.911 uuid: 39c7bff8-ff88-43a5-88bc-cbbdb206cbcd
+	CCodeGenerator VMMaker.oscog-eem.916 uuid: 79925bdf-769f-446f-8532-f04f0e2f11ae
  */
 
 

Modified: branches/Cog/nscogsrc/vm/cointerp.c
===================================================================
--- branches/Cog/nscogsrc/vm/cointerp.c	2014-10-31 19:11:22 UTC (rev 3119)
+++ branches/Cog/nscogsrc/vm/cointerp.c	2014-10-31 19:13:28 UTC (rev 3120)
@@ -1,9 +1,9 @@
 /* Automatically generated by
-	CCodeGeneratorGlobalStructure VMMaker.oscog-eem.914 uuid: bda96e1c-f22e-4b32-9ee1-620740e1fec5
+	CCodeGeneratorGlobalStructure VMMaker.oscog-eem.916 uuid: 79925bdf-769f-446f-8532-f04f0e2f11ae
    from
-	CoInterpreter VMMaker.oscog-eem.914 uuid: bda96e1c-f22e-4b32-9ee1-620740e1fec5
+	CoInterpreter VMMaker.oscog-eem.916 uuid: 79925bdf-769f-446f-8532-f04f0e2f11ae
  */
-static char __buildInfo[] = "CoInterpreter VMMaker.oscog-eem.914 uuid: bda96e1c-f22e-4b32-9ee1-620740e1fec5 " __DATE__ ;
+static char __buildInfo[] = "CoInterpreter VMMaker.oscog-eem.916 uuid: 79925bdf-769f-446f-8532-f04f0e2f11ae " __DATE__ ;
 char *__interpBuildInfo = __buildInfo;
 
 
@@ -275,7 +275,6 @@
 #define NilObject 0
 #define OldBecameNewFlag 4
 #define PrimCallCollectsProfileSamples 8
-#define PrimCallDoNotJIT 32
 #define PrimCallMayCallBack 4
 #define PrimCallNeedsNewMethod 1
 #define PrimCallNeedsPrimitiveFunction 2
@@ -1338,32 +1337,33 @@
 _iss char * stackBasePlus1;
 _iss sqInt trueObj;
 _iss sqInt falseObj;
-_iss sqInt remapBufferCount;
 _iss sqInt bytesPerPage;
 _iss sqInt traceLogIndex;
+_iss sqInt remapBufferCount;
 _iss usqInt reserveStart;
 _iss char * stackLimit;
 _iss sqInt rootTableCount;
 _iss usqInt memoryLimit;
-_iss usqInt endOfMemory;
 _iss usqInt scavengeThreshold;
+_iss usqInt endOfMemory;
 _iss unsigned char primTraceLogIndex;
 _iss StackPage * mostRecentlyUsedPage;
 _iss sqInt numStackPages;
+_iss sqInt tempOop;
 _iss sqInt needGCFlag;
 _iss sqInt profileProcess;
+_iss sqLong nextProfileTick;
 _iss sqInt jmpDepth;
 _iss sqInt longRunningPrimitiveCheckSemaphore;
-_iss sqLong nextProfileTick;
 _iss sqInt profileSemaphore;
 _iss sqInt profileMethod;
 _iss usqInt fwdTableNext;
-_iss sqInt tempOop;
 _iss sqInt longRunningPrimitiveCheckMethod;
 _iss usqInt compStart;
 _iss sqInt extraRootCount;
 _iss sqInt classNameIndex;
 _iss sqInt statGrowMemory;
+_iss sqInt tempOop2;
 _iss sqInt weakRootCount;
 _iss sqInt growHeadroom;
 _iss sqInt lastMethodCacheProbeWrite;
@@ -2087,7 +2087,7 @@
 	/* 574 */ (void (*)(void))0,
 	/* 575 */ (void (*)(void))0,
  0 };
-const char *interpreterVersion = "Newspeak Virtual Machine CoInterpreterPrimitives_VMMaker.oscog-eem.914";
+const char *interpreterVersion = "Newspeak Virtual Machine CoInterpreterPrimitives_VMMaker.oscog-eem.916";
 sqInt minBackwardJumpCountForCompile = MinBackwardJumpCountForCompile /* 40 */;
 volatile int sendTrace;
 
@@ -5351,6 +5351,7 @@
 							primTraceLogIndex(GIV(primTraceLogIndex) + 1);
 						}
 						assert(!(isOopForwarded(stackValue(GIV(argumentCount)))));
+						assert((remapBufferCount()) == 0);
 						nArgs = GIV(argumentCount);
 						savedStackPointer = GIV(stackPointer);
 						savedFramePointer = GIV(framePointer);
@@ -5358,8 +5359,8 @@
 						/* begin initPrimCall */
 						GIV(primFailCode) = 0;
 						dispatchFunctionPointer(primitiveFunctionPointer);
-						assert((remapBufferCount()) == 0);
-
+						/* begin maybeRetryFailureDueToForwarding */
+						;
 						/* begin maybeFailForLastObjectOverwrite */
 						if (checkAllocFiller) {
 							if (((freeStart()) < GIV(scavengeThreshold))
@@ -16984,6 +16985,7 @@
 				primTraceLogIndex(GIV(primTraceLogIndex) + 1);
 			}
 			assert(!(isOopForwarded(stackValue(GIV(argumentCount)))));
+			assert((remapBufferCount()) == 0);
 			nArgs = GIV(argumentCount);
 			savedStackPointer = GIV(stackPointer);
 			savedFramePointer = GIV(framePointer);
@@ -16991,8 +16993,8 @@
 			/* begin initPrimCall */
 			GIV(primFailCode) = 0;
 			dispatchFunctionPointer(primitiveFunctionPointer);
-			assert((remapBufferCount()) == 0);
-
+			/* begin maybeRetryFailureDueToForwarding */
+			;
 			/* begin maybeFailForLastObjectOverwrite */
 			if (checkAllocFiller) {
 				if (((freeStart()) < GIV(scavengeThreshold))
@@ -18295,30 +18297,25 @@
 primitivePropertyFlags(sqInt primIndex)
 {   DECL_MAYBE_SQ_GLOBAL_STRUCT
     sqInt baseFlags;
-    void (*functionPointer)(void);
+    sqInt baseFlags1;
 
-	/* begin functionPointerFor:inClass: */
-	functionPointer = ((void (*)(void)) ((primIndex > MaxPrimitiveIndex
-	? 0
-	: primitiveTable[primIndex])));
-	
-	baseFlags = (GIV(profileSemaphore) != GIV(nilObj)
+	/* begin primitivePropertyFlagsForV3: */
+	baseFlags1 = (GIV(profileSemaphore) != GIV(nilObj)
 		? PrimCallNeedsNewMethod + PrimCallCollectsProfileSamples
 		: 0);
-	if (GIV(longRunningPrimitiveCheckSemaphore) != null) {
-		baseFlags = baseFlags | PrimCallNeedsNewMethod;
+	if (!(GIV(longRunningPrimitiveCheckSemaphore) == null)) {
+		baseFlags1 = baseFlags1 | PrimCallNeedsNewMethod;
 	}
-	if ((functionPointer == primitiveExternalCall)
-	 || (functionPointer == primitiveCalloutToFFI)) {
+	null;
+	if ((primIndex == 117)
+	 || (primIndex == 120)) {
 
 		/* For callbacks */
 
-		baseFlags = baseFlags | ((PrimCallNeedsNewMethod + PrimCallNeedsPrimitiveFunction) + PrimCallMayCallBack);
-		if (checkAllocFiller) {
-			baseFlags = baseFlags | CheckAllocationFillerAfterPrimCall;
-		}
+		baseFlags1 = baseFlags1 | ((PrimCallNeedsNewMethod + PrimCallNeedsPrimitiveFunction) + PrimCallMayCallBack);
 	}
-	return baseFlags;
+	return baseFlags1;
+
 }
 
 void *
@@ -20161,6 +20158,7 @@
 		primTraceLogIndex(GIV(primTraceLogIndex) + 1);
 	}
 	assert(!(isOopForwarded(stackValue(GIV(argumentCount)))));
+	assert((remapBufferCount()) == 0);
 	nArgs = GIV(argumentCount);
 	savedStackPointer = GIV(stackPointer);
 	savedFramePointer = GIV(framePointer);
@@ -20168,8 +20166,8 @@
 	/* begin initPrimCall */
 	GIV(primFailCode) = 0;
 	dispatchFunctionPointer(primitiveFunctionPointer);
-	assert((remapBufferCount()) == 0);
-
+	/* begin maybeRetryFailureDueToForwarding */
+	;
 	/* begin maybeFailForLastObjectOverwrite */
 	if (checkAllocFiller) {
 		if (((freeStart()) < GIV(scavengeThreshold))
@@ -22823,6 +22821,7 @@
 	if (ok) {
 		return 1;
 	}
+
 	/* begin primitiveFail */
 	if (!GIV(primFailCode)) {
 		GIV(primFailCode) = 1;
@@ -22909,6 +22908,7 @@
 		}
 		return ((usqLong) smallIntValue);
 	}
+	
 	/* begin isClassOfNonImm:equalTo:compactClassIndex: */
 	assert(!((oop & 1)));
 	ccIndex1 = (((usqInt) (longAt(oop))) >> (compactClassFieldLSB())) & 0x1F;
@@ -22999,9 +22999,7 @@
 		}
 		return value;
 	}
-	else {
-		;
-	}
+	
 	/* begin isClassOfNonImm:equalTo:compactClassIndex: */
 	assert(!((oop & 1)));
 	ccIndex = (((usqInt) (longAt(oop))) >> (compactClassFieldLSB())) & 0x1F;
@@ -23050,6 +23048,7 @@
 		}
 		return (oop >> 1);
 	}
+	
 	/* begin isClassOfNonImm:equalTo:compactClassIndex: */
 	assert(!((oop & 1)));
 	ccIndex = (((usqInt) (longAt(oop))) >> (compactClassFieldLSB())) & 0x1F;
@@ -23104,6 +23103,7 @@
 		}
 		return value;
 	}
+	
 	/* begin isClassOfNonImm:equalTo:compactClassIndex: */
 	assert(!((oop & 1)));
 	ccIndex = (((usqInt) (longAt(oop))) >> (compactClassFieldLSB())) & 0x1F;
@@ -30037,6 +30037,7 @@
 		size = value;
 		goto l1;
 	}
+	
 	/* begin isClassOfNonImm:equalTo:compactClassIndex: */
 	assert(!((oop1 & 1)));
 	ccIndex = (((usqInt) (longAt(oop1))) >> (compactClassFieldLSB())) & 0x1F;
@@ -33834,6 +33835,7 @@
 	if ((oop & 1)) {
 		return (oop >> 1);
 	}
+	
 	/* begin isClassOfNonImm:equalTo:compactClassIndex: */
 	assert(!((oop & 1)));
 	ccIndex1 = (((usqInt) (longAt(oop))) >> (compactClassFieldLSB())) & 0x1F;
@@ -33920,6 +33922,7 @@
 	if ((oop & 1)) {
 		return ((sqLong) ((oop >> 1)));
 	}
+	
 	/* begin isClassOfNonImm:equalTo:compactClassIndex: */
 	assert(!((oop & 1)));
 	ccIndex1 = (((usqInt) (longAt(oop))) >> (compactClassFieldLSB())) & 0x1F;
@@ -34025,6 +34028,7 @@
 	if ((oop & 1)) {
 		return (oop >> 1);
 	}
+	
 	/* begin isClassOfNonImm:equalTo:compactClassIndex: */
 	assert(!((oop & 1)));
 	ccIndex1 = (((usqInt) (longAt(oop))) >> (compactClassFieldLSB())) & 0x1F;
@@ -43718,6 +43722,11 @@
 			ok = 0;
 		}
 	}
+	if (!(GIV(tempOop2) == 0)) {
+		if (!(checkOopIntegritynamed(GIV(tempOop2), "tempOop2"))) {
+			ok = 0;
+		}
+	}
 	for (i = 1; i <= GIV(jmpDepth); i += 1) {
 		if (!(checkOopIntegritynamedindex(GIV(suspendedCallbacks)[i], "suspendedCallbacks", i))) {
 			ok = 0;
@@ -45417,6 +45426,9 @@
 
 	do {
 		assert(!(isForwarded(currClass)));
+		if (!(addressCouldBeClassObj(currClass))) {
+			return GIV(nilObj);
+		}
 		classDict = longAt((currClass + BaseHeaderSize) + (MethodDictionaryIndex << ShiftForWord));
 		assert(!(isForwarded(classDict)));
 		/* begin numSlotsOf: */
@@ -45445,7 +45457,6 @@
 findClassOfMethodforReceiver(sqInt meth, sqInt rcvr)
 {   DECL_MAYBE_SQ_GLOBAL_STRUCT
     sqInt ccIndex;
-    sqInt mclass;
     sqInt rclass;
 
 	if ((((rcvr & 1))
@@ -45454,16 +45465,13 @@
 	 && (((((usqInt)rcvr)) < GIV(freeStart))
 	 && (((longAt(rcvr)) & TypeMask) != HeaderTypeGC)))))
 	 && (!0)) {
-		rclass = ((rcvr & 1)
+		rclass = findClassContainingMethodstartingAt(meth, ((rcvr & 1)
 			? longAt((GIV(specialObjectsOop) + BaseHeaderSize) + (ClassSmallInteger << ShiftForWord))
 			: (((ccIndex = (((usqInt) (longAt(rcvr))) >> (compactClassFieldLSB())) & 0x1F)) == 0
 					? (longAt(rcvr - BaseHeaderSize)) & AllButTypeMask
-					: longAt(((longAt((GIV(specialObjectsOop) + BaseHeaderSize) + (CompactClasses << ShiftForWord))) + BaseHeaderSize) + ((ccIndex - 1) << ShiftForWord))));
-		if (addressCouldBeClassObj(rclass)) {
-			rclass = findClassContainingMethodstartingAt(meth, rclass);
-			if (rclass != GIV(nilObj)) {
-				return rclass;
-			}
+					: longAt(((longAt((GIV(specialObjectsOop) + BaseHeaderSize) + (CompactClasses << ShiftForWord))) + BaseHeaderSize) + ((ccIndex - 1) << ShiftForWord)))));
+		if (rclass != GIV(nilObj)) {
+			return rclass;
 		}
 	}
 	if (!((((meth & 3) == 0)
@@ -45473,10 +45481,6 @@
 		 && (((((usqInt) (longAt(meth))) >> (instFormatFieldLSB())) & 15) >= 12))) {
 		return GIV(nilObj);
 	}
-	mclass = safeMethodClassOf(meth);
-	if (addressCouldBeClassObj(mclass)) {
-		return GIV(nilObj);
-	}
 	return findClassContainingMethodstartingAt(meth, safeMethodClassOf(meth));
 }
 
@@ -47370,6 +47374,12 @@
 	 && (((longAt(GIV(tempOop))) & MarkBit) != 0)))) {
 		GIV(tempOop) = remapObj(GIV(tempOop));
 	}
+	if ((GIV(tempOop2) != 0)
+	 && (((GIV(tempOop2) & 1) == 0)
+	 && (((GIV(tempOop2) & 1) == 0)
+	 && (((longAt(GIV(tempOop2))) & MarkBit) != 0)))) {
+		GIV(tempOop2) = remapObj(GIV(tempOop2));
+	}
 }
 
 
@@ -47435,6 +47445,9 @@
 	if (!(GIV(tempOop) == 0)) {
 		markAndTrace(GIV(tempOop));
 	}
+	if (!(GIV(tempOop2) == 0)) {
+		markAndTrace(GIV(tempOop2));
+	}
 	for (i = 1, iLimiT = (remapBufferCount()); i <= iLimiT; i += 1) {
 		oop = GIV(remapBuffer)[i];
 		if (!((oop & 1))) {
@@ -48511,7 +48524,6 @@
     sqInt ccIndex1;
     sqInt ccIndex2;
     sqInt classObj;
-    sqInt mclass;
     sqInt methClass;
     sqInt methodSel;
     sqInt rclass;
@@ -48526,17 +48538,14 @@
 	 && (((((usqInt)anObject)) < GIV(freeStart))
 	 && (((longAt(anObject)) & TypeMask) != HeaderTypeGC)))))
 	 && (!0)) {
-		rclass = ((anObject & 1)
+		rclass = findClassContainingMethodstartingAt(aMethod, ((anObject & 1)
 			? longAt((GIV(specialObjectsOop) + BaseHeaderSize) + (ClassSmallInteger << ShiftForWord))
 			: (((ccIndex2 = (((usqInt) (longAt(anObject))) >> (compactClassFieldLSB())) & 0x1F)) == 0
 					? (longAt(anObject - BaseHeaderSize)) & AllButTypeMask
-					: longAt(((longAt((GIV(specialObjectsOop) + BaseHeaderSize) + (CompactClasses << ShiftForWord))) + BaseHeaderSize) + ((ccIndex2 - 1) << ShiftForWord))));
-		if (addressCouldBeClassObj(rclass)) {
-			rclass = findClassContainingMethodstartingAt(aMethod, rclass);
-			if (rclass != GIV(nilObj)) {
-				methClass = rclass;
-				goto l1;
-			}
+					: longAt(((longAt((GIV(specialObjectsOop) + BaseHeaderSize) + (CompactClasses << ShiftForWord))) + BaseHeaderSize) + ((ccIndex2 - 1) << ShiftForWord)))));
+		if (rclass != GIV(nilObj)) {
+			methClass = rclass;
+			goto l1;
 		}
 	}
 	if (!((((aMethod & 3) == 0)
@@ -48547,11 +48556,6 @@
 		methClass = GIV(nilObj);
 		goto l1;
 	}
-	mclass = safeMethodClassOf(aMethod);
-	if (addressCouldBeClassObj(mclass)) {
-		methClass = GIV(nilObj);
-		goto l1;
-	}
 	methClass = findClassContainingMethodstartingAt(aMethod, safeMethodClassOf(aMethod));
 l1:	/* end findClassOfMethod:forReceiver: */;
 	methodSel = findSelectorOfMethod(aMethod);
@@ -51594,6 +51598,7 @@
 		}
 		return value;
 	}
+	
 	/* begin isClassOfNonImm:equalTo:compactClassIndex: */
 	assert(!((integerPointer & 1)));
 	ccIndex = (((usqInt) (longAt(integerPointer))) >> (compactClassFieldLSB())) & 0x1F;
@@ -51640,6 +51645,7 @@
 	if ((integerPointer & 1)) {
 		return (integerPointer >> 1);
 	}
+	
 	/* begin isClassOfNonImm:equalTo:compactClassIndex: */
 	assert(!((integerPointer & 1)));
 	ccIndex1 = (((usqInt) (longAt(integerPointer))) >> (compactClassFieldLSB())) & 0x1F;
@@ -53421,7 +53427,6 @@
     sqInt argumentArray;
     sqInt arraySize;
     sqInt ccIndex;
-    sqInt ctxtRcvr;
     sqInt firstBytecode;
     sqInt fmt;
     sqInt fmt1;
@@ -53437,14 +53442,10 @@
     sqInt methodHeader;
     sqInt moduleLength;
     sqInt moduleName;
-    sqInt oop;
-    sqInt oop1;
-    sqInt oop2;
-    sqInt oop3;
-    sqInt oop4;
-    sqInt oop5;
-    sqInt oop6;
-    sqInt oop7;
+    sqInt object;
+    sqInt object1;
+    sqInt object2;
+    sqInt object3;
     sqInt primBits;
     sqInt primRcvr;
     char *sp;
@@ -53461,6 +53462,10 @@
     sqInt sz2;
     sqInt top;
     sqInt top1;
+    sqInt valuePointer;
+    sqInt valuePointer1;
+    sqInt valuePointer2;
+    sqInt valuePointer3;
 
 	argumentArray = longAt(GIV(stackPointer));
 	methodArg = longAt(GIV(stackPointer) + (2 * BytesPerWord));
@@ -53608,40 +53613,25 @@
 		(GIV(primFailCode) = -1);
 		return;
 	}
-	/* begin pushRemappableOop: */
-	oop = (argumentArray = popStack());
-	assert(addressCouldBeOop(oop));
-	GIV(remapBuffer)[(GIV(remapBufferCount) += 1)] = oop;
-	if (!(GIV(remapBufferCount) <= RemapBufferSize)) {
-		error("remapBuffer overflow");
-	}
-	/* begin pushRemappableOop: */
-	oop1 = (primRcvr = popStack());
-	assert(addressCouldBeOop(oop1));
-	GIV(remapBuffer)[(GIV(remapBufferCount) += 1)] = oop1;
-	if (!(GIV(remapBufferCount) <= RemapBufferSize)) {
-		error("remapBuffer overflow");
-	}
-	/* begin pushRemappableOop: */
+	GIV(tempOop) = eeInstantiateClassIndexformatnumSlots(ClassArrayCompactIndex, 2, 4);
+	/* begin storePointerUnchecked:ofObject:withValue: */
+	valuePointer = (argumentArray = popStack());
+	longAtput((GIV(tempOop) + BaseHeaderSize) + (0 << ShiftForWord), valuePointer);
+	/* begin storePointerUnchecked:ofObject:withValue: */
+	valuePointer1 = (primRcvr = popStack());
+	longAtput((GIV(tempOop) + BaseHeaderSize) + (1 << ShiftForWord), valuePointer1);
+	/* begin storePointerUnchecked:ofObject:withValue: */
 	/* begin popStack */
 	top = longAt(GIV(stackPointer));
 	GIV(stackPointer) += BytesPerWord;
-	oop2 = top;
-	assert(addressCouldBeOop(oop2));
-	GIV(remapBuffer)[(GIV(remapBufferCount) += 1)] = oop2;
-	if (!(GIV(remapBufferCount) <= RemapBufferSize)) {
-		error("remapBuffer overflow");
-	}
-	/* begin pushRemappableOop: */
+	valuePointer2 = top;
+	longAtput((GIV(tempOop) + BaseHeaderSize) + (2 << ShiftForWord), valuePointer2);
+	/* begin storePointerUnchecked:ofObject:withValue: */
 	/* begin popStack */
 	top1 = longAt(GIV(stackPointer));
 	GIV(stackPointer) += BytesPerWord;
-	oop3 = top1;
-	assert(addressCouldBeOop(oop3));
-	GIV(remapBuffer)[(GIV(remapBufferCount) += 1)] = oop3;
-	if (!(GIV(remapBufferCount) <= RemapBufferSize)) {
-		error("remapBuffer overflow");
-	}
+	valuePointer3 = top1;
+	longAtput((GIV(tempOop) + BaseHeaderSize) + (3 << ShiftForWord), valuePointer3);
 	/* begin push: */
 	longAtput((sp5 = GIV(stackPointer) - BytesPerWord), primRcvr);
 	GIV(stackPointer) = sp5;
@@ -53652,6 +53642,7 @@
 		GIV(stackPointer) = sp;
 	}
 	/* begin callExternalPrimitive: */
+	;
 	dispatchFunctionPointer(addr);
 	/* begin maybeFailForLastObjectOverwrite */
 	if (checkAllocFiller) {
@@ -53660,22 +53651,7 @@
 			GIV(primFailCode) = PrimErrWritePastObject;
 		}
 	}
-	/* begin popRemappableOop */
-	oop4 = GIV(remapBuffer)[GIV(remapBufferCount)];
-	GIV(remapBufferCount) -= 1;
-	ctxtRcvr = oop4;
-	/* begin popRemappableOop */
-	oop5 = GIV(remapBuffer)[GIV(remapBufferCount)];
-	GIV(remapBufferCount) -= 1;
-	methodArg = oop5;
-	/* begin popRemappableOop */
-	oop6 = GIV(remapBuffer)[GIV(remapBufferCount)];
-	GIV(remapBufferCount) -= 1;
-	primRcvr = oop6;
-	/* begin popRemappableOop */
-	oop7 = GIV(remapBuffer)[GIV(remapBufferCount)];
-	GIV(remapBufferCount) -= 1;
-	argumentArray = oop7;
+
 	if (GIV(primFailCode)) {
 
 		/* If primitive failed, then restore state for failure code */
@@ -53684,16 +53660,20 @@
 		GIV(stackPointer) += (arraySize + 1) * BytesPerWord;
 		null;
 		/* begin push: */
-		longAtput((sp1 = GIV(stackPointer) - BytesPerWord), ctxtRcvr);
+		object = longAt((GIV(tempOop) + BaseHeaderSize) + (3 << ShiftForWord));
+		longAtput((sp1 = GIV(stackPointer) - BytesPerWord), object);
 		GIV(stackPointer) = sp1;
 		/* begin push: */
-		longAtput((sp2 = GIV(stackPointer) - BytesPerWord), methodArg);
+		object1 = longAt((GIV(tempOop) + BaseHeaderSize) + (2 << ShiftForWord));
+		longAtput((sp2 = GIV(stackPointer) - BytesPerWord), object1);
 		GIV(stackPointer) = sp2;
 		/* begin push: */
-		longAtput((sp3 = GIV(stackPointer) - BytesPerWord), primRcvr);
+		object2 = longAt((GIV(tempOop) + BaseHeaderSize) + (1 << ShiftForWord));
+		longAtput((sp3 = GIV(stackPointer) - BytesPerWord), object2);
 		GIV(stackPointer) = sp3;
 		/* begin push: */
-		longAtput((sp4 = GIV(stackPointer) - BytesPerWord), argumentArray);
+		object3 = longAt((GIV(tempOop) + BaseHeaderSize) + (0 << ShiftForWord));
+		longAtput((sp4 = GIV(stackPointer) - BytesPerWord), object3);
 		GIV(stackPointer) = sp4;
 
 		/* Hack.  A nil prim error code (primErrorCode = 1) is interpreted by the image
@@ -53716,9 +53696,12 @@
     sqInt index;
     sqInt integerPointer;
     sqInt nArgs;
+    sqInt nArgs1;
     sqInt primIdx;
     char *savedFramePointer;
+    char *savedFramePointer1;
     char *savedStackPointer;
+    char *savedStackPointer1;
     char *sp;
     char *sp1;
     char *sp2;
@@ -53778,6 +53761,7 @@
 	? 0
 	: primitiveTable[primIdx])));
 	if (primitiveFunctionPointer == 0) {
+		primitiveFunctionPointer = primitiveDoPrimitiveWithArgs;
 		/* begin primitiveFail */
 		if (!GIV(primFailCode)) {
 			GIV(primFailCode) = 1;
@@ -53811,15 +53795,16 @@
 		primTraceLogIndex(GIV(primTraceLogIndex) + 1);
 	}
 	assert(!(isOopForwarded(stackValue(GIV(argumentCount)))));
-	nArgs = GIV(argumentCount);
-	savedStackPointer = GIV(stackPointer);
-	savedFramePointer = GIV(framePointer);
+	assert((remapBufferCount()) == 0);
+	nArgs1 = GIV(argumentCount);
+	savedStackPointer1 = GIV(stackPointer);
+	savedFramePointer1 = GIV(framePointer);
 
 	/* begin initPrimCall */
 	GIV(primFailCode) = 0;
 	dispatchFunctionPointer(primitiveFunctionPointer);
-	assert((remapBufferCount()) == 0);
-
+	/* begin maybeRetryFailureDueToForwarding */
+	;
 	/* begin maybeFailForLastObjectOverwrite */
 	if (checkAllocFiller) {
 		if (((freeStart()) < GIV(scavengeThreshold))
@@ -53829,14 +53814,14 @@
 	}
 	if (FailImbalancedPrimitives
 	 && ((!GIV(primFailCode))
-	 && ((GIV(framePointer) == savedFramePointer)
+	 && ((GIV(framePointer) == savedFramePointer1)
 	 && (!((((usqInt)(longAt(GIV(framePointer) + FoxMethod)))) < (startOfMemory())))))) {
 
 		/* Don't fail if primitive has done something radical, e.g. perform: */
 
-		if (GIV(stackPointer) != (savedStackPointer + (nArgs * BytesPerWord))) {
+		if (GIV(stackPointer) != (savedStackPointer1 + (nArgs1 * BytesPerWord))) {
 			flag("Would be nice to make this a message send of e.g. unbalancedPrimitive to the current process or context");
-			GIV(stackPointer) = savedStackPointer;
+			GIV(stackPointer) = savedStackPointer1;
 			failUnbalancedPrimitive();
 		}
 	}
@@ -53844,6 +53829,7 @@
 		checkProfileTick(GIV(newMethod));
 	}
 	!GIV(primFailCode);
+
 	if (GIV(primFailCode)) {
 
 		/* If primitive failed, then restore state for failure code */
@@ -53859,6 +53845,7 @@
 		/* begin push: */
 		longAtput((sp2 = GIV(stackPointer) - BytesPerWord), GIV(tempOop));
 		GIV(stackPointer) = sp2;
+		primitiveFunctionPointer = primitiveDoPrimitiveWithArgs;
 		GIV(argumentCount) = 2;
 	}
 	GIV(tempOop) = 0;
@@ -54104,6 +54091,7 @@
 		if (addr != 0) {
 			rewriteMethodCacheEntryForExternalPrimitiveToFunction(addr);
 			/* begin callExternalPrimitive: */
+			;
 			dispatchFunctionPointer(addr);
 			/* begin maybeFailForLastObjectOverwrite */
 			if (checkAllocFiller) {
@@ -54112,6 +54100,8 @@
 					GIV(primFailCode) = PrimErrWritePastObject;
 				}
 			}
+			/* begin maybeRetryFailureDueToForwarding */
+			;
 			return;
 		}
 		(GIV(primFailCode) = PrimErrNamedInternal);
@@ -54196,6 +54186,7 @@
 	if (index >= 0) {
 		rewriteMethodCacheEntryForExternalPrimitiveToFunction(addr);
 		/* begin callExternalPrimitive: */
+		;
 		dispatchFunctionPointer(addr);
 		/* begin maybeFailForLastObjectOverwrite */
 		if (checkAllocFiller) {
@@ -54204,6 +54195,8 @@
 				GIV(primFailCode) = PrimErrWritePastObject;
 			}
 		}
+		/* begin maybeRetryFailureDueToForwarding */
+		;
 	}
 	else {
 

Modified: branches/Cog/nscogsrc/vm/cointerp.h
===================================================================
--- branches/Cog/nscogsrc/vm/cointerp.h	2014-10-31 19:11:22 UTC (rev 3119)
+++ branches/Cog/nscogsrc/vm/cointerp.h	2014-10-31 19:13:28 UTC (rev 3120)
@@ -1,5 +1,5 @@
 /* Automatically generated by
-	CCodeGeneratorGlobalStructure VMMaker.oscog-eem.914 uuid: bda96e1c-f22e-4b32-9ee1-620740e1fec5
+	CCodeGeneratorGlobalStructure VMMaker.oscog-eem.916 uuid: 79925bdf-769f-446f-8532-f04f0e2f11ae
  */
 
 

Modified: branches/Cog/nscogsrc/vm/gcc3x-cointerp.c
===================================================================
--- branches/Cog/nscogsrc/vm/gcc3x-cointerp.c	2014-10-31 19:11:22 UTC (rev 3119)
+++ branches/Cog/nscogsrc/vm/gcc3x-cointerp.c	2014-10-31 19:13:28 UTC (rev 3120)
@@ -2,11 +2,11 @@
 
 
 /* Automatically generated by
-	CCodeGeneratorGlobalStructure VMMaker.oscog-eem.914 uuid: bda96e1c-f22e-4b32-9ee1-620740e1fec5
+	CCodeGeneratorGlobalStructure VMMaker.oscog-eem.916 uuid: 79925bdf-769f-446f-8532-f04f0e2f11ae
    from
-	CoInterpreter VMMaker.oscog-eem.914 uuid: bda96e1c-f22e-4b32-9ee1-620740e1fec5
+	CoInterpreter VMMaker.oscog-eem.916 uuid: 79925bdf-769f-446f-8532-f04f0e2f11ae
  */
-static char __buildInfo[] = "CoInterpreter VMMaker.oscog-eem.914 uuid: bda96e1c-f22e-4b32-9ee1-620740e1fec5 " __DATE__ ;
+static char __buildInfo[] = "CoInterpreter VMMaker.oscog-eem.916 uuid: 79925bdf-769f-446f-8532-f04f0e2f11ae " __DATE__ ;
 char *__interpBuildInfo = __buildInfo;
 
 
@@ -278,7 +278,6 @@
 #define NilObject 0
 #define OldBecameNewFlag 4
 #define PrimCallCollectsProfileSamples 8
-#define PrimCallDoNotJIT 32
 #define PrimCallMayCallBack 4
 #define PrimCallNeedsNewMethod 1
 #define PrimCallNeedsPrimitiveFunction 2
@@ -1341,32 +1340,33 @@
 _iss char * stackBasePlus1;
 _iss sqInt trueObj;
 _iss sqInt falseObj;
-_iss sqInt remapBufferCount;
 _iss sqInt bytesPerPage;
 _iss sqInt traceLogIndex;
+_iss sqInt remapBufferCount;
 _iss usqInt reserveStart;
 _iss char * stackLimit;
 _iss sqInt rootTableCount;
 _iss usqInt memoryLimit;
-_iss usqInt endOfMemory;
 _iss usqInt scavengeThreshold;
+_iss usqInt endOfMemory;
 _iss unsigned char primTraceLogIndex;
 _iss StackPage * mostRecentlyUsedPage;
 _iss sqInt numStackPages;
+_iss sqInt tempOop;
 _iss sqInt needGCFlag;
 _iss sqInt profileProcess;
+_iss sqLong nextProfileTick;
 _iss sqInt jmpDepth;
 _iss sqInt longRunningPrimitiveCheckSemaphore;
-_iss sqLong nextProfileTick;
 _iss sqInt profileSemaphore;
 _iss sqInt profileMethod;
 _iss usqInt fwdTableNext;
-_iss sqInt tempOop;
 _iss sqInt longRunningPrimitiveCheckMethod;
 _iss usqInt compStart;
 _iss sqInt extraRootCount;
 _iss sqInt classNameIndex;
 _iss sqInt statGrowMemory;
+_iss sqInt tempOop2;
 _iss sqInt weakRootCount;
 _iss sqInt growHeadroom;
 _iss sqInt lastMethodCacheProbeWrite;
@@ -2090,7 +2090,7 @@
 	/* 574 */ (void (*)(void))0,
 	/* 575 */ (void (*)(void))0,
  0 };
-const char *interpreterVersion = "Newspeak Virtual Machine CoInterpreterPrimitives_VMMaker.oscog-eem.914";
+const char *interpreterVersion = "Newspeak Virtual Machine CoInterpreterPrimitives_VMMaker.oscog-eem.916";
 sqInt minBackwardJumpCountForCompile = MinBackwardJumpCountForCompile /* 40 */;
 volatile int sendTrace;
 
@@ -5360,6 +5360,7 @@
 							primTraceLogIndex(GIV(primTraceLogIndex) + 1);
 						}
 						assert(!(isOopForwarded(stackValue(GIV(argumentCount)))));
+						assert((remapBufferCount()) == 0);
 						nArgs = GIV(argumentCount);
 						savedStackPointer = GIV(stackPointer);
 						savedFramePointer = GIV(framePointer);
@@ -5367,8 +5368,8 @@
 						/* begin initPrimCall */
 						GIV(primFailCode) = 0;
 						dispatchFunctionPointer(primitiveFunctionPointer);
-						assert((remapBufferCount()) == 0);
-
+						/* begin maybeRetryFailureDueToForwarding */
+						;
 						/* begin maybeFailForLastObjectOverwrite */
 						if (checkAllocFiller) {
 							if (((freeStart()) < GIV(scavengeThreshold))
@@ -16993,6 +16994,7 @@
 				primTraceLogIndex(GIV(primTraceLogIndex) + 1);
 			}
 			assert(!(isOopForwarded(stackValue(GIV(argumentCount)))));
+			assert((remapBufferCount()) == 0);
 			nArgs = GIV(argumentCount);
 			savedStackPointer = GIV(stackPointer);
 			savedFramePointer = GIV(framePointer);
@@ -17000,8 +17002,8 @@
 			/* begin initPrimCall */
 			GIV(primFailCode) = 0;
 			dispatchFunctionPointer(primitiveFunctionPointer);
-			assert((remapBufferCount()) == 0);
-
+			/* begin maybeRetryFailureDueToForwarding */
+			;
 			/* begin maybeFailForLastObjectOverwrite */
 			if (checkAllocFiller) {
 				if (((freeStart()) < GIV(scavengeThreshold))
@@ -18304,30 +18306,25 @@
 primitivePropertyFlags(sqInt primIndex)
 {   DECL_MAYBE_SQ_GLOBAL_STRUCT
     sqInt baseFlags;
-    void (*functionPointer)(void);
+    sqInt baseFlags1;
 
-	/* begin functionPointerFor:inClass: */
-	functionPointer = ((void (*)(void)) ((primIndex > MaxPrimitiveIndex
-	? 0
-	: primitiveTable[primIndex])));
-	
-	baseFlags = (GIV(profileSemaphore) != GIV(nilObj)
+	/* begin primitivePropertyFlagsForV3: */
+	baseFlags1 = (GIV(profileSemaphore) != GIV(nilObj)
 		? PrimCallNeedsNewMethod + PrimCallCollectsProfileSamples
 		: 0);
-	if (GIV(longRunningPrimitiveCheckSemaphore) != null) {
-		baseFlags = baseFlags | PrimCallNeedsNewMethod;
+	if (!(GIV(longRunningPrimitiveCheckSemaphore) == null)) {
+		baseFlags1 = baseFlags1 | PrimCallNeedsNewMethod;
 	}
-	if ((functionPointer == primitiveExternalCall)
-	 || (functionPointer == primitiveCalloutToFFI)) {
+	null;
+	if ((primIndex == 117)
+	 || (primIndex == 120)) {
 
 		/* For callbacks */
 
-		baseFlags = baseFlags | ((PrimCallNeedsNewMethod + PrimCallNeedsPrimitiveFunction) + PrimCallMayCallBack);
-		if (checkAllocFiller) {
-			baseFlags = baseFlags | CheckAllocationFillerAfterPrimCall;
-		}
+		baseFlags1 = baseFlags1 | ((PrimCallNeedsNewMethod + PrimCallNeedsPrimitiveFunction) + PrimCallMayCallBack);
 	}
-	return baseFlags;
+	return baseFlags1;
+
 }
 
 void *
@@ -20170,6 +20167,7 @@
 		primTraceLogIndex(GIV(primTraceLogIndex) + 1);
 	}
 	assert(!(isOopForwarded(stackValue(GIV(argumentCount)))));
+	assert((remapBufferCount()) == 0);
 	nArgs = GIV(argumentCount);
 	savedStackPointer = GIV(stackPointer);
 	savedFramePointer = GIV(framePointer);
@@ -20177,8 +20175,8 @@
 	/* begin initPrimCall */
 	GIV(primFailCode) = 0;
 	dispatchFunctionPointer(primitiveFunctionPointer);
-	assert((remapBufferCount()) == 0);
-
+	/* begin maybeRetryFailureDueToForwarding */
+	;
 	/* begin maybeFailForLastObjectOverwrite */
 	if (checkAllocFiller) {
 		if (((freeStart()) < GIV(scavengeThreshold))
@@ -22832,6 +22830,7 @@
 	if (ok) {
 		return 1;
 	}
+
 	/* begin primitiveFail */
 	if (!GIV(primFailCode)) {
 		GIV(primFailCode) = 1;
@@ -22918,6 +22917,7 @@
 		}
 		return ((usqLong) smallIntValue);
 	}
+	
 	/* begin isClassOfNonImm:equalTo:compactClassIndex: */
 	assert(!((oop & 1)));
 	ccIndex1 = (((usqInt) (longAt(oop))) >> (compactClassFieldLSB())) & 0x1F;
@@ -23008,9 +23008,7 @@
 		}
 		return value;
 	}
-	else {
-		;
-	}
+	
 	/* begin isClassOfNonImm:equalTo:compactClassIndex: */
 	assert(!((oop & 1)));
 	ccIndex = (((usqInt) (longAt(oop))) >> (compactClassFieldLSB())) & 0x1F;
@@ -23059,6 +23057,7 @@
 		}
 		return (oop >> 1);
 	}
+	
 	/* begin isClassOfNonImm:equalTo:compactClassIndex: */
 	assert(!((oop & 1)));
 	ccIndex = (((usqInt) (longAt(oop))) >> (compactClassFieldLSB())) & 0x1F;
@@ -23113,6 +23112,7 @@
 		}
 		return value;
 	}
+	
 	/* begin isClassOfNonImm:equalTo:compactClassIndex: */
 	assert(!((oop & 1)));
 	ccIndex = (((usqInt) (longAt(oop))) >> (compactClassFieldLSB())) & 0x1F;
@@ -30046,6 +30046,7 @@
 		size = value;
 		goto l1;
 	}
+	
 	/* begin isClassOfNonImm:equalTo:compactClassIndex: */
 	assert(!((oop1 & 1)));
 	ccIndex = (((usqInt) (longAt(oop1))) >> (compactClassFieldLSB())) & 0x1F;
@@ -33843,6 +33844,7 @@
 	if ((oop & 1)) {
 		return (oop >> 1);
 	}
+	
 	/* begin isClassOfNonImm:equalTo:compactClassIndex: */
 	assert(!((oop & 1)));
 	ccIndex1 = (((usqInt) (longAt(oop))) >> (compactClassFieldLSB())) & 0x1F;
@@ -33929,6 +33931,7 @@
 	if ((oop & 1)) {
 		return ((sqLong) ((oop >> 1)));
 	}
+	
 	/* begin isClassOfNonImm:equalTo:compactClassIndex: */
 	assert(!((oop & 1)));
 	ccIndex1 = (((usqInt) (longAt(oop))) >> (compactClassFieldLSB())) & 0x1F;
@@ -34034,6 +34037,7 @@
 	if ((oop & 1)) {
 		return (oop >> 1);
 	}
+	
 	/* begin isClassOfNonImm:equalTo:compactClassIndex: */
 	assert(!((oop & 1)));
 	ccIndex1 = (((usqInt) (longAt(oop))) >> (compactClassFieldLSB())) & 0x1F;
@@ -43727,6 +43731,11 @@
 			ok = 0;
 		}
 	}
+	if (!(GIV(tempOop2) == 0)) {
+		if (!(checkOopIntegritynamed(GIV(tempOop2), "tempOop2"))) {
+			ok = 0;
+		}
+	}
 	for (i = 1; i <= GIV(jmpDepth); i += 1) {
 		if (!(checkOopIntegritynamedindex(GIV(suspendedCallbacks)[i], "suspendedCallbacks", i))) {
 			ok = 0;
@@ -45426,6 +45435,9 @@
 
 	do {
 		assert(!(isForwarded(currClass)));
+		if (!(addressCouldBeClassObj(currClass))) {
+			return GIV(nilObj);
+		}
 		classDict = longAt((currClass + BaseHeaderSize) + (MethodDictionaryIndex << ShiftForWord));
 		assert(!(isForwarded(classDict)));
 		/* begin numSlotsOf: */
@@ -45454,7 +45466,6 @@
 findClassOfMethodforReceiver(sqInt meth, sqInt rcvr)
 {   DECL_MAYBE_SQ_GLOBAL_STRUCT
     sqInt ccIndex;
-    sqInt mclass;
     sqInt rclass;
 
 	if ((((rcvr & 1))
@@ -45463,16 +45474,13 @@
 	 && (((((usqInt)rcvr)) < GIV(freeStart))
 	 && (((longAt(rcvr)) & TypeMask) != HeaderTypeGC)))))
 	 && (!0)) {
-		rclass = ((rcvr & 1)
+		rclass = findClassContainingMethodstartingAt(meth, ((rcvr & 1)
 			? longAt((GIV(specialObjectsOop) + BaseHeaderSize) + (ClassSmallInteger << ShiftForWord))
 			: (((ccIndex = (((usqInt) (longAt(rcvr))) >> (compactClassFieldLSB())) & 0x1F)) == 0
 					? (longAt(rcvr - BaseHeaderSize)) & AllButTypeMask
-					: longAt(((longAt((GIV(specialObjectsOop) + BaseHeaderSize) + (CompactClasses << ShiftForWord))) + BaseHeaderSize) + ((ccIndex - 1) << ShiftForWord))));
-		if (addressCouldBeClassObj(rclass)) {
-			rclass = findClassContainingMethodstartingAt(meth, rclass);
-			if (rclass != GIV(nilObj)) {
-				return rclass;
-			}
+					: longAt(((longAt((GIV(specialObjectsOop) + BaseHeaderSize) + (CompactClasses << ShiftForWord))) + BaseHeaderSize) + ((ccIndex - 1) << ShiftForWord)))));
+		if (rclass != GIV(nilObj)) {
+			return rclass;
 		}
 	}
 	if (!((((meth & 3) == 0)
@@ -45482,10 +45490,6 @@
 		 && (((((usqInt) (longAt(meth))) >> (instFormatFieldLSB())) & 15) >= 12))) {
 		return GIV(nilObj);
 	}
-	mclass = safeMethodClassOf(meth);
-	if (addressCouldBeClassObj(mclass)) {
-		return GIV(nilObj);
-	}
 	return findClassContainingMethodstartingAt(meth, safeMethodClassOf(meth));
 }
 
@@ -47379,6 +47383,12 @@
 	 && (((longAt(GIV(tempOop))) & MarkBit) != 0)))) {
 		GIV(tempOop) = remapObj(GIV(tempOop));
 	}
+	if ((GIV(tempOop2) != 0)
+	 && (((GIV(tempOop2) & 1) == 0)
+	 && (((GIV(tempOop2) & 1) == 0)
+	 && (((longAt(GIV(tempOop2))) & MarkBit) != 0)))) {
+		GIV(tempOop2) = remapObj(GIV(tempOop2));
+	}
 }
 
 
@@ -47444,6 +47454,9 @@
 	if (!(GIV(tempOop) == 0)) {
 		markAndTrace(GIV(tempOop));
 	}
+	if (!(GIV(tempOop2) == 0)) {
+		markAndTrace(GIV(tempOop2));
+	}
 	for (i = 1, iLimiT = (remapBufferCount()); i <= iLimiT; i += 1) {
 		oop = GIV(remapBuffer)[i];
 		if (!((oop & 1))) {
@@ -48520,7 +48533,6 @@
     sqInt ccIndex1;
     sqInt ccIndex2;
     sqInt classObj;
-    sqInt mclass;
     sqInt methClass;
     sqInt methodSel;
     sqInt rclass;
@@ -48535,17 +48547,14 @@
 	 && (((((usqInt)anObject)) < GIV(freeStart))
 	 && (((longAt(anObject)) & TypeMask) != HeaderTypeGC)))))
 	 && (!0)) {
-		rclass = ((anObject & 1)
+		rclass = findClassContainingMethodstartingAt(aMethod, ((anObject & 1)
 			? longAt((GIV(specialObjectsOop) + BaseHeaderSize) + (ClassSmallInteger << ShiftForWord))
 			: (((ccIndex2 = (((usqInt) (longAt(anObject))) >> (compactClassFieldLSB())) & 0x1F)) == 0
 					? (longAt(anObject - BaseHeaderSize)) & AllButTypeMask
-					: longAt(((longAt((GIV(specialObjectsOop) + BaseHeaderSize) + (CompactClasses << ShiftForWord))) + BaseHeaderSize) + ((ccIndex2 - 1) << ShiftForWord))));
-		if (addressCouldBeClassObj(rclass)) {
-			rclass = findClassContainingMethodstartingAt(aMethod, rclass);
-			if (rclass != GIV(nilObj)) {
-				methClass = rclass;
-				goto l1;
-			}
+					: longAt(((longAt((GIV(specialObjectsOop) + BaseHeaderSize) + (CompactClasses << ShiftForWord))) + BaseHeaderSize) + ((ccIndex2 - 1) << ShiftForWord)))));
+		if (rclass != GIV(nilObj)) {
+			methClass = rclass;
+			goto l1;
 		}
 	}
 	if (!((((aMethod & 3) == 0)
@@ -48556,11 +48565,6 @@
 		methClass = GIV(nilObj);
 		goto l1;
 	}
-	mclass = safeMethodClassOf(aMethod);
-	if (addressCouldBeClassObj(mclass)) {
-		methClass = GIV(nilObj);
-		goto l1;
-	}
 	methClass = findClassContainingMethodstartingAt(aMethod, safeMethodClassOf(aMethod));
 l1:	/* end findClassOfMethod:forReceiver: */;
 	methodSel = findSelectorOfMethod(aMethod);
@@ -51603,6 +51607,7 @@
 		}
 		return value;
 	}
+	
 	/* begin isClassOfNonImm:equalTo:compactClassIndex: */
 	assert(!((integerPointer & 1)));
 	ccIndex = (((usqInt) (longAt(integerPointer))) >> (compactClassFieldLSB())) & 0x1F;
@@ -51649,6 +51654,7 @@
 	if ((integerPointer & 1)) {
 		return (integerPointer >> 1);
 	}
+	
 	/* begin isClassOfNonImm:equalTo:compactClassIndex: */
 	assert(!((integerPointer & 1)));
 	ccIndex1 = (((usqInt) (longAt(integerPointer))) >> (compactClassFieldLSB())) & 0x1F;
@@ -53430,7 +53436,6 @@
     sqInt argumentArray;
     sqInt arraySize;
     sqInt ccIndex;
-    sqInt ctxtRcvr;
     sqInt firstBytecode;
     sqInt fmt;
     sqInt fmt1;
@@ -53446,14 +53451,10 @@
     sqInt methodHeader;
     sqInt moduleLength;
     sqInt moduleName;
-    sqInt oop;
-    sqInt oop1;
-    sqInt oop2;
-    sqInt oop3;
-    sqInt oop4;
-    sqInt oop5;
-    sqInt oop6;
-    sqInt oop7;
+    sqInt object;
+    sqInt object1;
+    sqInt object2;
+    sqInt object3;
     sqInt primBits;
     sqInt primRcvr;
     char *sp;
@@ -53470,6 +53471,10 @@
     sqInt sz2;
     sqInt top;
     sqInt top1;
+    sqInt valuePointer;
+    sqInt valuePointer1;
+    sqInt valuePointer2;
+    sqInt valuePointer3;
 
 	argumentArray = longAt(GIV(stackPointer));
 	methodArg = longAt(GIV(stackPointer) + (2 * BytesPerWord));
@@ -53617,40 +53622,25 @@
 		(GIV(primFailCode) = -1);
 		return;
 	}
-	/* begin pushRemappableOop: */
-	oop = (argumentArray = popStack());
-	assert(addressCouldBeOop(oop));
-	GIV(remapBuffer)[(GIV(remapBufferCount) += 1)] = oop;
-	if (!(GIV(remapBufferCount) <= RemapBufferSize)) {
-		error("remapBuffer overflow");
-	}
-	/* begin pushRemappableOop: */
-	oop1 = (primRcvr = popStack());
-	assert(addressCouldBeOop(oop1));
-	GIV(remapBuffer)[(GIV(remapBufferCount) += 1)] = oop1;
-	if (!(GIV(remapBufferCount) <= RemapBufferSize)) {
-		error("remapBuffer overflow");
-	}
-	/* begin pushRemappableOop: */
+	GIV(tempOop) = eeInstantiateClassIndexformatnumSlots(ClassArrayCompactIndex, 2, 4);
+	/* begin storePointerUnchecked:ofObject:withValue: */
+	valuePointer = (argumentArray = popStack());
+	longAtput((GIV(tempOop) + BaseHeaderSize) + (0 << ShiftForWord), valuePointer);
+	/* begin storePointerUnchecked:ofObject:withValue: */
+	valuePointer1 = (primRcvr = popStack());
+	longAtput((GIV(tempOop) + BaseHeaderSize) + (1 << ShiftForWord), valuePointer1);
+	/* begin storePointerUnchecked:ofObject:withValue: */
 	/* begin popStack */
 	top = longAt(GIV(stackPointer));
 	GIV(stackPointer) += BytesPerWord;
-	oop2 = top;
-	assert(addressCouldBeOop(oop2));
-	GIV(remapBuffer)[(GIV(remapBufferCount) += 1)] = oop2;
-	if (!(GIV(remapBufferCount) <= RemapBufferSize)) {
-		error("remapBuffer overflow");
-	}
-	/* begin pushRemappableOop: */
+	valuePointer2 = top;
+	longAtput((GIV(tempOop) + BaseHeaderSize) + (2 << ShiftForWord), valuePointer2);
+	/* begin storePointerUnchecked:ofObject:withValue: */
 	/* begin popStack */
 	top1 = longAt(GIV(stackPointer));
 	GIV(stackPointer) += BytesPerWord;
-	oop3 = top1;
-	assert(addressCouldBeOop(oop3));
-	GIV(remapBuffer)[(GIV(remapBufferCount) += 1)] = oop3;
-	if (!(GIV(remapBufferCount) <= RemapBufferSize)) {
-		error("remapBuffer overflow");
-	}
+	valuePointer3 = top1;
+	longAtput((GIV(tempOop) + BaseHeaderSize) + (3 << ShiftForWord), valuePointer3);
 	/* begin push: */
 	longAtput((sp5 = GIV(stackPointer) - BytesPerWord), primRcvr);
 	GIV(stackPointer) = sp5;
@@ -53661,6 +53651,7 @@
 		GIV(stackPointer) = sp;
 	}
 	/* begin callExternalPrimitive: */
+	;
 	dispatchFunctionPointer(addr);
 	/* begin maybeFailForLastObjectOverwrite */
 	if (checkAllocFiller) {
@@ -53669,22 +53660,7 @@
 			GIV(primFailCode) = PrimErrWritePastObject;
 		}
 	}
-	/* begin popRemappableOop */
-	oop4 = GIV(remapBuffer)[GIV(remapBufferCount)];
-	GIV(remapBufferCount) -= 1;
-	ctxtRcvr = oop4;
-	/* begin popRemappableOop */
-	oop5 = GIV(remapBuffer)[GIV(remapBufferCount)];
-	GIV(remapBufferCount) -= 1;
-	methodArg = oop5;
-	/* begin popRemappableOop */
-	oop6 = GIV(remapBuffer)[GIV(remapBufferCount)];
-	GIV(remapBufferCount) -= 1;
-	primRcvr = oop6;
-	/* begin popRemappableOop */
-	oop7 = GIV(remapBuffer)[GIV(remapBufferCount)];
-	GIV(remapBufferCount) -= 1;
-	argumentArray = oop7;
+
 	if (GIV(primFailCode)) {
 
 		/* If primitive failed, then restore state for failure code */
@@ -53693,16 +53669,20 @@
 		GIV(stackPointer) += (arraySize + 1) * BytesPerWord;
 		null;
 		/* begin push: */
-		longAtput((sp1 = GIV(stackPointer) - BytesPerWord), ctxtRcvr);
+		object = longAt((GIV(tempOop) + BaseHeaderSize) + (3 << ShiftForWord));
+		longAtput((sp1 = GIV(stackPointer) - BytesPerWord), object);
 		GIV(stackPointer) = sp1;
 		/* begin push: */
-		longAtput((sp2 = GIV(stackPointer) - BytesPerWord), methodArg);
+		object1 = longAt((GIV(tempOop) + BaseHeaderSize) + (2 << ShiftForWord));
+		longAtput((sp2 = GIV(stackPointer) - BytesPerWord), object1);
 		GIV(stackPointer) = sp2;
 		/* begin push: */
-		longAtput((sp3 = GIV(stackPointer) - BytesPerWord), primRcvr);
+		object2 = longAt((GIV(tempOop) + BaseHeaderSize) + (1 << ShiftForWord));
+		longAtput((sp3 = GIV(stackPointer) - BytesPerWord), object2);
 		GIV(stackPointer) = sp3;
 		/* begin push: */
-		longAtput((sp4 = GIV(stackPointer) - BytesPerWord), argumentArray);
+		object3 = longAt((GIV(tempOop) + BaseHeaderSize) + (0 << ShiftForWord));
+		longAtput((sp4 = GIV(stackPointer) - BytesPerWord), object3);
 		GIV(stackPointer) = sp4;
 
 		/* Hack.  A nil prim error code (primErrorCode = 1) is interpreted by the image
@@ -53725,9 +53705,12 @@
     sqInt index;
     sqInt integerPointer;
     sqInt nArgs;
+    sqInt nArgs1;
     sqInt primIdx;
     char *savedFramePointer;
+    char *savedFramePointer1;
     char *savedStackPointer;
+    char *savedStackPointer1;
     char *sp;
     char *sp1;
     char *sp2;
@@ -53787,6 +53770,7 @@
 	? 0
 	: primitiveTable[primIdx])));
 	if (primitiveFunctionPointer == 0) {
+		primitiveFunctionPointer = primitiveDoPrimitiveWithArgs;
 		/* begin primitiveFail */
 		if (!GIV(primFailCode)) {
 			GIV(primFailCode) = 1;
@@ -53820,15 +53804,16 @@
 		primTraceLogIndex(GIV(primTraceLogIndex) + 1);
 	}
 	assert(!(isOopForwarded(stackValue(GIV(argumentCount)))));
-	nArgs = GIV(argumentCount);
-	savedStackPointer = GIV(stackPointer);
-	savedFramePointer = GIV(framePointer);
+	assert((remapBufferCount()) == 0);
+	nArgs1 = GIV(argumentCount);
+	savedStackPointer1 = GIV(stackPointer);
+	savedFramePointer1 = GIV(framePointer);
 
 	/* begin initPrimCall */
 	GIV(primFailCode) = 0;
 	dispatchFunctionPointer(primitiveFunctionPointer);
-	assert((remapBufferCount()) == 0);
-
+	/* begin maybeRetryFailureDueToForwarding */
+	;
 	/* begin maybeFailForLastObjectOverwrite */
 	if (checkAllocFiller) {
 		if (((freeStart()) < GIV(scavengeThreshold))
@@ -53838,14 +53823,14 @@
 	}
 	if (FailImbalancedPrimitives
 	 && ((!GIV(primFailCode))
-	 && ((GIV(framePointer) == savedFramePointer)
+	 && ((GIV(framePointer) == savedFramePointer1)
 	 && (!((((usqInt)(longAt(GIV(framePointer) + FoxMethod)))) < (startOfMemory())))))) {
 
 		/* Don't fail if primitive has done something radical, e.g. perform: */
 
-		if (GIV(stackPointer) != (savedStackPointer + (nArgs * BytesPerWord))) {
+		if (GIV(stackPointer) != (savedStackPointer1 + (nArgs1 * BytesPerWord))) {
 			flag("Would be nice to make this a message send of e.g. unbalancedPrimitive to the current process or context");
-			GIV(stackPointer) = savedStackPointer;
+			GIV(stackPointer) = savedStackPointer1;
 			failUnbalancedPrimitive();
 		}
 	}
@@ -53853,6 +53838,7 @@
 		checkProfileTick(GIV(newMethod));
 	}
 	!GIV(primFailCode);
+
 	if (GIV(primFailCode)) {
 
 		/* If primitive failed, then restore state for failure code */
@@ -53868,6 +53854,7 @@
 		/* begin push: */
 		longAtput((sp2 = GIV(stackPointer) - BytesPerWord), GIV(tempOop));
 		GIV(stackPointer) = sp2;
+		primitiveFunctionPointer = primitiveDoPrimitiveWithArgs;
 		GIV(argumentCount) = 2;
 	}
 	GIV(tempOop) = 0;
@@ -54113,6 +54100,7 @@
 		if (addr != 0) {
 			rewriteMethodCacheEntryForExternalPrimitiveToFunction(addr);
 			/* begin callExternalPrimitive: */
+			;
 			dispatchFunctionPointer(addr);
 			/* begin maybeFailForLastObjectOverwrite */
 			if (checkAllocFiller) {
@@ -54121,6 +54109,8 @@
 					GIV(primFailCode) = PrimErrWritePastObject;
 				}
 			}
+			/* begin maybeRetryFailureDueToForwarding */
+			;
 			return;
 		}
 		(GIV(primFailCode) = PrimErrNamedInternal);
@@ -54205,6 +54195,7 @@
 	if (index >= 0) {
 		rewriteMethodCacheEntryForExternalPrimitiveToFunction(addr);
 		/* begin callExternalPrimitive: */
+		;
 		dispatchFunctionPointer(addr);
 		/* begin maybeFailForLastObjectOverwrite */
 		if (checkAllocFiller) {
@@ -54213,6 +54204,8 @@
 				GIV(primFailCode) = PrimErrWritePastObject;
 			}
 		}
+		/* begin maybeRetryFailureDueToForwarding */
+		;
 	}
 	else {
 

Modified: branches/Cog/nsspursrc/vm/cogit.c
===================================================================
--- branches/Cog/nsspursrc/vm/cogit.c	2014-10-31 19:11:22 UTC (rev 3119)
+++ branches/Cog/nsspursrc/vm/cogit.c	2014-10-31 19:13:28 UTC (rev 3120)
@@ -1,9 +1,9 @@
 /* Automatically generated by
-	CCodeGenerator VMMaker.oscog-eem.911 uuid: 39c7bff8-ff88-43a5-88bc-cbbdb206cbcd
+	CCodeGenerator VMMaker.oscog-eem.916 uuid: 79925bdf-769f-446f-8532-f04f0e2f11ae
    from
-	StackToRegisterMappingCogit VMMaker.oscog-eem.911 uuid: 39c7bff8-ff88-43a5-88bc-cbbdb206cbcd
+	StackToRegisterMappingCogit VMMaker.oscog-eem.916 uuid: 79925bdf-769f-446f-8532-f04f0e2f11ae
  */
-static char __buildInfo[] = "StackToRegisterMappingCogit VMMaker.oscog-eem.911 uuid: 39c7bff8-ff88-43a5-88bc-cbbdb206cbcd " __DATE__ ;
+static char __buildInfo[] = "StackToRegisterMappingCogit VMMaker.oscog-eem.916 uuid: 79925bdf-769f-446f-8532-f04f0e2f11ae " __DATE__ ;
 char *__cogitBuildInfo = __buildInfo;
 
 
@@ -18332,18 +18332,16 @@
 
 
 /*	If primIndex has an accessorDepth, check for primitive failure and call
-	ceCheckForAndFollowForwardedPrimitiveStateFor:. If ceCheck.... answers
+	ceCheckForAndFollowForwardedPrimitiveState if so If ceCheck.... answers
 	true, retry the primitive. */
 
 static sqInt
 maybeCompileRetryonPrimitiveFail(AbstractInstruction *retryInst, sqInt primIndex)
 {
-    sqInt accessorDepth;
     sqInt address;
     AbstractInstruction *jmp;
 
-	accessorDepth = accessorDepthForPrimitiveIndex(primIndex);
-	if (accessorDepth < 0) {
+	if ((accessorDepthForPrimitiveIndex(primIndex)) < 0) {
 		return 0;
 	}
 	/* begin MoveAw:R: */
@@ -18353,7 +18351,7 @@
 	genoperandoperand(CmpCqR, 0, TempReg);
 	/* begin JumpZero: */
 	jmp = genoperand(JumpZero, ((sqInt)0));
-	compileCallFornumArgsargargargargresultRegsaveRegs(ceCheckForAndFollowForwardedPrimitiveStateFor, 1, primIndex, null, null, null, TempReg, 0);
+	compileCallFornumArgsargargargargresultRegsaveRegs(ceCheckForAndFollowForwardedPrimitiveState, 0, null, null, null, null, TempReg, 0);
 	/* begin CmpCq:R: */
 	genoperandoperand(CmpCqR, 0, TempReg);
 	/* begin JumpNonZero: */

Modified: branches/Cog/nsspursrc/vm/cogit.h
===================================================================
--- branches/Cog/nsspursrc/vm/cogit.h	2014-10-31 19:11:22 UTC (rev 3119)
+++ branches/Cog/nsspursrc/vm/cogit.h	2014-10-31 19:13:28 UTC (rev 3120)
@@ -1,5 +1,5 @@
 /* Automatically generated by
-	CCodeGenerator VMMaker.oscog-eem.911 uuid: 39c7bff8-ff88-43a5-88bc-cbbdb206cbcd
+	CCodeGenerator VMMaker.oscog-eem.916 uuid: 79925bdf-769f-446f-8532-f04f0e2f11ae
  */
 
 

Modified: branches/Cog/nsspursrc/vm/cointerp.c
===================================================================
--- branches/Cog/nsspursrc/vm/cointerp.c	2014-10-31 19:11:22 UTC (rev 3119)
+++ branches/Cog/nsspursrc/vm/cointerp.c	2014-10-31 19:13:28 UTC (rev 3120)
@@ -1,9 +1,9 @@
 /* Automatically generated by
-	CCodeGeneratorGlobalStructure VMMaker.oscog-eem.915 uuid: 4159cf52-4807-4416-9da6-1c46ec5b9f10
+	CCodeGeneratorGlobalStructure VMMaker.oscog-eem.916 uuid: 79925bdf-769f-446f-8532-f04f0e2f11ae
    from
-	CoInterpreter VMMaker.oscog-eem.915 uuid: 4159cf52-4807-4416-9da6-1c46ec5b9f10
+	CoInterpreter VMMaker.oscog-eem.916 uuid: 79925bdf-769f-446f-8532-f04f0e2f11ae
  */
-static char __buildInfo[] = "CoInterpreter VMMaker.oscog-eem.915 uuid: 4159cf52-4807-4416-9da6-1c46ec5b9f10 " __DATE__ ;
+static char __buildInfo[] = "CoInterpreter VMMaker.oscog-eem.916 uuid: 79925bdf-769f-446f-8532-f04f0e2f11ae " __DATE__ ;
 char *__interpBuildInfo = __buildInfo;
 
 
@@ -288,7 +288,6 @@
 #define ObjStackTopx 0
 #define OldBecameNewFlag 4
 #define PrimCallCollectsProfileSamples 8
-#define PrimCallDoNotJIT 32
 #define PrimCallMayCallBack 4
 #define PrimCallNeedsNewMethod 1
 #define PrimCallNeedsPrimitiveFunction 2
@@ -409,7 +408,7 @@
 sqInt ceActiveContext(void);
 sqInt ceBaseFrameReturn(sqInt returnValue);
 sqInt ceCannotResume(void);
-sqInt ceCheckForAndFollowForwardedPrimitiveStateFor(sqInt primIndex);
+sqInt ceCheckForAndFollowForwardedPrimitiveState(void);
 void ceCheckForInterrupts(void);
 void ceCheckProfileTick(void);
 sqInt ceContextinstVar(sqInt maybeContext, sqInt slotIndex);
@@ -544,6 +543,7 @@
 static sqInt returntoExecutive(sqInt returnValue, sqInt inInterpreter) NoDbgRegParms;
 static void rewriteMethodCacheEntryForExternalPrimitiveToFunction(void (*localPrimAddress)(void)) NoDbgRegParms;
 static sqInt roomToPushNArgs(sqInt n) NoDbgRegParms;
+static sqInt saneFunctionPointerForFailureOfPrimIndex(sqInt primIndex) NoDbgRegParms;
 EXPORT(sqInt) sendInvokeCallbackContext(VMCallbackContext *vmCallbackContext);
 EXPORT(sqInt) sendInvokeCallbackStackRegistersJmpbuf(sqInt thunkPtr, sqInt stackPtr, sqInt regsPtr, sqInt jmpBufPtr);
 static sqInt shortPrintFrame(char *theFP) NoDbgRegParms;
@@ -791,7 +791,6 @@
 long signedMachineIntegerValueOf(sqInt oop);
 usqInt sizeOfAlienData(sqInt oop);
 void * startOfAlienData(sqInt oop);
-static sqInt successful(void);
 sqInt success(sqInt successBoolean);
 static sqInt addressIsInPage(StackPage * self_in_addressIsInPage, char *address) NoDbgRegParms;
 static sqInt isFree(StackPage * self_in_isFree) NoDbgRegParms;
@@ -1213,7 +1212,7 @@
 sqInt checkAllAccessibleObjectsOkay(void);
 static sqInt checkDeliveryOfLongRunningPrimitiveSignal(void);
 sqInt checkedIntegerValueOf(sqInt intOop);
-static sqInt checkForAndFollowForwardedPrimitiveStateFor(sqInt primIndex) NoDbgRegParms;
+static sqInt checkForAndFollowForwardedPrimitiveState(void);
 static sqInt checkForEventsMayContextSwitch(sqInt mayContextSwitch) NoDbgRegParms;
 static sqInt checkImageVersionFromstartingAt(sqImageFile  f, squeakFileOffsetType  imageOffset) NoDbgRegParms;
 static sqInt checkInterpreterIntegrity(void);
@@ -1522,8 +1521,8 @@
 _iss sqInt argumentCount;
 _iss sqInt markStack;
 _iss usqInt instructionPointer;
+_iss sqInt messageSelector;
 _iss usqInt newMethod;
-_iss sqInt messageSelector;
 _iss sqInt hiddenRootsObj;
 _iss usqInt newSpaceLimit;
 _iss StackPage * pages;
@@ -1535,37 +1534,38 @@
 _iss sqInt needGCFlag;
 _iss sqInt trueObj;
 _iss sqInt falseObj;
-_iss sqInt remapBufferCount;
 _iss usqInt totalFreeOldSpace;
 _iss usqInt pastSpaceStart;
 _iss sqInt bytesPerPage;
 _iss sqInt numSegments;
 _iss sqInt traceLogIndex;
 _iss usqInt scavengeThreshold;
+_iss sqInt remapBufferCount;
 _iss char * stackLimit;
 _iss sqInt * freeLists;
 _iss sqInt rememberedSetSize;
+_iss sqInt tempOop;
 _iss sqInt * rememberedSet;
 _iss usqInt freeListsMask;
 _iss sqInt profileProcess;
 _iss sqInt classTableFirstPage;
+_iss unsigned char primTraceLogIndex;
+_iss sqInt profileSemaphore;
 _iss sqInt longRunningPrimitiveCheckSemaphore;
-_iss sqInt profileSemaphore;
 _iss SpurContiguousObjStack unscannedEphemerons;
 _iss usqInt firstFreeChunk;
-_iss unsigned char primTraceLogIndex;
 _iss sqInt profileMethod;

@@ Diff output truncated at 50000 characters. @@


More information about the Vm-dev mailing list