[Vm-dev] [commit][2875] CogVM source as per VMMaker.oscog-eem.636

commits at squeakvm.org commits at squeakvm.org
Mon Mar 10 20:26:26 UTC 2014


Revision: 2875
Author:   eliot
Date:     2014-03-10 13:26:23 -0700 (Mon, 10 Mar 2014)
Log Message:
-----------
CogVM source as per VMMaker.oscog-eem.636

Fix byteFormatForNumBytes: and hence fix the new version of
positive64BitIntegerFor:.

Spur: Make sure expungeDuplicateAndUnmarkedClasses: resets
classTableIndex for nil entries.

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

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

Modified: branches/Cog/nscogsrc/vm/cointerp.c
===================================================================
--- branches/Cog/nscogsrc/vm/cointerp.c	2014-03-09 19:17:15 UTC (rev 2874)
+++ branches/Cog/nscogsrc/vm/cointerp.c	2014-03-10 20:26:23 UTC (rev 2875)
@@ -1,9 +1,9 @@
 /* Automatically generated by
-	CCodeGeneratorGlobalStructure VMMaker.oscog-eem.635 uuid: d3e35b87-a79e-44a1-975b-549d6ae06743
+	CCodeGeneratorGlobalStructure VMMaker.oscog-eem.636 uuid: 97945106-afaf-4c50-be03-a1806625c3b9
    from
-	CoInterpreter VMMaker.oscog-eem.635 uuid: d3e35b87-a79e-44a1-975b-549d6ae06743
+	CoInterpreter VMMaker.oscog-eem.636 uuid: 97945106-afaf-4c50-be03-a1806625c3b9
  */
-static char __buildInfo[] = "CoInterpreter VMMaker.oscog-eem.635 uuid: d3e35b87-a79e-44a1-975b-549d6ae06743 " __DATE__ ;
+static char __buildInfo[] = "CoInterpreter VMMaker.oscog-eem.636 uuid: 97945106-afaf-4c50-be03-a1806625c3b9 " __DATE__ ;
 char *__interpBuildInfo = __buildInfo;
 
 
@@ -1146,7 +1146,7 @@
 static void rewriteMethodCacheEntryForExternalPrimitiveToFunction(void (*localPrimAddress)(void));
 static sqInt roomToPushNArgs(sqInt n);
 static void runLeakCheckerForFullGC(sqInt fullGCFlag);
-static sqInt safeObjectAfter(sqInt oop);
+static usqInt safeObjectAfter(sqInt oop);
 static sqInt safePrintStringOf(sqInt oop);
 usqInt scavengeThresholdAddress(void);
 EXPORT(sqInt) sendInvokeCallbackContext(VMCallbackContext *vmCallbackContext);
@@ -2033,7 +2033,7 @@
 	/* 574 */ (void (*)(void))0,
 	/* 575 */ (void (*)(void))0,
  0 };
-const char *interpreterVersion = "Newspeak Virtual Machine CoInterpreter_VMMaker.oscog-eem.635";
+const char *interpreterVersion = "Newspeak Virtual Machine CoInterpreter_VMMaker.oscog-eem.636";
 sqInt minBackwardJumpCountForCompile = MinBackwardJumpCountForCompile /* 10 */;
 volatile int sendTrace;
 
@@ -4827,7 +4827,6 @@
 							GIV(framePointer) = localFP;
 							
 							ceEnterCogCodePopReceiverReg();
-							null;
 							goto l307;
 						}
 						localIP = pointerForOop(longAt(localFP + FoxIFSavedIP));
@@ -4845,7 +4844,7 @@
 					/* begin fetchNextBytecode */
 					currentBytecode = (byteAtPointer(++localIP)) + GIV(bytecodeSetSelector);
 
-					null;
+					/* return self */
 				l307:	/* end baseFrameReturn */;
 					goto l304;
 				}
@@ -23735,17 +23734,15 @@
     sqInt header1;
     sqInt header2;
     sqInt header3;
-    sqInt header4;
     usqInt lastWord;
     sqInt newFreeChunk;
     sqInt newOop;
-    sqInt next;
+    usqInt next;
     sqInt oop;
     sqInt realHeader;
     sqInt sz;
     sqInt sz1;
     sqInt sz2;
-    sqInt sz3;
     sqInt target;
     usqInt w;
 
@@ -23756,21 +23753,7 @@
 		/* begin objectAfterWhileForwarding: */
 		header2 = longAt(oop);
 		if ((header2 & MarkBit) == 0) {
-			/* begin objectAfter: */
-			if (!(asserta(oopisLessThan(oop, GIV(freeStart))))) {
-				error("no objects after the end of memory");
-			}
-			if (((longAt(oop)) & TypeMask) == HeaderTypeFree) {
-				sz2 = (longAt(oop)) & AllButTypeMask;
-			}
-			else {
-				/* begin sizeBitsOf: */
-				header3 = longAt(oop);
-				sz2 = ((header3 & TypeMask) == HeaderTypeSizeAndClass
-					? (longAt(oop - (BytesPerWord * 2))) & LongSizeMask
-					: header3 & SizeMask);
-			}
-			next = (oop + sz2) + (headerTypeBytes[(longAt(oop + sz2)) & TypeMask]);
+			next = ((sqInt) (objectAfter(oop)));
 			goto l1;
 		}
 		fwdBlock1 = (header2 & AllButMarkBitAndTypeMask) << 1;
@@ -23785,7 +23768,7 @@
 		else {
 			sz1 = realHeader & SizeMask;
 		}
-		next = (oop + sz1) + (headerTypeBytes[(longAt(oop + sz1)) & TypeMask]);
+		next = ((sqInt) ((oop + sz1) + (headerTypeBytes[(longAt(oop + sz1)) & TypeMask])));
 	l1:	/* end objectAfterWhileForwarding: */;
 		if (!(((longAt(oop)) & TypeMask) == HeaderTypeFree)) {
 
@@ -23839,18 +23822,18 @@
 	}
 	/* begin safeObjectAfter: */
 	if (((longAt(newFreeChunk)) & TypeMask) == HeaderTypeFree) {
-		sz3 = (longAt(newFreeChunk)) & AllButTypeMask;
+		sz2 = (longAt(newFreeChunk)) & AllButTypeMask;
 	}
 	else {
 		/* begin sizeBitsOf: */
-		header4 = longAt(newFreeChunk);
-		sz3 = ((header4 & TypeMask) == HeaderTypeSizeAndClass
+		header3 = longAt(newFreeChunk);
+		sz2 = ((header3 & TypeMask) == HeaderTypeSizeAndClass
 			? (longAt(newFreeChunk - (BytesPerWord * 2))) & LongSizeMask
-			: header4 & SizeMask);
+			: header3 & SizeMask);
 	}
-	next = ((newFreeChunk + sz3) >= GIV(freeStart)
+	next = ((newFreeChunk + sz2) >= GIV(freeStart)
 		? GIV(freeStart)
-		: (newFreeChunk + sz3) + (headerTypeBytes[(longAt(newFreeChunk + sz3)) & TypeMask]));
+		: (newFreeChunk + sz2) + (headerTypeBytes[(longAt(newFreeChunk + sz2)) & TypeMask]));
 	assert((next == GIV(freeStart))
 	 || (next == (oopFromChunk(GIV(compEnd)))));
 	if (next == GIV(freeStart)) {
@@ -29803,7 +29786,7 @@
 	 && ((integerValue ^ (integerValue << 1)) >= 0)) {
 		return ((integerValue << 1) | 1);
 	}
-	newLargeInteger = eeInstantiateSmallClassIndexformatnumSlots(ClassLargePositiveIntegerCompactIndex, 8 + (4 & 3), 1);
+	newLargeInteger = eeInstantiateSmallClassIndexformatnumSlots(ClassLargePositiveIntegerCompactIndex, 8 + ((4 - 4) & 3), 1);
 	byteAtput((newLargeInteger + BaseHeaderSize) + 3, (((usqInt) integerValue) >> 24) & 0xFF);
 	byteAtput((newLargeInteger + BaseHeaderSize) + 2, (((usqInt) integerValue) >> 16) & 0xFF);
 	byteAtput((newLargeInteger + BaseHeaderSize) + 1, (((usqInt) integerValue) >> 8) & 0xFF);
@@ -29889,7 +29872,7 @@
 	if (!(((highWord = ((usqInt) highWord) >> 8)) == 0)) {
 		sz += 1;
 	}
-	newLargeInteger = eeInstantiateSmallClassIndexformatnumSlots(ClassLargePositiveIntegerCompactIndex, 8 + (sz & 3), ((sqInt) 8 >> 2));
+	newLargeInteger = eeInstantiateSmallClassIndexformatnumSlots(ClassLargePositiveIntegerCompactIndex, 8 + ((4 - sz) & 3), ((sqInt) 8 >> 2));
 	byteAtput((newLargeInteger + BaseHeaderSize) + 7, (((unsigned sqLong)integerValue) >> 56) & 0xFF);
 	byteAtput((newLargeInteger + BaseHeaderSize) + 6, (((unsigned sqLong)integerValue) >> 48) & 0xFF);
 	byteAtput((newLargeInteger + BaseHeaderSize) + 5, (((unsigned sqLong)integerValue) >> 40) & 0xFF);
@@ -50265,7 +50248,7 @@
 	given object or free chunk in memory. Return freeStart when
 	enumeration is complete. This is for assertion checking only. */
 
-static sqInt
+static usqInt
 safeObjectAfter(sqInt oop)
 {   DECL_MAYBE_SQ_GLOBAL_STRUCT
     sqInt header;

Modified: branches/Cog/nscogsrc/vm/cointerp.h
===================================================================
--- branches/Cog/nscogsrc/vm/cointerp.h	2014-03-09 19:17:15 UTC (rev 2874)
+++ branches/Cog/nscogsrc/vm/cointerp.h	2014-03-10 20:26:23 UTC (rev 2875)
@@ -1,5 +1,5 @@
 /* Automatically generated by
-	CCodeGeneratorGlobalStructure VMMaker.oscog-eem.635 uuid: d3e35b87-a79e-44a1-975b-549d6ae06743
+	CCodeGeneratorGlobalStructure VMMaker.oscog-eem.636 uuid: 97945106-afaf-4c50-be03-a1806625c3b9
  */
 
 

Modified: branches/Cog/nscogsrc/vm/gcc3x-cointerp.c
===================================================================
--- branches/Cog/nscogsrc/vm/gcc3x-cointerp.c	2014-03-09 19:17:15 UTC (rev 2874)
+++ branches/Cog/nscogsrc/vm/gcc3x-cointerp.c	2014-03-10 20:26:23 UTC (rev 2875)
@@ -2,11 +2,11 @@
 
 
 /* Automatically generated by
-	CCodeGeneratorGlobalStructure VMMaker.oscog-eem.635 uuid: d3e35b87-a79e-44a1-975b-549d6ae06743
+	CCodeGeneratorGlobalStructure VMMaker.oscog-eem.636 uuid: 97945106-afaf-4c50-be03-a1806625c3b9
    from
-	CoInterpreter VMMaker.oscog-eem.635 uuid: d3e35b87-a79e-44a1-975b-549d6ae06743
+	CoInterpreter VMMaker.oscog-eem.636 uuid: 97945106-afaf-4c50-be03-a1806625c3b9
  */
-static char __buildInfo[] = "CoInterpreter VMMaker.oscog-eem.635 uuid: d3e35b87-a79e-44a1-975b-549d6ae06743 " __DATE__ ;
+static char __buildInfo[] = "CoInterpreter VMMaker.oscog-eem.636 uuid: 97945106-afaf-4c50-be03-a1806625c3b9 " __DATE__ ;
 char *__interpBuildInfo = __buildInfo;
 
 
@@ -1149,7 +1149,7 @@
 static void rewriteMethodCacheEntryForExternalPrimitiveToFunction(void (*localPrimAddress)(void));
 static sqInt roomToPushNArgs(sqInt n);
 static void runLeakCheckerForFullGC(sqInt fullGCFlag);
-static sqInt safeObjectAfter(sqInt oop);
+static usqInt safeObjectAfter(sqInt oop);
 static sqInt safePrintStringOf(sqInt oop);
 usqInt scavengeThresholdAddress(void);
 EXPORT(sqInt) sendInvokeCallbackContext(VMCallbackContext *vmCallbackContext);
@@ -2036,7 +2036,7 @@
 	/* 574 */ (void (*)(void))0,
 	/* 575 */ (void (*)(void))0,
  0 };
-const char *interpreterVersion = "Newspeak Virtual Machine CoInterpreter_VMMaker.oscog-eem.635";
+const char *interpreterVersion = "Newspeak Virtual Machine CoInterpreter_VMMaker.oscog-eem.636";
 sqInt minBackwardJumpCountForCompile = MinBackwardJumpCountForCompile /* 10 */;
 volatile int sendTrace;
 
@@ -4836,7 +4836,6 @@
 							GIV(framePointer) = localFP;
 							
 							ceEnterCogCodePopReceiverReg();
-							null;
 							goto l307;
 						}
 						localIP = pointerForOop(longAt(localFP + FoxIFSavedIP));
@@ -4854,7 +4853,7 @@
 					/* begin fetchNextBytecode */
 					currentBytecode = (byteAtPointer(++localIP)) + GIV(bytecodeSetSelector);
 
-					null;
+					/* return self */
 				l307:	/* end baseFrameReturn */;
 					goto l304;
 				}
@@ -23744,17 +23743,15 @@
     sqInt header1;
     sqInt header2;
     sqInt header3;
-    sqInt header4;
     usqInt lastWord;
     sqInt newFreeChunk;
     sqInt newOop;
-    sqInt next;
+    usqInt next;
     sqInt oop;
     sqInt realHeader;
     sqInt sz;
     sqInt sz1;
     sqInt sz2;
-    sqInt sz3;
     sqInt target;
     usqInt w;
 
@@ -23765,21 +23762,7 @@
 		/* begin objectAfterWhileForwarding: */
 		header2 = longAt(oop);
 		if ((header2 & MarkBit) == 0) {
-			/* begin objectAfter: */
-			if (!(asserta(oopisLessThan(oop, GIV(freeStart))))) {
-				error("no objects after the end of memory");
-			}
-			if (((longAt(oop)) & TypeMask) == HeaderTypeFree) {
-				sz2 = (longAt(oop)) & AllButTypeMask;
-			}
-			else {
-				/* begin sizeBitsOf: */
-				header3 = longAt(oop);
-				sz2 = ((header3 & TypeMask) == HeaderTypeSizeAndClass
-					? (longAt(oop - (BytesPerWord * 2))) & LongSizeMask
-					: header3 & SizeMask);
-			}
-			next = (oop + sz2) + (headerTypeBytes[(longAt(oop + sz2)) & TypeMask]);
+			next = ((sqInt) (objectAfter(oop)));
 			goto l1;
 		}
 		fwdBlock1 = (header2 & AllButMarkBitAndTypeMask) << 1;
@@ -23794,7 +23777,7 @@
 		else {
 			sz1 = realHeader & SizeMask;
 		}
-		next = (oop + sz1) + (headerTypeBytes[(longAt(oop + sz1)) & TypeMask]);
+		next = ((sqInt) ((oop + sz1) + (headerTypeBytes[(longAt(oop + sz1)) & TypeMask])));
 	l1:	/* end objectAfterWhileForwarding: */;
 		if (!(((longAt(oop)) & TypeMask) == HeaderTypeFree)) {
 
@@ -23848,18 +23831,18 @@
 	}
 	/* begin safeObjectAfter: */
 	if (((longAt(newFreeChunk)) & TypeMask) == HeaderTypeFree) {
-		sz3 = (longAt(newFreeChunk)) & AllButTypeMask;
+		sz2 = (longAt(newFreeChunk)) & AllButTypeMask;
 	}
 	else {
 		/* begin sizeBitsOf: */
-		header4 = longAt(newFreeChunk);
-		sz3 = ((header4 & TypeMask) == HeaderTypeSizeAndClass
+		header3 = longAt(newFreeChunk);
+		sz2 = ((header3 & TypeMask) == HeaderTypeSizeAndClass
 			? (longAt(newFreeChunk - (BytesPerWord * 2))) & LongSizeMask
-			: header4 & SizeMask);
+			: header3 & SizeMask);
 	}
-	next = ((newFreeChunk + sz3) >= GIV(freeStart)
+	next = ((newFreeChunk + sz2) >= GIV(freeStart)
 		? GIV(freeStart)
-		: (newFreeChunk + sz3) + (headerTypeBytes[(longAt(newFreeChunk + sz3)) & TypeMask]));
+		: (newFreeChunk + sz2) + (headerTypeBytes[(longAt(newFreeChunk + sz2)) & TypeMask]));
 	assert((next == GIV(freeStart))
 	 || (next == (oopFromChunk(GIV(compEnd)))));
 	if (next == GIV(freeStart)) {
@@ -29812,7 +29795,7 @@
 	 && ((integerValue ^ (integerValue << 1)) >= 0)) {
 		return ((integerValue << 1) | 1);
 	}
-	newLargeInteger = eeInstantiateSmallClassIndexformatnumSlots(ClassLargePositiveIntegerCompactIndex, 8 + (4 & 3), 1);
+	newLargeInteger = eeInstantiateSmallClassIndexformatnumSlots(ClassLargePositiveIntegerCompactIndex, 8 + ((4 - 4) & 3), 1);
 	byteAtput((newLargeInteger + BaseHeaderSize) + 3, (((usqInt) integerValue) >> 24) & 0xFF);
 	byteAtput((newLargeInteger + BaseHeaderSize) + 2, (((usqInt) integerValue) >> 16) & 0xFF);
 	byteAtput((newLargeInteger + BaseHeaderSize) + 1, (((usqInt) integerValue) >> 8) & 0xFF);
@@ -29898,7 +29881,7 @@
 	if (!(((highWord = ((usqInt) highWord) >> 8)) == 0)) {
 		sz += 1;
 	}
-	newLargeInteger = eeInstantiateSmallClassIndexformatnumSlots(ClassLargePositiveIntegerCompactIndex, 8 + (sz & 3), ((sqInt) 8 >> 2));
+	newLargeInteger = eeInstantiateSmallClassIndexformatnumSlots(ClassLargePositiveIntegerCompactIndex, 8 + ((4 - sz) & 3), ((sqInt) 8 >> 2));
 	byteAtput((newLargeInteger + BaseHeaderSize) + 7, (((unsigned sqLong)integerValue) >> 56) & 0xFF);
 	byteAtput((newLargeInteger + BaseHeaderSize) + 6, (((unsigned sqLong)integerValue) >> 48) & 0xFF);
 	byteAtput((newLargeInteger + BaseHeaderSize) + 5, (((unsigned sqLong)integerValue) >> 40) & 0xFF);
@@ -50274,7 +50257,7 @@
 	given object or free chunk in memory. Return freeStart when
 	enumeration is complete. This is for assertion checking only. */
 
-static sqInt
+static usqInt
 safeObjectAfter(sqInt oop)
 {   DECL_MAYBE_SQ_GLOBAL_STRUCT
     sqInt header;

Modified: branches/Cog/nscogsrc/vm/interp.h
===================================================================
--- branches/Cog/nscogsrc/vm/interp.h	2014-03-09 19:17:15 UTC (rev 2874)
+++ branches/Cog/nscogsrc/vm/interp.h	2014-03-10 20:26:23 UTC (rev 2875)
@@ -1,5 +1,5 @@
 /* Automatically generated by
-	CCodeGeneratorGlobalStructure VMMaker.oscog-eem.635 uuid: d3e35b87-a79e-44a1-975b-549d6ae06743
+	CCodeGeneratorGlobalStructure VMMaker.oscog-eem.636 uuid: 97945106-afaf-4c50-be03-a1806625c3b9
  */
 
 #define VM_PROXY_MAJOR 1

Modified: branches/Cog/nscogsrc/vm/vmCallback.h
===================================================================
--- branches/Cog/nscogsrc/vm/vmCallback.h	2014-03-09 19:17:15 UTC (rev 2874)
+++ branches/Cog/nscogsrc/vm/vmCallback.h	2014-03-10 20:26:23 UTC (rev 2875)
@@ -1,5 +1,5 @@
 /* Automatically generated by
-	CCodeGeneratorGlobalStructure VMMaker.oscog-eem.635 uuid: d3e35b87-a79e-44a1-975b-549d6ae06743
+	CCodeGeneratorGlobalStructure VMMaker.oscog-eem.636 uuid: 97945106-afaf-4c50-be03-a1806625c3b9
  */
 
 #define VM_CALLBACK_INC 1

Modified: branches/Cog/nsspursrc/vm/cointerp.c
===================================================================
--- branches/Cog/nsspursrc/vm/cointerp.c	2014-03-09 19:17:15 UTC (rev 2874)
+++ branches/Cog/nsspursrc/vm/cointerp.c	2014-03-10 20:26:23 UTC (rev 2875)
@@ -1,9 +1,9 @@
 /* Automatically generated by
-	CCodeGeneratorGlobalStructure VMMaker.oscog-eem.635 uuid: d3e35b87-a79e-44a1-975b-549d6ae06743
+	CCodeGeneratorGlobalStructure VMMaker.oscog-eem.636 uuid: 97945106-afaf-4c50-be03-a1806625c3b9
    from
-	CoInterpreter VMMaker.oscog-eem.635 uuid: d3e35b87-a79e-44a1-975b-549d6ae06743
+	CoInterpreter VMMaker.oscog-eem.636 uuid: 97945106-afaf-4c50-be03-a1806625c3b9
  */
-static char __buildInfo[] = "CoInterpreter VMMaker.oscog-eem.635 uuid: d3e35b87-a79e-44a1-975b-549d6ae06743 " __DATE__ ;
+static char __buildInfo[] = "CoInterpreter VMMaker.oscog-eem.636 uuid: 97945106-afaf-4c50-be03-a1806625c3b9 " __DATE__ ;
 char *__interpBuildInfo = __buildInfo;
 
 
@@ -1476,6 +1476,7 @@
 _iss usqInt freeOldSpaceStart;
 _iss sqInt longRunningPrimitiveCheckMethod;
 _iss sqInt profileMethod;
+_iss sqInt classTableIndex;
 _iss sqInt ephemeronQueue;
 _iss sqInt lastMethodCacheProbeWrite;
 _iss sqInt lkupClass;
@@ -1483,7 +1484,6 @@
 _iss sqInt metaclassNumSlots;
 _iss usqLong nextWakeupUsecs;
 _iss sqInt preemptionYields;
-_iss sqInt classTableIndex;
 _iss sqInt cogCompiledCodeCompactionCalledFor;
 _iss sqInt growHeadroom;
 _iss sqInt highestRunnableProcessPriority;
@@ -2191,7 +2191,7 @@
 	/* 575 */ (void (*)(void))0,
  0 };
 usqInt heapBase;
-const char *interpreterVersion = "Newspeak Virtual Machine CoInterpreter_VMMaker.oscog-eem.635";
+const char *interpreterVersion = "Newspeak Virtual Machine CoInterpreter_VMMaker.oscog-eem.636";
 sqInt minBackwardJumpCountForCompile = MinBackwardJumpCountForCompile /* 10 */;
 volatile int sendTrace;
 
@@ -25712,20 +25712,26 @@
 							assert((classAtIndex(classIndex)) == classOrNil);
 							assert((classOrNil == GIV(nilObj))
 							 || (addressCouldBeClassObj(classOrNil)));
-							if ((classOrNil != GIV(nilObj))
-							 && ((expungeUnmarked
- && (!(isMarked(classOrNil))))
-							 || ((rawHashBitsOf(classOrNil)) != classIndex))) {
-								/* begin storePointerUnchecked:ofObject:withValue: */
-								assert(!(isForwarded(classTablePage)));
-								longAtput((classTablePage + (BaseHeaderSize)) + ((classIndex & ((1 << 10) - 1)) << 2), GIV(nilObj));
-								assert((expungeUnmarked
- && (!(isMarked(classOrNil))))
-								 || ((classAtIndex(rawHashBitsOf(classOrNil))) == classOrNil));
+							if (classOrNil == GIV(nilObj)) {
 								if (classIndex < GIV(classTableIndex)) {
 									GIV(classTableIndex) = classIndex;
 								}
 							}
+							else {
+								if ((expungeUnmarked
+ && (!(isMarked(classOrNil))))
+								 || ((rawHashBitsOf(classOrNil)) != classIndex)) {
+									/* begin storePointerUnchecked:ofObject:withValue: */
+									assert(!(isForwarded(classTablePage)));
+									longAtput((classTablePage + (BaseHeaderSize)) + ((classIndex & ((1 << 10) - 1)) << 2), GIV(nilObj));
+									assert((expungeUnmarked
+ && (!(isMarked(classOrNil))))
+									 || ((classAtIndex(rawHashBitsOf(classOrNil))) == classOrNil));
+									if (classIndex < GIV(classTableIndex)) {
+										GIV(classTableIndex) = classIndex;
+									}
+								}
+							}
 						}
 					}
 				}
@@ -37865,7 +37871,7 @@
 		return ((integerValue << 1) | 1);
 	}
 	/* begin eeInstantiateSmallClassIndex:format:numSlots: */
-	objFormat = 16 + (4 & ((wordSize()) - 1));
+	objFormat = 16 + ((8 - 4) & ((wordSize()) - 1));
 	assert((1 >= 0)
 	 && (ClassLargePositiveIntegerCompactIndex != 0));
 	assert(((objFormat < (firstByteFormat())
@@ -37985,7 +37991,7 @@
 		sz += 1;
 	}
 	/* begin eeInstantiateSmallClassIndex:format:numSlots: */
-	objFormat = 16 + (sz & ((wordSize()) - 1));
+	objFormat = 16 + ((8 - sz) & ((wordSize()) - 1));
 	assert(((((sqInt) 8 >> 2)) >= 0)
 	 && (ClassLargePositiveIntegerCompactIndex != 0));
 	assert(((objFormat < (firstByteFormat())

Modified: branches/Cog/nsspursrc/vm/cointerp.h
===================================================================
--- branches/Cog/nsspursrc/vm/cointerp.h	2014-03-09 19:17:15 UTC (rev 2874)
+++ branches/Cog/nsspursrc/vm/cointerp.h	2014-03-10 20:26:23 UTC (rev 2875)
@@ -1,5 +1,5 @@
 /* Automatically generated by
-	CCodeGeneratorGlobalStructure VMMaker.oscog-eem.635 uuid: d3e35b87-a79e-44a1-975b-549d6ae06743
+	CCodeGeneratorGlobalStructure VMMaker.oscog-eem.636 uuid: 97945106-afaf-4c50-be03-a1806625c3b9
  */
 
 

Modified: branches/Cog/nsspursrc/vm/gcc3x-cointerp.c
===================================================================
--- branches/Cog/nsspursrc/vm/gcc3x-cointerp.c	2014-03-09 19:17:15 UTC (rev 2874)
+++ branches/Cog/nsspursrc/vm/gcc3x-cointerp.c	2014-03-10 20:26:23 UTC (rev 2875)
@@ -2,11 +2,11 @@
 
 
 /* Automatically generated by
-	CCodeGeneratorGlobalStructure VMMaker.oscog-eem.635 uuid: d3e35b87-a79e-44a1-975b-549d6ae06743
+	CCodeGeneratorGlobalStructure VMMaker.oscog-eem.636 uuid: 97945106-afaf-4c50-be03-a1806625c3b9
    from
-	CoInterpreter VMMaker.oscog-eem.635 uuid: d3e35b87-a79e-44a1-975b-549d6ae06743
+	CoInterpreter VMMaker.oscog-eem.636 uuid: 97945106-afaf-4c50-be03-a1806625c3b9
  */
-static char __buildInfo[] = "CoInterpreter VMMaker.oscog-eem.635 uuid: d3e35b87-a79e-44a1-975b-549d6ae06743 " __DATE__ ;
+static char __buildInfo[] = "CoInterpreter VMMaker.oscog-eem.636 uuid: 97945106-afaf-4c50-be03-a1806625c3b9 " __DATE__ ;
 char *__interpBuildInfo = __buildInfo;
 
 
@@ -1479,6 +1479,7 @@
 _iss usqInt freeOldSpaceStart;
 _iss sqInt longRunningPrimitiveCheckMethod;
 _iss sqInt profileMethod;
+_iss sqInt classTableIndex;
 _iss sqInt ephemeronQueue;
 _iss sqInt lastMethodCacheProbeWrite;
 _iss sqInt lkupClass;
@@ -1486,7 +1487,6 @@
 _iss sqInt metaclassNumSlots;
 _iss usqLong nextWakeupUsecs;
 _iss sqInt preemptionYields;
-_iss sqInt classTableIndex;
 _iss sqInt cogCompiledCodeCompactionCalledFor;
 _iss sqInt growHeadroom;
 _iss sqInt highestRunnableProcessPriority;
@@ -2194,7 +2194,7 @@
 	/* 575 */ (void (*)(void))0,
  0 };
 usqInt heapBase;
-const char *interpreterVersion = "Newspeak Virtual Machine CoInterpreter_VMMaker.oscog-eem.635";
+const char *interpreterVersion = "Newspeak Virtual Machine CoInterpreter_VMMaker.oscog-eem.636";
 sqInt minBackwardJumpCountForCompile = MinBackwardJumpCountForCompile /* 10 */;
 volatile int sendTrace;
 
@@ -25721,20 +25721,26 @@
 							assert((classAtIndex(classIndex)) == classOrNil);
 							assert((classOrNil == GIV(nilObj))
 							 || (addressCouldBeClassObj(classOrNil)));
-							if ((classOrNil != GIV(nilObj))
-							 && ((expungeUnmarked
- && (!(isMarked(classOrNil))))
-							 || ((rawHashBitsOf(classOrNil)) != classIndex))) {
-								/* begin storePointerUnchecked:ofObject:withValue: */
-								assert(!(isForwarded(classTablePage)));
-								longAtput((classTablePage + (BaseHeaderSize)) + ((classIndex & ((1 << 10) - 1)) << 2), GIV(nilObj));
-								assert((expungeUnmarked
- && (!(isMarked(classOrNil))))
-								 || ((classAtIndex(rawHashBitsOf(classOrNil))) == classOrNil));
+							if (classOrNil == GIV(nilObj)) {
 								if (classIndex < GIV(classTableIndex)) {
 									GIV(classTableIndex) = classIndex;
 								}
 							}
+							else {
+								if ((expungeUnmarked
+ && (!(isMarked(classOrNil))))
+								 || ((rawHashBitsOf(classOrNil)) != classIndex)) {
+									/* begin storePointerUnchecked:ofObject:withValue: */
+									assert(!(isForwarded(classTablePage)));
+									longAtput((classTablePage + (BaseHeaderSize)) + ((classIndex & ((1 << 10) - 1)) << 2), GIV(nilObj));
+									assert((expungeUnmarked
+ && (!(isMarked(classOrNil))))
+									 || ((classAtIndex(rawHashBitsOf(classOrNil))) == classOrNil));
+									if (classIndex < GIV(classTableIndex)) {
+										GIV(classTableIndex) = classIndex;
+									}
+								}
+							}
 						}
 					}
 				}
@@ -37874,7 +37880,7 @@
 		return ((integerValue << 1) | 1);
 	}
 	/* begin eeInstantiateSmallClassIndex:format:numSlots: */
-	objFormat = 16 + (4 & ((wordSize()) - 1));
+	objFormat = 16 + ((8 - 4) & ((wordSize()) - 1));
 	assert((1 >= 0)
 	 && (ClassLargePositiveIntegerCompactIndex != 0));
 	assert(((objFormat < (firstByteFormat())
@@ -37994,7 +38000,7 @@
 		sz += 1;
 	}
 	/* begin eeInstantiateSmallClassIndex:format:numSlots: */
-	objFormat = 16 + (sz & ((wordSize()) - 1));
+	objFormat = 16 + ((8 - sz) & ((wordSize()) - 1));
 	assert(((((sqInt) 8 >> 2)) >= 0)
 	 && (ClassLargePositiveIntegerCompactIndex != 0));
 	assert(((objFormat < (firstByteFormat())

Modified: branches/Cog/nsspursrc/vm/interp.h
===================================================================
--- branches/Cog/nsspursrc/vm/interp.h	2014-03-09 19:17:15 UTC (rev 2874)
+++ branches/Cog/nsspursrc/vm/interp.h	2014-03-10 20:26:23 UTC (rev 2875)
@@ -1,5 +1,5 @@
 /* Automatically generated by
-	CCodeGeneratorGlobalStructure VMMaker.oscog-eem.635 uuid: d3e35b87-a79e-44a1-975b-549d6ae06743
+	CCodeGeneratorGlobalStructure VMMaker.oscog-eem.636 uuid: 97945106-afaf-4c50-be03-a1806625c3b9
  */
 
 #define VM_PROXY_MAJOR 1

Modified: branches/Cog/nsspursrc/vm/vmCallback.h
===================================================================
--- branches/Cog/nsspursrc/vm/vmCallback.h	2014-03-09 19:17:15 UTC (rev 2874)
+++ branches/Cog/nsspursrc/vm/vmCallback.h	2014-03-10 20:26:23 UTC (rev 2875)
@@ -1,5 +1,5 @@
 /* Automatically generated by
-	CCodeGeneratorGlobalStructure VMMaker.oscog-eem.635 uuid: d3e35b87-a79e-44a1-975b-549d6ae06743
+	CCodeGeneratorGlobalStructure VMMaker.oscog-eem.636 uuid: 97945106-afaf-4c50-be03-a1806625c3b9
  */
 
 #define VM_CALLBACK_INC 1

Modified: branches/Cog/nsspurstacksrc/vm/gcc3x-interp.c
===================================================================
--- branches/Cog/nsspurstacksrc/vm/gcc3x-interp.c	2014-03-09 19:17:15 UTC (rev 2874)
+++ branches/Cog/nsspurstacksrc/vm/gcc3x-interp.c	2014-03-10 20:26:23 UTC (rev 2875)
@@ -2,11 +2,11 @@
 
 
 /* Automatically generated by
-	CCodeGeneratorGlobalStructure VMMaker.oscog-eem.635 uuid: d3e35b87-a79e-44a1-975b-549d6ae06743
+	CCodeGeneratorGlobalStructure VMMaker.oscog-eem.636 uuid: 97945106-afaf-4c50-be03-a1806625c3b9
    from
-	StackInterpreter VMMaker.oscog-eem.635 uuid: d3e35b87-a79e-44a1-975b-549d6ae06743
+	StackInterpreter VMMaker.oscog-eem.636 uuid: 97945106-afaf-4c50-be03-a1806625c3b9
  */
-static char __buildInfo[] = "StackInterpreter VMMaker.oscog-eem.635 uuid: d3e35b87-a79e-44a1-975b-549d6ae06743 " __DATE__ ;
+static char __buildInfo[] = "StackInterpreter VMMaker.oscog-eem.636 uuid: 97945106-afaf-4c50-be03-a1806625c3b9 " __DATE__ ;
 char *__interpBuildInfo = __buildInfo;
 
 
@@ -1286,6 +1286,7 @@
 _iss sqInt longRunningPrimitiveCheckMethod;
 _iss sqInt longRunningPrimitiveCheckSemaphore;
 _iss sqInt profileMethod;
+_iss sqInt classTableIndex;
 _iss sqInt ephemeronQueue;
 _iss sqInt lastMethodCacheProbeWrite;
 _iss sqInt growHeadroom;
@@ -1293,7 +1294,6 @@
 _iss usqLong nextWakeupUsecs;
 _iss sqInt preemptionYields;
 _iss sqInt profileSemaphore;
-_iss sqInt classTableIndex;
 _iss sqInt highestRunnableProcessPriority;
 _iss usqLong longRunningPrimitiveStartUsecs;
 _iss usqLong longRunningPrimitiveStopUsecs;
@@ -1981,7 +1981,7 @@
  0 };
 char * breakSelector;
 sqInt breakSelectorLength = -1;
-const char *interpreterVersion = "Newspeak Virtual Machine StackInterpreter_VMMaker.oscog-eem.635";
+const char *interpreterVersion = "Newspeak Virtual Machine StackInterpreter_VMMaker.oscog-eem.636";
 volatile int sendTrace;
 sqInt suppressHeartbeatFlag;
 
@@ -21944,20 +21944,26 @@
 							assert((classAtIndex(classIndex)) == classOrNil);
 							assert((classOrNil == GIV(nilObj))
 							 || (addressCouldBeClassObj(classOrNil)));
-							if ((classOrNil != GIV(nilObj))
-							 && ((expungeUnmarked
- && (!(isMarked(classOrNil))))
-							 || ((rawHashBitsOf(classOrNil)) != classIndex))) {
-								/* begin storePointerUnchecked:ofObject:withValue: */
-								assert(!(isForwarded(classTablePage)));
-								longAtput((classTablePage + (BaseHeaderSize)) + ((classIndex & ((1 << 10) - 1)) << 2), GIV(nilObj));
-								assert((expungeUnmarked
- && (!(isMarked(classOrNil))))
-								 || ((classAtIndex(rawHashBitsOf(classOrNil))) == classOrNil));
+							if (classOrNil == GIV(nilObj)) {
 								if (classIndex < GIV(classTableIndex)) {
 									GIV(classTableIndex) = classIndex;
 								}
 							}
+							else {
+								if ((expungeUnmarked
+ && (!(isMarked(classOrNil))))
+								 || ((rawHashBitsOf(classOrNil)) != classIndex)) {
+									/* begin storePointerUnchecked:ofObject:withValue: */
+									assert(!(isForwarded(classTablePage)));
+									longAtput((classTablePage + (BaseHeaderSize)) + ((classIndex & ((1 << 10) - 1)) << 2), GIV(nilObj));
+									assert((expungeUnmarked
+ && (!(isMarked(classOrNil))))
+									 || ((classAtIndex(rawHashBitsOf(classOrNil))) == classOrNil));
+									if (classIndex < GIV(classTableIndex)) {
+										GIV(classTableIndex) = classIndex;
+									}
+								}
+							}
 						}
 					}
 				}
@@ -32360,7 +32366,7 @@
 		return ((integerValue << 1) | 1);
 	}
 	/* begin eeInstantiateSmallClassIndex:format:numSlots: */
-	objFormat = 16 + (4 & ((wordSize()) - 1));
+	objFormat = 16 + ((8 - 4) & ((wordSize()) - 1));
 	assert((1 >= 0)
 	 && (ClassLargePositiveIntegerCompactIndex != 0));
 	assert(((objFormat < (firstByteFormat())
@@ -32480,7 +32486,7 @@
 		sz += 1;
 	}
 	/* begin eeInstantiateSmallClassIndex:format:numSlots: */
-	objFormat = 16 + (sz & ((wordSize()) - 1));
+	objFormat = 16 + ((8 - sz) & ((wordSize()) - 1));
 	assert(((((sqInt) 8 >> 2)) >= 0)
 	 && (ClassLargePositiveIntegerCompactIndex != 0));
 	assert(((objFormat < (firstByteFormat())

Modified: branches/Cog/nsspurstacksrc/vm/interp.c
===================================================================
--- branches/Cog/nsspurstacksrc/vm/interp.c	2014-03-09 19:17:15 UTC (rev 2874)
+++ branches/Cog/nsspurstacksrc/vm/interp.c	2014-03-10 20:26:23 UTC (rev 2875)
@@ -1,9 +1,9 @@
 /* Automatically generated by
-	CCodeGeneratorGlobalStructure VMMaker.oscog-eem.635 uuid: d3e35b87-a79e-44a1-975b-549d6ae06743
+	CCodeGeneratorGlobalStructure VMMaker.oscog-eem.636 uuid: 97945106-afaf-4c50-be03-a1806625c3b9
    from
-	StackInterpreter VMMaker.oscog-eem.635 uuid: d3e35b87-a79e-44a1-975b-549d6ae06743
+	StackInterpreter VMMaker.oscog-eem.636 uuid: 97945106-afaf-4c50-be03-a1806625c3b9
  */
-static char __buildInfo[] = "StackInterpreter VMMaker.oscog-eem.635 uuid: d3e35b87-a79e-44a1-975b-549d6ae06743 " __DATE__ ;
+static char __buildInfo[] = "StackInterpreter VMMaker.oscog-eem.636 uuid: 97945106-afaf-4c50-be03-a1806625c3b9 " __DATE__ ;
 char *__interpBuildInfo = __buildInfo;
 
 
@@ -1283,6 +1283,7 @@
 _iss sqInt longRunningPrimitiveCheckMethod;
 _iss sqInt longRunningPrimitiveCheckSemaphore;
 _iss sqInt profileMethod;
+_iss sqInt classTableIndex;
 _iss sqInt ephemeronQueue;
 _iss sqInt lastMethodCacheProbeWrite;
 _iss sqInt growHeadroom;
@@ -1290,7 +1291,6 @@
 _iss usqLong nextWakeupUsecs;
 _iss sqInt preemptionYields;
 _iss sqInt profileSemaphore;
-_iss sqInt classTableIndex;
 _iss sqInt highestRunnableProcessPriority;
 _iss usqLong longRunningPrimitiveStartUsecs;
 _iss usqLong longRunningPrimitiveStopUsecs;
@@ -1978,7 +1978,7 @@
  0 };
 char * breakSelector;
 sqInt breakSelectorLength = -1;
-const char *interpreterVersion = "Newspeak Virtual Machine StackInterpreter_VMMaker.oscog-eem.635";
+const char *interpreterVersion = "Newspeak Virtual Machine StackInterpreter_VMMaker.oscog-eem.636";
 volatile int sendTrace;
 sqInt suppressHeartbeatFlag;
 
@@ -21935,20 +21935,26 @@
 							assert((classAtIndex(classIndex)) == classOrNil);
 							assert((classOrNil == GIV(nilObj))
 							 || (addressCouldBeClassObj(classOrNil)));
-							if ((classOrNil != GIV(nilObj))
-							 && ((expungeUnmarked
- && (!(isMarked(classOrNil))))
-							 || ((rawHashBitsOf(classOrNil)) != classIndex))) {
-								/* begin storePointerUnchecked:ofObject:withValue: */
-								assert(!(isForwarded(classTablePage)));
-								longAtput((classTablePage + (BaseHeaderSize)) + ((classIndex & ((1 << 10) - 1)) << 2), GIV(nilObj));
-								assert((expungeUnmarked
- && (!(isMarked(classOrNil))))
-								 || ((classAtIndex(rawHashBitsOf(classOrNil))) == classOrNil));
+							if (classOrNil == GIV(nilObj)) {
 								if (classIndex < GIV(classTableIndex)) {
 									GIV(classTableIndex) = classIndex;
 								}
 							}
+							else {
+								if ((expungeUnmarked
+ && (!(isMarked(classOrNil))))
+								 || ((rawHashBitsOf(classOrNil)) != classIndex)) {
+									/* begin storePointerUnchecked:ofObject:withValue: */
+									assert(!(isForwarded(classTablePage)));
+									longAtput((classTablePage + (BaseHeaderSize)) + ((classIndex & ((1 << 10) - 1)) << 2), GIV(nilObj));
+									assert((expungeUnmarked
+ && (!(isMarked(classOrNil))))
+									 || ((classAtIndex(rawHashBitsOf(classOrNil))) == classOrNil));
+									if (classIndex < GIV(classTableIndex)) {
+										GIV(classTableIndex) = classIndex;
+									}
+								}
+							}
 						}
 					}
 				}
@@ -32351,7 +32357,7 @@
 		return ((integerValue << 1) | 1);
 	}
 	/* begin eeInstantiateSmallClassIndex:format:numSlots: */
-	objFormat = 16 + (4 & ((wordSize()) - 1));
+	objFormat = 16 + ((8 - 4) & ((wordSize()) - 1));
 	assert((1 >= 0)
 	 && (ClassLargePositiveIntegerCompactIndex != 0));
 	assert(((objFormat < (firstByteFormat())
@@ -32471,7 +32477,7 @@
 		sz += 1;
 	}
 	/* begin eeInstantiateSmallClassIndex:format:numSlots: */
-	objFormat = 16 + (sz & ((wordSize()) - 1));
+	objFormat = 16 + ((8 - sz) & ((wordSize()) - 1));
 	assert(((((sqInt) 8 >> 2)) >= 0)
 	 && (ClassLargePositiveIntegerCompactIndex != 0));
 	assert(((objFormat < (firstByteFormat())

Modified: branches/Cog/nsspurstacksrc/vm/interp.h
===================================================================
--- branches/Cog/nsspurstacksrc/vm/interp.h	2014-03-09 19:17:15 UTC (rev 2874)
+++ branches/Cog/nsspurstacksrc/vm/interp.h	2014-03-10 20:26:23 UTC (rev 2875)
@@ -1,5 +1,5 @@
 /* Automatically generated by
-	CCodeGeneratorGlobalStructure VMMaker.oscog-eem.635 uuid: d3e35b87-a79e-44a1-975b-549d6ae06743
+	CCodeGeneratorGlobalStructure VMMaker.oscog-eem.636 uuid: 97945106-afaf-4c50-be03-a1806625c3b9
  */
 
 #define VM_PROXY_MAJOR 1

Modified: branches/Cog/nsspurstacksrc/vm/vmCallback.h
===================================================================
--- branches/Cog/nsspurstacksrc/vm/vmCallback.h	2014-03-09 19:17:15 UTC (rev 2874)
+++ branches/Cog/nsspurstacksrc/vm/vmCallback.h	2014-03-10 20:26:23 UTC (rev 2875)
@@ -1,5 +1,5 @@
 /* Automatically generated by
-	CCodeGeneratorGlobalStructure VMMaker.oscog-eem.635 uuid: d3e35b87-a79e-44a1-975b-549d6ae06743
+	CCodeGeneratorGlobalStructure VMMaker.oscog-eem.636 uuid: 97945106-afaf-4c50-be03-a1806625c3b9
  */
 
 #define VM_CALLBACK_INC 1


Property changes on: branches/Cog/platforms/Cross/vm/sqSCCSVersion.h
___________________________________________________________________
Modified: checkindate
   - Sun Mar  9 12:14:16 PDT 2014
   + Mon Mar 10 13:25:38 PDT 2014

Modified: branches/Cog/spursrc/vm/cointerp.c
===================================================================
--- branches/Cog/spursrc/vm/cointerp.c	2014-03-09 19:17:15 UTC (rev 2874)
+++ branches/Cog/spursrc/vm/cointerp.c	2014-03-10 20:26:23 UTC (rev 2875)
@@ -1,9 +1,9 @@
 /* Automatically generated by
-	CCodeGeneratorGlobalStructure VMMaker.oscog-eem.635 uuid: d3e35b87-a79e-44a1-975b-549d6ae06743
+	CCodeGeneratorGlobalStructure VMMaker.oscog-eem.636 uuid: 97945106-afaf-4c50-be03-a1806625c3b9
    from
-	CoInterpreter VMMaker.oscog-eem.635 uuid: d3e35b87-a79e-44a1-975b-549d6ae06743
+	CoInterpreter VMMaker.oscog-eem.636 uuid: 97945106-afaf-4c50-be03-a1806625c3b9
  */
-static char __buildInfo[] = "CoInterpreter VMMaker.oscog-eem.635 uuid: d3e35b87-a79e-44a1-975b-549d6ae06743 " __DATE__ ;
+static char __buildInfo[] = "CoInterpreter VMMaker.oscog-eem.636 uuid: 97945106-afaf-4c50-be03-a1806625c3b9 " __DATE__ ;
 char *__interpBuildInfo = __buildInfo;
 
 
@@ -1466,13 +1466,13 @@
 _iss usqInt freeOldSpaceStart;
 _iss sqInt longRunningPrimitiveCheckMethod;
 _iss sqInt profileMethod;
+_iss sqInt classTableIndex;
 _iss sqInt ephemeronQueue;
 _iss sqInt lastMethodCacheProbeWrite;
 _iss sqInt lkupClass;
 _iss sqInt metaclassNumSlots;
 _iss usqLong nextWakeupUsecs;
 _iss sqInt preemptionYields;
-_iss sqInt classTableIndex;
 _iss sqInt cogCompiledCodeCompactionCalledFor;
 _iss sqInt growHeadroom;
 _iss sqInt highestRunnableProcessPriority;
@@ -2181,7 +2181,7 @@
 	/* 575 */ (void (*)(void))0,
  0 };
 usqInt heapBase;
-const char *interpreterVersion = "Croquet Closure Cog VM [CoInterpreter VMMaker.oscog-eem.635]";
+const char *interpreterVersion = "Croquet Closure Cog VM [CoInterpreter VMMaker.oscog-eem.636]";
 sqInt minBackwardJumpCountForCompile = MinBackwardJumpCountForCompile /* 10 */;
 volatile int sendTrace;
 
@@ -6397,7 +6397,6 @@
 						/* begin internalPush: */
 						longAtPointerput((localSP -= BytesPerOop), longAt((rcvr1 + (BaseHeaderSize)) + (byte3 << 2)));
 					}
-					null;
 					goto l4;
 				}
 				if (opType == 3) {
@@ -6407,7 +6406,6 @@
 					assert(GIV(method) == (iframeMethod(localFP)));
 					object = longAt((GIV(method) + (BaseHeaderSize)) + ((byte3 + LiteralStart) << 2));
 					longAtPointerput((localSP -= BytesPerOop), object);
-					null;
 					goto l4;
 				}
 				if (opType == 4) {
@@ -6435,7 +6433,6 @@
 					/* begin internalPush: */
 					longAtPointerput((localSP -= BytesPerOop), longAt((litVar1 + (BaseHeaderSize)) + (ValueIndex << 2)));
 
-					null;
 					goto l4;
 				}
 				top = longAtPointer(localSP);
@@ -20790,20 +20787,26 @@
 							assert((classAtIndex(classIndex)) == classOrNil);
 							assert((classOrNil == GIV(nilObj))
 							 || (addressCouldBeClassObj(classOrNil)));
-							if ((classOrNil != GIV(nilObj))
-							 && ((expungeUnmarked
- && (!(isMarked(classOrNil))))
-							 || ((rawHashBitsOf(classOrNil)) != classIndex))) {
-								/* begin storePointerUnchecked:ofObject:withValue: */
-								assert(!(isForwarded(classTablePage)));
-								longAtput((classTablePage + (BaseHeaderSize)) + ((classIndex & ((1 << 10) - 1)) << 2), GIV(nilObj));
-								assert((expungeUnmarked
- && (!(isMarked(classOrNil))))
-								 || ((classAtIndex(rawHashBitsOf(classOrNil))) == classOrNil));
+							if (classOrNil == GIV(nilObj)) {
 								if (classIndex < GIV(classTableIndex)) {
 									GIV(classTableIndex) = classIndex;
 								}
 							}
+							else {
+								if ((expungeUnmarked
+ && (!(isMarked(classOrNil))))
+								 || ((rawHashBitsOf(classOrNil)) != classIndex)) {
+									/* begin storePointerUnchecked:ofObject:withValue: */
+									assert(!(isForwarded(classTablePage)));
+									longAtput((classTablePage + (BaseHeaderSize)) + ((classIndex & ((1 << 10) - 1)) << 2), GIV(nilObj));
+									assert((expungeUnmarked
+ && (!(isMarked(classOrNil))))
+									 || ((classAtIndex(rawHashBitsOf(classOrNil))) == classOrNil));
+									if (classIndex < GIV(classTableIndex)) {
+										GIV(classTableIndex) = classIndex;
+									}
+								}
+							}
 						}
 					}
 				}
@@ -32506,7 +32509,7 @@
 		return ((integerValue << 1) | 1);
 	}
 	/* begin eeInstantiateSmallClassIndex:format:numSlots: */
-	objFormat = 16 + (4 & ((wordSize()) - 1));
+	objFormat = 16 + ((8 - 4) & ((wordSize()) - 1));
 	assert((1 >= 0)
 	 && (ClassLargePositiveIntegerCompactIndex != 0));
 	assert(((objFormat < (firstByteFormat())
@@ -32626,7 +32629,7 @@
 		sz += 1;
 	}
 	/* begin eeInstantiateSmallClassIndex:format:numSlots: */
-	objFormat = 16 + (sz & ((wordSize()) - 1));
+	objFormat = 16 + ((8 - sz) & ((wordSize()) - 1));
 	assert(((((sqInt) 8 >> 2)) >= 0)
 	 && (ClassLargePositiveIntegerCompactIndex != 0));
 	assert(((objFormat < (firstByteFormat())

Modified: branches/Cog/spursrc/vm/cointerp.h
===================================================================
--- branches/Cog/spursrc/vm/cointerp.h	2014-03-09 19:17:15 UTC (rev 2874)
+++ branches/Cog/spursrc/vm/cointerp.h	2014-03-10 20:26:23 UTC (rev 2875)
@@ -1,5 +1,5 @@
 /* Automatically generated by
-	CCodeGeneratorGlobalStructure VMMaker.oscog-eem.635 uuid: d3e35b87-a79e-44a1-975b-549d6ae06743
+	CCodeGeneratorGlobalStructure VMMaker.oscog-eem.636 uuid: 97945106-afaf-4c50-be03-a1806625c3b9
  */
 
 

Modified: branches/Cog/spursrc/vm/gcc3x-cointerp.c
===================================================================
--- branches/Cog/spursrc/vm/gcc3x-cointerp.c	2014-03-09 19:17:15 UTC (rev 2874)
+++ branches/Cog/spursrc/vm/gcc3x-cointerp.c	2014-03-10 20:26:23 UTC (rev 2875)
@@ -2,11 +2,11 @@
 
 
 /* Automatically generated by
-	CCodeGeneratorGlobalStructure VMMaker.oscog-eem.635 uuid: d3e35b87-a79e-44a1-975b-549d6ae06743
+	CCodeGeneratorGlobalStructure VMMaker.oscog-eem.636 uuid: 97945106-afaf-4c50-be03-a1806625c3b9
    from
-	CoInterpreter VMMaker.oscog-eem.635 uuid: d3e35b87-a79e-44a1-975b-549d6ae06743
+	CoInterpreter VMMaker.oscog-eem.636 uuid: 97945106-afaf-4c50-be03-a1806625c3b9
  */
-static char __buildInfo[] = "CoInterpreter VMMaker.oscog-eem.635 uuid: d3e35b87-a79e-44a1-975b-549d6ae06743 " __DATE__ ;
+static char __buildInfo[] = "CoInterpreter VMMaker.oscog-eem.636 uuid: 97945106-afaf-4c50-be03-a1806625c3b9 " __DATE__ ;
 char *__interpBuildInfo = __buildInfo;
 
 
@@ -1469,13 +1469,13 @@
 _iss usqInt freeOldSpaceStart;
 _iss sqInt longRunningPrimitiveCheckMethod;
 _iss sqInt profileMethod;
+_iss sqInt classTableIndex;
 _iss sqInt ephemeronQueue;
 _iss sqInt lastMethodCacheProbeWrite;
 _iss sqInt lkupClass;
 _iss sqInt metaclassNumSlots;
 _iss usqLong nextWakeupUsecs;
 _iss sqInt preemptionYields;
-_iss sqInt classTableIndex;
 _iss sqInt cogCompiledCodeCompactionCalledFor;
 _iss sqInt growHeadroom;
 _iss sqInt highestRunnableProcessPriority;
@@ -2184,7 +2184,7 @@
 	/* 575 */ (void (*)(void))0,
  0 };
 usqInt heapBase;
-const char *interpreterVersion = "Croquet Closure Cog VM [CoInterpreter VMMaker.oscog-eem.635]";
+const char *interpreterVersion = "Croquet Closure Cog VM [CoInterpreter VMMaker.oscog-eem.636]";
 sqInt minBackwardJumpCountForCompile = MinBackwardJumpCountForCompile /* 10 */;
 volatile int sendTrace;
 
@@ -6406,7 +6406,6 @@
 						/* begin internalPush: */
 						longAtPointerput((localSP -= BytesPerOop), longAt((rcvr1 + (BaseHeaderSize)) + (byte3 << 2)));
 					}
-					null;
 					goto l4;
 				}
 				if (opType == 3) {
@@ -6416,7 +6415,6 @@
 					assert(GIV(method) == (iframeMethod(localFP)));
 					object = longAt((GIV(method) + (BaseHeaderSize)) + ((byte3 + LiteralStart) << 2));
 					longAtPointerput((localSP -= BytesPerOop), object);
-					null;
 					goto l4;
 				}
 				if (opType == 4) {
@@ -6444,7 +6442,6 @@
 					/* begin internalPush: */
 					longAtPointerput((localSP -= BytesPerOop), longAt((litVar1 + (BaseHeaderSize)) + (ValueIndex << 2)));
 
-					null;
 					goto l4;
 				}
 				top = longAtPointer(localSP);
@@ -20799,20 +20796,26 @@
 							assert((classAtIndex(classIndex)) == classOrNil);
 							assert((classOrNil == GIV(nilObj))
 							 || (addressCouldBeClassObj(classOrNil)));
-							if ((classOrNil != GIV(nilObj))
-							 && ((expungeUnmarked
- && (!(isMarked(classOrNil))))
-							 || ((rawHashBitsOf(classOrNil)) != classIndex))) {
-								/* begin storePointerUnchecked:ofObject:withValue: */
-								assert(!(isForwarded(classTablePage)));
-								longAtput((classTablePage + (BaseHeaderSize)) + ((classIndex & ((1 << 10) - 1)) << 2), GIV(nilObj));
-								assert((expungeUnmarked
- && (!(isMarked(classOrNil))))
-								 || ((classAtIndex(rawHashBitsOf(classOrNil))) == classOrNil));
+							if (classOrNil == GIV(nilObj)) {
 								if (classIndex < GIV(classTableIndex)) {
 									GIV(classTableIndex) = classIndex;
 								}
 							}
+							else {
+								if ((expungeUnmarked
+ && (!(isMarked(classOrNil))))
+								 || ((rawHashBitsOf(classOrNil)) != classIndex)) {
+									/* begin storePointerUnchecked:ofObject:withValue: */
+									assert(!(isForwarded(classTablePage)));
+									longAtput((classTablePage + (BaseHeaderSize)) + ((classIndex & ((1 << 10) - 1)) << 2), GIV(nilObj));
+									assert((expungeUnmarked
+ && (!(isMarked(classOrNil))))
+									 || ((classAtIndex(rawHashBitsOf(classOrNil))) == classOrNil));
+									if (classIndex < GIV(classTableIndex)) {
+										GIV(classTableIndex) = classIndex;
+									}
+								}
+							}
 						}
 					}
 				}
@@ -32515,7 +32518,7 @@
 		return ((integerValue << 1) | 1);
 	}
 	/* begin eeInstantiateSmallClassIndex:format:numSlots: */
-	objFormat = 16 + (4 & ((wordSize()) - 1));
+	objFormat = 16 + ((8 - 4) & ((wordSize()) - 1));
 	assert((1 >= 0)
 	 && (ClassLargePositiveIntegerCompactIndex != 0));
 	assert(((objFormat < (firstByteFormat())
@@ -32635,7 +32638,7 @@
 		sz += 1;
 	}
 	/* begin eeInstantiateSmallClassIndex:format:numSlots: */
-	objFormat = 16 + (sz & ((wordSize()) - 1));
+	objFormat = 16 + ((8 - sz) & ((wordSize()) - 1));
 	assert(((((sqInt) 8 >> 2)) >= 0)
 	 && (ClassLargePositiveIntegerCompactIndex != 0));
 	assert(((objFormat < (firstByteFormat())

Modified: branches/Cog/spursrc/vm/interp.h
===================================================================
--- branches/Cog/spursrc/vm/interp.h	2014-03-09 19:17:15 UTC (rev 2874)
+++ branches/Cog/spursrc/vm/interp.h	2014-03-10 20:26:23 UTC (rev 2875)
@@ -1,5 +1,5 @@
 /* Automatically generated by
-	CCodeGeneratorGlobalStructure VMMaker.oscog-eem.635 uuid: d3e35b87-a79e-44a1-975b-549d6ae06743
+	CCodeGeneratorGlobalStructure VMMaker.oscog-eem.636 uuid: 97945106-afaf-4c50-be03-a1806625c3b9
  */
 
 #define VM_PROXY_MAJOR 1

Modified: branches/Cog/spursrc/vm/vmCallback.h
===================================================================
--- branches/Cog/spursrc/vm/vmCallback.h	2014-03-09 19:17:15 UTC (rev 2874)
+++ branches/Cog/spursrc/vm/vmCallback.h	2014-03-10 20:26:23 UTC (rev 2875)
@@ -1,5 +1,5 @@
 /* Automatically generated by
-	CCodeGeneratorGlobalStructure VMMaker.oscog-eem.635 uuid: d3e35b87-a79e-44a1-975b-549d6ae06743
+	CCodeGeneratorGlobalStructure VMMaker.oscog-eem.636 uuid: 97945106-afaf-4c50-be03-a1806625c3b9
  */
 
 #define VM_CALLBACK_INC 1

Modified: branches/Cog/spurstacksrc/vm/gcc3x-interp.c
===================================================================
--- branches/Cog/spurstacksrc/vm/gcc3x-interp.c	2014-03-09 19:17:15 UTC (rev 2874)
+++ branches/Cog/spurstacksrc/vm/gcc3x-interp.c	2014-03-10 20:26:23 UTC (rev 2875)
@@ -2,11 +2,11 @@
 
 
 /* Automatically generated by
-	CCodeGeneratorGlobalStructure VMMaker.oscog-eem.635 uuid: d3e35b87-a79e-44a1-975b-549d6ae06743
+	CCodeGeneratorGlobalStructure VMMaker.oscog-eem.636 uuid: 97945106-afaf-4c50-be03-a1806625c3b9
    from
-	StackInterpreter VMMaker.oscog-eem.635 uuid: d3e35b87-a79e-44a1-975b-549d6ae06743
+	StackInterpreter VMMaker.oscog-eem.636 uuid: 97945106-afaf-4c50-be03-a1806625c3b9
  */
-static char __buildInfo[] = "StackInterpreter VMMaker.oscog-eem.635 uuid: d3e35b87-a79e-44a1-975b-549d6ae06743 " __DATE__ ;
+static char __buildInfo[] = "StackInterpreter VMMaker.oscog-eem.636 uuid: 97945106-afaf-4c50-be03-a1806625c3b9 " __DATE__ ;
 char *__interpBuildInfo = __buildInfo;
 
 
@@ -1279,6 +1279,7 @@
 _iss sqInt longRunningPrimitiveCheckMethod;
 _iss sqInt longRunningPrimitiveCheckSemaphore;
 _iss sqInt profileMethod;
+_iss sqInt classTableIndex;
 _iss sqInt ephemeronQueue;
 _iss sqInt lastMethodCacheProbeWrite;
 _iss sqInt growHeadroom;
@@ -1286,7 +1287,6 @@
 _iss usqLong nextWakeupUsecs;
 _iss sqInt preemptionYields;
 _iss sqInt profileSemaphore;
-_iss sqInt classTableIndex;
 _iss sqInt highestRunnableProcessPriority;
 _iss usqLong longRunningPrimitiveStartUsecs;
 _iss usqLong longRunningPrimitiveStopUsecs;
@@ -1974,7 +1974,7 @@
  0 };
 char * breakSelector;
 sqInt breakSelectorLength = -1;
-const char *interpreterVersion = "Croquet Closure Stack VM [StackInterpreter VMMaker.oscog-eem.635]";
+const char *interpreterVersion = "Croquet Closure Stack VM [StackInterpreter VMMaker.oscog-eem.636]";
 volatile int sendTrace;
 sqInt suppressHeartbeatFlag;
 
@@ -17367,20 +17367,26 @@
 							assert((classAtIndex(classIndex)) == classOrNil);
 							assert((classOrNil == GIV(nilObj))
 							 || (addressCouldBeClassObj(classOrNil)));
-							if ((classOrNil != GIV(nilObj))
-							 && ((expungeUnmarked
- && (!(isMarked(classOrNil))))
-							 || ((rawHashBitsOf(classOrNil)) != classIndex))) {
-								/* begin storePointerUnchecked:ofObject:withValue: */
-								assert(!(isForwarded(classTablePage)));
-								longAtput((classTablePage + (BaseHeaderSize)) + ((classIndex & ((1 << 10) - 1)) << 2), GIV(nilObj));
-								assert((expungeUnmarked
- && (!(isMarked(classOrNil))))
-								 || ((classAtIndex(rawHashBitsOf(classOrNil))) == classOrNil));
+							if (classOrNil == GIV(nilObj)) {
 								if (classIndex < GIV(classTableIndex)) {
 									GIV(classTableIndex) = classIndex;
 								}
 							}
+							else {
+								if ((expungeUnmarked
+ && (!(isMarked(classOrNil))))
+								 || ((rawHashBitsOf(classOrNil)) != classIndex)) {
+									/* begin storePointerUnchecked:ofObject:withValue: */
+									assert(!(isForwarded(classTablePage)));
+									longAtput((classTablePage + (BaseHeaderSize)) + ((classIndex & ((1 << 10) - 1)) << 2), GIV(nilObj));
+									assert((expungeUnmarked
+ && (!(isMarked(classOrNil))))
+									 || ((classAtIndex(rawHashBitsOf(classOrNil))) == classOrNil));
+									if (classIndex < GIV(classTableIndex)) {
+										GIV(classTableIndex) = classIndex;
+									}
+								}
+							}
 						}
 					}
 				}
@@ -27372,7 +27378,7 @@
 		return ((integerValue << 1) | 1);
 	}
 	/* begin eeInstantiateSmallClassIndex:format:numSlots: */
-	objFormat = 16 + (4 & ((wordSize()) - 1));
+	objFormat = 16 + ((8 - 4) & ((wordSize()) - 1));
 	assert((1 >= 0)
 	 && (ClassLargePositiveIntegerCompactIndex != 0));
 	assert(((objFormat < (firstByteFormat())
@@ -27492,7 +27498,7 @@
 		sz += 1;
 	}
 	/* begin eeInstantiateSmallClassIndex:format:numSlots: */
-	objFormat = 16 + (sz & ((wordSize()) - 1));
+	objFormat = 16 + ((8 - sz) & ((wordSize()) - 1));
 	assert(((((sqInt) 8 >> 2)) >= 0)
 	 && (ClassLargePositiveIntegerCompactIndex != 0));
 	assert(((objFormat < (firstByteFormat())

Modified: branches/Cog/spurstacksrc/vm/interp.c
===================================================================
--- branches/Cog/spurstacksrc/vm/interp.c	2014-03-09 19:17:15 UTC (rev 2874)
+++ branches/Cog/spurstacksrc/vm/interp.c	2014-03-10 20:26:23 UTC (rev 2875)
@@ -1,9 +1,9 @@
 /* Automatically generated by
-	CCodeGeneratorGlobalStructure VMMaker.oscog-eem.635 uuid: d3e35b87-a79e-44a1-975b-549d6ae06743
+	CCodeGeneratorGlobalStructure VMMaker.oscog-eem.636 uuid: 97945106-afaf-4c50-be03-a1806625c3b9
    from
-	StackInterpreter VMMaker.oscog-eem.635 uuid: d3e35b87-a79e-44a1-975b-549d6ae06743
+	StackInterpreter VMMaker.oscog-eem.636 uuid: 97945106-afaf-4c50-be03-a1806625c3b9
  */
-static char __buildInfo[] = "StackInterpreter VMMaker.oscog-eem.635 uuid: d3e35b87-a79e-44a1-975b-549d6ae06743 " __DATE__ ;
+static char __buildInfo[] = "StackInterpreter VMMaker.oscog-eem.636 uuid: 97945106-afaf-4c50-be03-a1806625c3b9 " __DATE__ ;
 char *__interpBuildInfo = __buildInfo;
 
 
@@ -1276,6 +1276,7 @@
 _iss sqInt longRunningPrimitiveCheckMethod;
 _iss sqInt longRunningPrimitiveCheckSemaphore;
 _iss sqInt profileMethod;
+_iss sqInt classTableIndex;
 _iss sqInt ephemeronQueue;
 _iss sqInt lastMethodCacheProbeWrite;
 _iss sqInt growHeadroom;
@@ -1283,7 +1284,6 @@
 _iss usqLong nextWakeupUsecs;
 _iss sqInt preemptionYields;
 _iss sqInt profileSemaphore;
-_iss sqInt classTableIndex;
 _iss sqInt highestRunnableProcessPriority;
 _iss usqLong longRunningPrimitiveStartUsecs;
 _iss usqLong longRunningPrimitiveStopUsecs;
@@ -1971,7 +1971,7 @@
  0 };
 char * breakSelector;
 sqInt breakSelectorLength = -1;
-const char *interpreterVersion = "Croquet Closure Stack VM [StackInterpreter VMMaker.oscog-eem.635]";
+const char *interpreterVersion = "Croquet Closure Stack VM [StackInterpreter VMMaker.oscog-eem.636]";
 volatile int sendTrace;
 sqInt suppressHeartbeatFlag;
 
@@ -17358,20 +17358,26 @@
 							assert((classAtIndex(classIndex)) == classOrNil);
 							assert((classOrNil == GIV(nilObj))
 							 || (addressCouldBeClassObj(classOrNil)));
-							if ((classOrNil != GIV(nilObj))
-							 && ((expungeUnmarked
- && (!(isMarked(classOrNil))))
-							 || ((rawHashBitsOf(classOrNil)) != classIndex))) {
-								/* begin storePointerUnchecked:ofObject:withValue: */
-								assert(!(isForwarded(classTablePage)));
-								longAtput((classTablePage + (BaseHeaderSize)) + ((classIndex & ((1 << 10) - 1)) << 2), GIV(nilObj));
-								assert((expungeUnmarked
- && (!(isMarked(classOrNil))))
-								 || ((classAtIndex(rawHashBitsOf(classOrNil))) == classOrNil));
+							if (classOrNil == GIV(nilObj)) {

@@ Diff output truncated at 50000 characters. @@


More information about the Vm-dev mailing list