[Vm-dev] [commit][3642] CogVM source as per VMMaker.oscog-eem.1718

commits at squeakvm.org commits at squeakvm.org
Wed Mar 9 09:00:34 UTC 2016


Revision: 3642
Author:   eliot
Date:     2016-03-09 01:00:31 -0800 (Wed, 09 Mar 2016)
Log Message:
-----------
CogVM source as per VMMaker.oscog-eem.1718

Spur:
Fix the bug in markAndTraceClassOf: that causes the first class table page to
become a visible array.  Add a hack fix on initialization.  Since we /can/ fix
the image manually this hack isn't necessary, but the manual fix won't work
until the markAndTraceClassOf: bug is fixed.  Sigh...

Ensure purgeDuplicateClassTableEntriesFor: will not destroy class pun entries.


Plugins:
Fix primitiveFFIIntegerAt for signed 4-byte results.  Wuth the support for
64-bit results, signed 4-byte results must be sign-extended to 64-bits.

Don't use cCode: pointer aliasing for storing/fetching float/double in FFI
primitives.

Replace with a call to mem:cp:y:
- the first one is dangerous with modern C compilers
- while the second is optimized away (no call to memcpy)

Fix a missing guard in SmartSyntaxPlugin like explained at
http://forum.world.st/VM-safety-missing-failing-guards-in-SmartSyntaxPlugin-td4816518.html

Fix two missing guards in VM profiling primitives: one should not use the result
of stackObjectValue: before checking for success, otherwise a null pointer
exception will occur in case of failure.

Make the MacMenubarPlugin 64bits aware: the menuHandle does not necessarily fit
in a 32bits int.


Slang:
The size of [unsigned] long long was not infered...
3 minor fixes for type inference:
1) remove unecessary block argument assignment
2) infer type of allMask:
3) infer type of rem: instead of mod: (mod: does not exist)

Modified Paths:
--------------
    branches/Cog/nsspur64src/vm/cogit.h
    branches/Cog/nsspur64src/vm/cointerp.c
    branches/Cog/nsspur64src/vm/cointerp.h
    branches/Cog/nsspur64src/vm/gcc3x-cointerp.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/nsspurstack64src/vm/gcc3x-interp.c
    branches/Cog/nsspurstack64src/vm/interp.c
    branches/Cog/nsspurstacksrc/vm/gcc3x-interp.c
    branches/Cog/nsspurstacksrc/vm/interp.c
    branches/Cog/spur64src/vm/cogit.h
    branches/Cog/spur64src/vm/cointerp.c
    branches/Cog/spur64src/vm/cointerp.h
    branches/Cog/spur64src/vm/gcc3x-cointerp.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.h
    branches/Cog/spursrc/vm/cointerp.c
    branches/Cog/spursrc/vm/cointerp.h
    branches/Cog/spursrc/vm/gcc3x-cointerp.c
    branches/Cog/spurstack64src/vm/gcc3x-interp.c
    branches/Cog/spurstack64src/vm/interp.c
    branches/Cog/spurstacksrc/vm/gcc3x-interp.c
    branches/Cog/spurstacksrc/vm/interp.c
    branches/Cog/src/plugins/AsynchFilePlugin/AsynchFilePlugin.c
    branches/Cog/src/plugins/BitBltPlugin/BitBltPlugin.c
    branches/Cog/src/plugins/GeniePlugin/GeniePlugin.c
    branches/Cog/src/plugins/HostWindowPlugin/HostWindowPlugin.c
    branches/Cog/src/plugins/IA32ABI/IA32ABI.c
    branches/Cog/src/plugins/ImmX11Plugin/ImmX11Plugin.c
    branches/Cog/src/plugins/JPEGReadWriter2Plugin/JPEGReadWriter2Plugin.c
    branches/Cog/src/plugins/JoystickTabletPlugin/JoystickTabletPlugin.c
    branches/Cog/src/plugins/LargeIntegers/LargeIntegers.c
    branches/Cog/src/plugins/LocalePlugin/LocalePlugin.c
    branches/Cog/src/plugins/MIDIPlugin/MIDIPlugin.c
    branches/Cog/src/plugins/MacMenubarPlugin/MacMenubarPlugin.c
    branches/Cog/src/plugins/Mpeg3Plugin/Mpeg3Plugin.c
    branches/Cog/src/plugins/QuicktimePlugin/QuicktimePlugin.c
    branches/Cog/src/plugins/SerialPlugin/SerialPlugin.c
    branches/Cog/src/plugins/SocketPlugin/SocketPlugin.c
    branches/Cog/src/plugins/SoundPlugin/SoundPlugin.c
    branches/Cog/src/plugins/SqueakFFIPrims/ARM32FFIPlugin.c
    branches/Cog/src/plugins/SqueakFFIPrims/IA32FFIPlugin.c
    branches/Cog/src/plugins/SqueakFFIPrims/X64SysVFFIPlugin.c
    branches/Cog/src/plugins/SqueakFFIPrims/X64Win64FFIPlugin.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/nsspur64src/vm/cogit.h
===================================================================
--- branches/Cog/nsspur64src/vm/cogit.h	2016-03-08 22:21:51 UTC (rev 3641)
+++ branches/Cog/nsspur64src/vm/cogit.h	2016-03-09 09:00:31 UTC (rev 3642)
@@ -1,5 +1,5 @@
 /* Automatically generated by
-	CCodeGenerator VMMaker.oscog-eem.1709 uuid: 10ded6ee-4717-4e34-84d0-9c501aed252b
+	CCodeGenerator VMMaker.oscog-eem.1716 uuid: 9115c93b-f425-4118-96e7-7130adeff1f2
  */
 
 

Modified: branches/Cog/nsspur64src/vm/cointerp.c
===================================================================
--- branches/Cog/nsspur64src/vm/cointerp.c	2016-03-08 22:21:51 UTC (rev 3641)
+++ branches/Cog/nsspur64src/vm/cointerp.c	2016-03-09 09:00:31 UTC (rev 3642)
@@ -1,9 +1,9 @@
 /* Automatically generated by
-	CCodeGeneratorGlobalStructure VMMaker.oscog-eem.1709 uuid: 10ded6ee-4717-4e34-84d0-9c501aed252b
+	CCodeGeneratorGlobalStructure VMMaker.oscog-eem.1716 uuid: 9115c93b-f425-4118-96e7-7130adeff1f2
    from
-	CoInterpreter VMMaker.oscog-eem.1709 uuid: 10ded6ee-4717-4e34-84d0-9c501aed252b
+	CoInterpreter VMMaker.oscog-eem.1716 uuid: 9115c93b-f425-4118-96e7-7130adeff1f2
  */
-static char __buildInfo[] = "CoInterpreter VMMaker.oscog-eem.1709 uuid: 10ded6ee-4717-4e34-84d0-9c501aed252b " __DATE__ ;
+static char __buildInfo[] = "CoInterpreter VMMaker.oscog-eem.1716 uuid: 9115c93b-f425-4118-96e7-7130adeff1f2 " __DATE__ ;
 char *__interpBuildInfo = __buildInfo;
 
 
@@ -2441,7 +2441,7 @@
 /*560*/	-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1, 0, 0, 0,-1,-1
 	};
 char expensiveAsserts = 0;
-const char *interpreterVersion = "Newspeak Virtual Machine CoInterpreterPrimitives_VMMaker.oscog-eem.1709";
+const char *interpreterVersion = "Newspeak Virtual Machine CoInterpreterPrimitives_VMMaker.oscog-eem.1716";
 sqInt minBackwardJumpCountForCompile = MinBackwardJumpCountForCompile /* 40 */;
 volatile int sendTrace;
 
@@ -41748,6 +41748,8 @@
 		}
 		sampleBuffer = oop;
 	l1:	/* end stackObjectValue: */;
+	}
+	if (!GIV(primFailCode)) {
 		/* begin assertClassOf:is: */
 		ok = (sampleBuffer & (tagMask())) == 0;
 		if (ok) {
@@ -46015,7 +46017,8 @@
 				if (classOrNil != GIV(nilObj)) {
 					index = (((long)i1) << (classTableMajorIndexShift())) + j;
 					if ((classOrNil == aClass)
-					 && (index != expectedIndex1)) {
+					 && ((index != expectedIndex1)
+					 && (index > 0x1F))) {
 						classAtIndexput(index, GIV(nilObj));
 						if (index < GIV(classTableIndex)) {
 							GIV(classTableIndex) = index;
@@ -52764,10 +52767,16 @@
 	assert(validClassTableRootPages());
 	GIV(classTableFirstPage) = longAt((GIV(hiddenRootsObj) + BaseHeaderSize) + (0LL << (shiftForWord())));
 	assert(((numSlotsOf(GIV(classTableFirstPage))) - 1) == (classTableMinorIndexMask()));
+	flag("remove at some stage");
+	if (((longAt(GIV(classTableFirstPage))) & (classIndexMask())) != 16) {
+		/* begin setClassIndexOf:to: */
+		assert(((16 >= 0) && (16 <= (classIndexMask()))));
+		longAtput(GIV(classTableFirstPage), ((longAt(GIV(classTableFirstPage))) & (~(classIndexMask()))) + 16);
+	}
 	GIV(numClassTablePages) = 1LL << (22 - (classTableMajorIndexShift()));
-	for (i = 2; i < GIV(numClassTablePages); i += 1) {
-		if ((longAt((GIV(hiddenRootsObj) + BaseHeaderSize) + (((long)i) << (shiftForWord())))) == GIV(nilObj)) {
-			GIV(numClassTablePages) = i;
+	for (i1 = 2; i1 < GIV(numClassTablePages); i1 += 1) {
+		if ((longAt((GIV(hiddenRootsObj) + BaseHeaderSize) + (((long)i1) << (shiftForWord())))) == GIV(nilObj)) {
+			GIV(numClassTablePages) = i1;
 			GIV(classTableIndex) = ((long)((((GIV(numClassTablePages) - 1) < 1) ? 1 : (GIV(numClassTablePages) - 1)))) << (classTableMajorIndexShift());
 			goto l1;
 		}
@@ -52785,10 +52794,10 @@
 	assert((formatOf(freeListObj)) == (wordIndexableFormat()));
 	GIV(freeLists) = firstIndexableField(freeListObj);
 	GIV(freeListsMask) = 0;
-	for (i1 = 0, iLimiT = (64 - 1); i1 <= iLimiT; i1 += 1) {
-		if ((GIV(freeLists)[i1]) != 0) {
-			GIV(freeListsMask) = GIV(freeListsMask) | (1LL << i1);
-			GIV(freeLists)[i1] = (swizzleObj(GIV(freeLists)[i1]));
+	for (i = 0, iLimiT = (64 - 1); i <= iLimiT; i += 1) {
+		if ((GIV(freeLists)[i]) != 0) {
+			GIV(freeListsMask) = GIV(freeListsMask) | (1LL << i);
+			GIV(freeLists)[i] = (swizzleObj(GIV(freeLists)[i]));
 		}
 	}
 	collapseSegmentsPostSwizzle();
@@ -55286,7 +55295,8 @@
 l1:	/* end classOrNilAtIndex: */;
 	assert(objCouldBeClassObj(classObj));
 	realClassIndex = (long32At(classObj + 4)) & (identityHashHalfWordMask());
-	if (classIndex != realClassIndex) {
+	if ((classIndex != realClassIndex)
+	 && (realClassIndex > 0x1F)) {
 		/* begin setClassIndexOf:to: */
 		assert(((realClassIndex >= 0) && (realClassIndex <= (classIndexMask()))));
 		longAtput(objOop, ((longAt(objOop)) & (~(classIndexMask()))) + realClassIndex);
@@ -66997,7 +67007,7 @@
     sqInt limit;
     sqInt newEndOfMemory;
     sqInt next;
-    usqInt node;
+    sqInt node;
     usqInt numSlots;
     usqInt numSlots1;
     SpurSegmentInfo *seg;
@@ -67126,7 +67136,7 @@
 static sqInt NoDbgRegParms
 readHeapFromImageFiledataBytes(sqImageFile f, sqInt numBytes)
 {   DECL_MAYBE_SQ_GLOBAL_STRUCT
-    usqInt bridge;
+    sqInt bridge;
     usqInt bridgehead;
     usqLong bridgeSpan;
     sqInt bytesRead;

Modified: branches/Cog/nsspur64src/vm/cointerp.h
===================================================================
--- branches/Cog/nsspur64src/vm/cointerp.h	2016-03-08 22:21:51 UTC (rev 3641)
+++ branches/Cog/nsspur64src/vm/cointerp.h	2016-03-09 09:00:31 UTC (rev 3642)
@@ -1,5 +1,5 @@
 /* Automatically generated by
-	CCodeGeneratorGlobalStructure VMMaker.oscog-eem.1709 uuid: 10ded6ee-4717-4e34-84d0-9c501aed252b
+	CCodeGeneratorGlobalStructure VMMaker.oscog-eem.1716 uuid: 9115c93b-f425-4118-96e7-7130adeff1f2
  */
 
 

Modified: branches/Cog/nsspur64src/vm/gcc3x-cointerp.c
===================================================================
--- branches/Cog/nsspur64src/vm/gcc3x-cointerp.c	2016-03-08 22:21:51 UTC (rev 3641)
+++ branches/Cog/nsspur64src/vm/gcc3x-cointerp.c	2016-03-09 09:00:31 UTC (rev 3642)
@@ -2,11 +2,11 @@
 
 
 /* Automatically generated by
-	CCodeGeneratorGlobalStructure VMMaker.oscog-eem.1709 uuid: 10ded6ee-4717-4e34-84d0-9c501aed252b
+	CCodeGeneratorGlobalStructure VMMaker.oscog-eem.1716 uuid: 9115c93b-f425-4118-96e7-7130adeff1f2
    from
-	CoInterpreter VMMaker.oscog-eem.1709 uuid: 10ded6ee-4717-4e34-84d0-9c501aed252b
+	CoInterpreter VMMaker.oscog-eem.1716 uuid: 9115c93b-f425-4118-96e7-7130adeff1f2
  */
-static char __buildInfo[] = "CoInterpreter VMMaker.oscog-eem.1709 uuid: 10ded6ee-4717-4e34-84d0-9c501aed252b " __DATE__ ;
+static char __buildInfo[] = "CoInterpreter VMMaker.oscog-eem.1716 uuid: 9115c93b-f425-4118-96e7-7130adeff1f2 " __DATE__ ;
 char *__interpBuildInfo = __buildInfo;
 
 
@@ -2444,7 +2444,7 @@
 /*560*/	-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1, 0, 0, 0,-1,-1
 	};
 char expensiveAsserts = 0;
-const char *interpreterVersion = "Newspeak Virtual Machine CoInterpreterPrimitives_VMMaker.oscog-eem.1709";
+const char *interpreterVersion = "Newspeak Virtual Machine CoInterpreterPrimitives_VMMaker.oscog-eem.1716";
 sqInt minBackwardJumpCountForCompile = MinBackwardJumpCountForCompile /* 40 */;
 volatile int sendTrace;
 
@@ -41757,6 +41757,8 @@
 		}
 		sampleBuffer = oop;
 	l1:	/* end stackObjectValue: */;
+	}
+	if (!GIV(primFailCode)) {
 		/* begin assertClassOf:is: */
 		ok = (sampleBuffer & (tagMask())) == 0;
 		if (ok) {
@@ -46024,7 +46026,8 @@
 				if (classOrNil != GIV(nilObj)) {
 					index = (((long)i1) << (classTableMajorIndexShift())) + j;
 					if ((classOrNil == aClass)
-					 && (index != expectedIndex1)) {
+					 && ((index != expectedIndex1)
+					 && (index > 0x1F))) {
 						classAtIndexput(index, GIV(nilObj));
 						if (index < GIV(classTableIndex)) {
 							GIV(classTableIndex) = index;
@@ -52773,10 +52776,16 @@
 	assert(validClassTableRootPages());
 	GIV(classTableFirstPage) = longAt((GIV(hiddenRootsObj) + BaseHeaderSize) + (0LL << (shiftForWord())));
 	assert(((numSlotsOf(GIV(classTableFirstPage))) - 1) == (classTableMinorIndexMask()));
+	flag("remove at some stage");
+	if (((longAt(GIV(classTableFirstPage))) & (classIndexMask())) != 16) {
+		/* begin setClassIndexOf:to: */
+		assert(((16 >= 0) && (16 <= (classIndexMask()))));
+		longAtput(GIV(classTableFirstPage), ((longAt(GIV(classTableFirstPage))) & (~(classIndexMask()))) + 16);
+	}
 	GIV(numClassTablePages) = 1LL << (22 - (classTableMajorIndexShift()));
-	for (i = 2; i < GIV(numClassTablePages); i += 1) {
-		if ((longAt((GIV(hiddenRootsObj) + BaseHeaderSize) + (((long)i) << (shiftForWord())))) == GIV(nilObj)) {
-			GIV(numClassTablePages) = i;
+	for (i1 = 2; i1 < GIV(numClassTablePages); i1 += 1) {
+		if ((longAt((GIV(hiddenRootsObj) + BaseHeaderSize) + (((long)i1) << (shiftForWord())))) == GIV(nilObj)) {
+			GIV(numClassTablePages) = i1;
 			GIV(classTableIndex) = ((long)((((GIV(numClassTablePages) - 1) < 1) ? 1 : (GIV(numClassTablePages) - 1)))) << (classTableMajorIndexShift());
 			goto l1;
 		}
@@ -52794,10 +52803,10 @@
 	assert((formatOf(freeListObj)) == (wordIndexableFormat()));
 	GIV(freeLists) = firstIndexableField(freeListObj);
 	GIV(freeListsMask) = 0;
-	for (i1 = 0, iLimiT = (64 - 1); i1 <= iLimiT; i1 += 1) {
-		if ((GIV(freeLists)[i1]) != 0) {
-			GIV(freeListsMask) = GIV(freeListsMask) | (1LL << i1);
-			GIV(freeLists)[i1] = (swizzleObj(GIV(freeLists)[i1]));
+	for (i = 0, iLimiT = (64 - 1); i <= iLimiT; i += 1) {
+		if ((GIV(freeLists)[i]) != 0) {
+			GIV(freeListsMask) = GIV(freeListsMask) | (1LL << i);
+			GIV(freeLists)[i] = (swizzleObj(GIV(freeLists)[i]));
 		}
 	}
 	collapseSegmentsPostSwizzle();
@@ -55295,7 +55304,8 @@
 l1:	/* end classOrNilAtIndex: */;
 	assert(objCouldBeClassObj(classObj));
 	realClassIndex = (long32At(classObj + 4)) & (identityHashHalfWordMask());
-	if (classIndex != realClassIndex) {
+	if ((classIndex != realClassIndex)
+	 && (realClassIndex > 0x1F)) {
 		/* begin setClassIndexOf:to: */
 		assert(((realClassIndex >= 0) && (realClassIndex <= (classIndexMask()))));
 		longAtput(objOop, ((longAt(objOop)) & (~(classIndexMask()))) + realClassIndex);
@@ -67006,7 +67016,7 @@
     sqInt limit;
     sqInt newEndOfMemory;
     sqInt next;
-    usqInt node;
+    sqInt node;
     usqInt numSlots;
     usqInt numSlots1;
     SpurSegmentInfo *seg;
@@ -67135,7 +67145,7 @@
 static sqInt NoDbgRegParms
 readHeapFromImageFiledataBytes(sqImageFile f, sqInt numBytes)
 {   DECL_MAYBE_SQ_GLOBAL_STRUCT
-    usqInt bridge;
+    sqInt bridge;
     usqInt bridgehead;
     usqLong bridgeSpan;
     sqInt bytesRead;

Modified: branches/Cog/nsspursrc/vm/cogit.h
===================================================================
--- branches/Cog/nsspursrc/vm/cogit.h	2016-03-08 22:21:51 UTC (rev 3641)
+++ branches/Cog/nsspursrc/vm/cogit.h	2016-03-09 09:00:31 UTC (rev 3642)
@@ -1,5 +1,5 @@
 /* Automatically generated by
-	CCodeGenerator VMMaker.oscog-eem.1709 uuid: 10ded6ee-4717-4e34-84d0-9c501aed252b
+	CCodeGenerator VMMaker.oscog-eem.1716 uuid: 9115c93b-f425-4118-96e7-7130adeff1f2
  */
 
 

Modified: branches/Cog/nsspursrc/vm/cointerp.c
===================================================================
--- branches/Cog/nsspursrc/vm/cointerp.c	2016-03-08 22:21:51 UTC (rev 3641)
+++ branches/Cog/nsspursrc/vm/cointerp.c	2016-03-09 09:00:31 UTC (rev 3642)
@@ -1,9 +1,9 @@
 /* Automatically generated by
-	CCodeGeneratorGlobalStructure VMMaker.oscog-eem.1709 uuid: 10ded6ee-4717-4e34-84d0-9c501aed252b
+	CCodeGeneratorGlobalStructure VMMaker.oscog-eem.1716 uuid: 9115c93b-f425-4118-96e7-7130adeff1f2
    from
-	CoInterpreter VMMaker.oscog-eem.1709 uuid: 10ded6ee-4717-4e34-84d0-9c501aed252b
+	CoInterpreter VMMaker.oscog-eem.1716 uuid: 9115c93b-f425-4118-96e7-7130adeff1f2
  */
-static char __buildInfo[] = "CoInterpreter VMMaker.oscog-eem.1709 uuid: 10ded6ee-4717-4e34-84d0-9c501aed252b " __DATE__ ;
+static char __buildInfo[] = "CoInterpreter VMMaker.oscog-eem.1716 uuid: 9115c93b-f425-4118-96e7-7130adeff1f2 " __DATE__ ;
 char *__interpBuildInfo = __buildInfo;
 
 
@@ -1608,8 +1608,8 @@
 _iss sqInt bytesPerPage;
 _iss sqInt numSegments;
 _iss sqInt localAbsentReceiver;
+_iss sqInt classTableFirstPage;
 _iss sqInt traceLogIndex;
-_iss sqInt classTableFirstPage;
 _iss sqInt * freeLists;
 _iss char * stackLimit;
 _iss sqInt lkupClass;
@@ -2410,7 +2410,7 @@
 /*560*/	-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1, 0, 0, 0,-1,-1
 	};
 char expensiveAsserts = 0;
-const char *interpreterVersion = "Newspeak Virtual Machine CoInterpreterPrimitives_VMMaker.oscog-eem.1709";
+const char *interpreterVersion = "Newspeak Virtual Machine CoInterpreterPrimitives_VMMaker.oscog-eem.1716";
 sqInt minBackwardJumpCountForCompile = MinBackwardJumpCountForCompile /* 40 */;
 volatile int sendTrace;
 
@@ -41102,6 +41102,8 @@
 		}
 		sampleBuffer = oop;
 	l1:	/* end stackObjectValue: */;
+	}
+	if (!GIV(primFailCode)) {
 		/* begin assertClassOf:is: */
 		ok = (sampleBuffer & (tagMask())) == 0;
 		if (ok) {
@@ -45304,7 +45306,8 @@
 				if (classOrNil != GIV(nilObj)) {
 					index = (i1 << (classTableMajorIndexShift())) + j;
 					if ((classOrNil == aClass)
-					 && (index != expectedIndex1)) {
+					 && ((index != expectedIndex1)
+					 && (index > 0x1F))) {
 						classAtIndexput(index, GIV(nilObj));
 						if (index < GIV(classTableIndex)) {
 							GIV(classTableIndex) = index;
@@ -52030,10 +52033,17 @@
 	assert(validClassTableRootPages());
 	GIV(classTableFirstPage) = longAt((GIV(hiddenRootsObj) + BaseHeaderSize) + (0L << (shiftForWord())));
 	assert(((numSlotsOf(GIV(classTableFirstPage))) - 1) == (classTableMinorIndexMask()));
+	flag("remove at some stage");
+	if (((longAt(GIV(classTableFirstPage))) & (classIndexMask())) != 16) {
+		/* begin setClassIndexOf:to: */
+		assert(((16 >= 0) && (16 <= (classIndexMask()))));
+		flag("endianness");
+		longAtput(GIV(classTableFirstPage), ((longAt(GIV(classTableFirstPage))) & ((unsigned int)~(classIndexMask()))) + 16);
+	}
 	GIV(numClassTablePages) = 1L << (22 - (classTableMajorIndexShift()));
-	for (i = 2; i < GIV(numClassTablePages); i += 1) {
-		if ((longAt((GIV(hiddenRootsObj) + BaseHeaderSize) + (i << (shiftForWord())))) == GIV(nilObj)) {
-			GIV(numClassTablePages) = i;
+	for (i1 = 2; i1 < GIV(numClassTablePages); i1 += 1) {
+		if ((longAt((GIV(hiddenRootsObj) + BaseHeaderSize) + (i1 << (shiftForWord())))) == GIV(nilObj)) {
+			GIV(numClassTablePages) = i1;
 			GIV(classTableIndex) = ((((GIV(numClassTablePages) - 1) < 1) ? 1 : (GIV(numClassTablePages) - 1))) << (classTableMajorIndexShift());
 			goto l1;
 		}
@@ -52051,10 +52061,10 @@
 	assert((formatOf(freeListObj)) == (wordIndexableFormat()));
 	GIV(freeLists) = firstIndexableField(freeListObj);
 	GIV(freeListsMask) = 0;
-	for (i1 = 0, iLimiT = (32 - 1); i1 <= iLimiT; i1 += 1) {
-		if ((GIV(freeLists)[i1]) != 0) {
-			GIV(freeListsMask) = GIV(freeListsMask) | (1L << i1);
-			GIV(freeLists)[i1] = (swizzleObj(GIV(freeLists)[i1]));
+	for (i = 0, iLimiT = (32 - 1); i <= iLimiT; i += 1) {
+		if ((GIV(freeLists)[i]) != 0) {
+			GIV(freeListsMask) = GIV(freeListsMask) | (1L << i);
+			GIV(freeLists)[i] = (swizzleObj(GIV(freeLists)[i]));
 		}
 	}
 	collapseSegmentsPostSwizzle();
@@ -54548,7 +54558,8 @@
 l1:	/* end classOrNilAtIndex: */;
 	assert(objCouldBeClassObj(classObj));
 	realClassIndex = (long32At(classObj + 4)) & (identityHashHalfWordMask());
-	if (classIndex != realClassIndex) {
+	if ((classIndex != realClassIndex)
+	 && (realClassIndex > 0x1F)) {
 		/* begin setClassIndexOf:to: */
 		assert(((realClassIndex >= 0) && (realClassIndex <= (classIndexMask()))));
 		flag("endianness");
@@ -66087,7 +66098,7 @@
     sqInt limit;
     sqInt newEndOfMemory;
     sqInt next;
-    usqInt node;
+    sqInt node;
     usqInt numSlots;
     usqInt numSlots1;
     SpurSegmentInfo *seg;

Modified: branches/Cog/nsspursrc/vm/cointerp.h
===================================================================
--- branches/Cog/nsspursrc/vm/cointerp.h	2016-03-08 22:21:51 UTC (rev 3641)
+++ branches/Cog/nsspursrc/vm/cointerp.h	2016-03-09 09:00:31 UTC (rev 3642)
@@ -1,5 +1,5 @@
 /* Automatically generated by
-	CCodeGeneratorGlobalStructure VMMaker.oscog-eem.1709 uuid: 10ded6ee-4717-4e34-84d0-9c501aed252b
+	CCodeGeneratorGlobalStructure VMMaker.oscog-eem.1716 uuid: 9115c93b-f425-4118-96e7-7130adeff1f2
  */
 
 

Modified: branches/Cog/nsspursrc/vm/gcc3x-cointerp.c
===================================================================
--- branches/Cog/nsspursrc/vm/gcc3x-cointerp.c	2016-03-08 22:21:51 UTC (rev 3641)
+++ branches/Cog/nsspursrc/vm/gcc3x-cointerp.c	2016-03-09 09:00:31 UTC (rev 3642)
@@ -2,11 +2,11 @@
 
 
 /* Automatically generated by
-	CCodeGeneratorGlobalStructure VMMaker.oscog-eem.1709 uuid: 10ded6ee-4717-4e34-84d0-9c501aed252b
+	CCodeGeneratorGlobalStructure VMMaker.oscog-eem.1716 uuid: 9115c93b-f425-4118-96e7-7130adeff1f2
    from
-	CoInterpreter VMMaker.oscog-eem.1709 uuid: 10ded6ee-4717-4e34-84d0-9c501aed252b
+	CoInterpreter VMMaker.oscog-eem.1716 uuid: 9115c93b-f425-4118-96e7-7130adeff1f2
  */
-static char __buildInfo[] = "CoInterpreter VMMaker.oscog-eem.1709 uuid: 10ded6ee-4717-4e34-84d0-9c501aed252b " __DATE__ ;
+static char __buildInfo[] = "CoInterpreter VMMaker.oscog-eem.1716 uuid: 9115c93b-f425-4118-96e7-7130adeff1f2 " __DATE__ ;
 char *__interpBuildInfo = __buildInfo;
 
 
@@ -1611,8 +1611,8 @@
 _iss sqInt bytesPerPage;
 _iss sqInt numSegments;
 _iss sqInt localAbsentReceiver;
+_iss sqInt classTableFirstPage;
 _iss sqInt traceLogIndex;
-_iss sqInt classTableFirstPage;
 _iss sqInt * freeLists;
 _iss char * stackLimit;
 _iss sqInt lkupClass;
@@ -2413,7 +2413,7 @@
 /*560*/	-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1, 0, 0, 0,-1,-1
 	};
 char expensiveAsserts = 0;
-const char *interpreterVersion = "Newspeak Virtual Machine CoInterpreterPrimitives_VMMaker.oscog-eem.1709";
+const char *interpreterVersion = "Newspeak Virtual Machine CoInterpreterPrimitives_VMMaker.oscog-eem.1716";
 sqInt minBackwardJumpCountForCompile = MinBackwardJumpCountForCompile /* 40 */;
 volatile int sendTrace;
 
@@ -41111,6 +41111,8 @@
 		}
 		sampleBuffer = oop;
 	l1:	/* end stackObjectValue: */;
+	}
+	if (!GIV(primFailCode)) {
 		/* begin assertClassOf:is: */
 		ok = (sampleBuffer & (tagMask())) == 0;
 		if (ok) {
@@ -45313,7 +45315,8 @@
 				if (classOrNil != GIV(nilObj)) {
 					index = (i1 << (classTableMajorIndexShift())) + j;
 					if ((classOrNil == aClass)
-					 && (index != expectedIndex1)) {
+					 && ((index != expectedIndex1)
+					 && (index > 0x1F))) {
 						classAtIndexput(index, GIV(nilObj));
 						if (index < GIV(classTableIndex)) {
 							GIV(classTableIndex) = index;
@@ -52039,10 +52042,17 @@
 	assert(validClassTableRootPages());
 	GIV(classTableFirstPage) = longAt((GIV(hiddenRootsObj) + BaseHeaderSize) + (0L << (shiftForWord())));
 	assert(((numSlotsOf(GIV(classTableFirstPage))) - 1) == (classTableMinorIndexMask()));
+	flag("remove at some stage");
+	if (((longAt(GIV(classTableFirstPage))) & (classIndexMask())) != 16) {
+		/* begin setClassIndexOf:to: */
+		assert(((16 >= 0) && (16 <= (classIndexMask()))));
+		flag("endianness");
+		longAtput(GIV(classTableFirstPage), ((longAt(GIV(classTableFirstPage))) & ((unsigned int)~(classIndexMask()))) + 16);
+	}
 	GIV(numClassTablePages) = 1L << (22 - (classTableMajorIndexShift()));
-	for (i = 2; i < GIV(numClassTablePages); i += 1) {
-		if ((longAt((GIV(hiddenRootsObj) + BaseHeaderSize) + (i << (shiftForWord())))) == GIV(nilObj)) {
-			GIV(numClassTablePages) = i;
+	for (i1 = 2; i1 < GIV(numClassTablePages); i1 += 1) {
+		if ((longAt((GIV(hiddenRootsObj) + BaseHeaderSize) + (i1 << (shiftForWord())))) == GIV(nilObj)) {
+			GIV(numClassTablePages) = i1;
 			GIV(classTableIndex) = ((((GIV(numClassTablePages) - 1) < 1) ? 1 : (GIV(numClassTablePages) - 1))) << (classTableMajorIndexShift());
 			goto l1;
 		}
@@ -52060,10 +52070,10 @@
 	assert((formatOf(freeListObj)) == (wordIndexableFormat()));
 	GIV(freeLists) = firstIndexableField(freeListObj);
 	GIV(freeListsMask) = 0;
-	for (i1 = 0, iLimiT = (32 - 1); i1 <= iLimiT; i1 += 1) {
-		if ((GIV(freeLists)[i1]) != 0) {
-			GIV(freeListsMask) = GIV(freeListsMask) | (1L << i1);
-			GIV(freeLists)[i1] = (swizzleObj(GIV(freeLists)[i1]));
+	for (i = 0, iLimiT = (32 - 1); i <= iLimiT; i += 1) {
+		if ((GIV(freeLists)[i]) != 0) {
+			GIV(freeListsMask) = GIV(freeListsMask) | (1L << i);
+			GIV(freeLists)[i] = (swizzleObj(GIV(freeLists)[i]));
 		}
 	}
 	collapseSegmentsPostSwizzle();
@@ -54557,7 +54567,8 @@
 l1:	/* end classOrNilAtIndex: */;
 	assert(objCouldBeClassObj(classObj));
 	realClassIndex = (long32At(classObj + 4)) & (identityHashHalfWordMask());
-	if (classIndex != realClassIndex) {
+	if ((classIndex != realClassIndex)
+	 && (realClassIndex > 0x1F)) {
 		/* begin setClassIndexOf:to: */
 		assert(((realClassIndex >= 0) && (realClassIndex <= (classIndexMask()))));
 		flag("endianness");
@@ -66096,7 +66107,7 @@
     sqInt limit;
     sqInt newEndOfMemory;
     sqInt next;
-    usqInt node;
+    sqInt node;
     usqInt numSlots;
     usqInt numSlots1;
     SpurSegmentInfo *seg;

Modified: branches/Cog/nsspurstack64src/vm/gcc3x-interp.c
===================================================================
--- branches/Cog/nsspurstack64src/vm/gcc3x-interp.c	2016-03-08 22:21:51 UTC (rev 3641)
+++ branches/Cog/nsspurstack64src/vm/gcc3x-interp.c	2016-03-09 09:00:31 UTC (rev 3642)
@@ -2,11 +2,11 @@
 
 
 /* Automatically generated by
-	CCodeGeneratorGlobalStructure VMMaker.oscog-eem.1709 uuid: 10ded6ee-4717-4e34-84d0-9c501aed252b
+	CCodeGeneratorGlobalStructure VMMaker.oscog-eem.1716 uuid: 9115c93b-f425-4118-96e7-7130adeff1f2
    from
-	StackInterpreter VMMaker.oscog-eem.1709 uuid: 10ded6ee-4717-4e34-84d0-9c501aed252b
+	StackInterpreter VMMaker.oscog-eem.1716 uuid: 9115c93b-f425-4118-96e7-7130adeff1f2
  */
-static char __buildInfo[] = "StackInterpreter VMMaker.oscog-eem.1709 uuid: 10ded6ee-4717-4e34-84d0-9c501aed252b " __DATE__ ;
+static char __buildInfo[] = "StackInterpreter VMMaker.oscog-eem.1716 uuid: 9115c93b-f425-4118-96e7-7130adeff1f2 " __DATE__ ;
 char *__interpBuildInfo = __buildInfo;
 
 
@@ -2185,7 +2185,7 @@
 	/* 575 */ (void (*)(void))0,
  0 };
 char expensiveAsserts = 0;
-const char *interpreterVersion = "Newspeak Virtual Machine StackInterpreterPrimitives_VMMaker.oscog-eem.1709";
+const char *interpreterVersion = "Newspeak Virtual Machine StackInterpreterPrimitives_VMMaker.oscog-eem.1716";
 volatile int sendTrace;
 sqInt suppressHeartbeatFlag;
 
@@ -28470,6 +28470,8 @@
 		}
 		sampleBuffer = oop;
 	l1:	/* end stackObjectValue: */;
+	}
+	if (!GIV(primFailCode)) {
 		/* begin assertClassOf:is: */
 		ok = (sampleBuffer & (tagMask())) == 0;
 		if (ok) {
@@ -32582,7 +32584,8 @@
 				if (classOrNil != GIV(nilObj)) {
 					index = (((long)i1) << (classTableMajorIndexShift())) + j;
 					if ((classOrNil == aClass)
-					 && (index != expectedIndex1)) {
+					 && ((index != expectedIndex1)
+					 && (index > 0x1F))) {
 						classAtIndexput(index, GIV(nilObj));
 						if (index < GIV(classTableIndex)) {
 							GIV(classTableIndex) = index;
@@ -39443,10 +39446,16 @@
 	assert(validClassTableRootPages());
 	GIV(classTableFirstPage) = longAt((GIV(hiddenRootsObj) + BaseHeaderSize) + (0LL << (shiftForWord())));
 	assert(((numSlotsOf(GIV(classTableFirstPage))) - 1) == (classTableMinorIndexMask()));
+	flag("remove at some stage");
+	if (((longAt(GIV(classTableFirstPage))) & (classIndexMask())) != 16) {
+		/* begin setClassIndexOf:to: */
+		assert(((16 >= 0) && (16 <= (classIndexMask()))));
+		longAtput(GIV(classTableFirstPage), ((longAt(GIV(classTableFirstPage))) & (~(classIndexMask()))) + 16);
+	}
 	GIV(numClassTablePages) = 1LL << (22 - (classTableMajorIndexShift()));
-	for (i = 2; i < GIV(numClassTablePages); i += 1) {
-		if ((longAt((GIV(hiddenRootsObj) + BaseHeaderSize) + (((long)i) << (shiftForWord())))) == GIV(nilObj)) {
-			GIV(numClassTablePages) = i;
+	for (i1 = 2; i1 < GIV(numClassTablePages); i1 += 1) {
+		if ((longAt((GIV(hiddenRootsObj) + BaseHeaderSize) + (((long)i1) << (shiftForWord())))) == GIV(nilObj)) {
+			GIV(numClassTablePages) = i1;
 			GIV(classTableIndex) = ((long)((((GIV(numClassTablePages) - 1) < 1) ? 1 : (GIV(numClassTablePages) - 1)))) << (classTableMajorIndexShift());
 			goto l1;
 		}
@@ -39464,10 +39473,10 @@
 	assert((formatOf(freeListObj)) == (wordIndexableFormat()));
 	GIV(freeLists) = firstIndexableField(freeListObj);
 	GIV(freeListsMask) = 0;
-	for (i1 = 0, iLimiT = (64 - 1); i1 <= iLimiT; i1 += 1) {
-		if ((GIV(freeLists)[i1]) != 0) {
-			GIV(freeListsMask) = GIV(freeListsMask) | (1LL << i1);
-			GIV(freeLists)[i1] = (swizzleObj(GIV(freeLists)[i1]));
+	for (i = 0, iLimiT = (64 - 1); i <= iLimiT; i += 1) {
+		if ((GIV(freeLists)[i]) != 0) {
+			GIV(freeListsMask) = GIV(freeListsMask) | (1LL << i);
+			GIV(freeLists)[i] = (swizzleObj(GIV(freeLists)[i]));
 		}
 	}
 	collapseSegmentsPostSwizzle();
@@ -41940,7 +41949,8 @@
 l1:	/* end classOrNilAtIndex: */;
 	assert(objCouldBeClassObj(classObj));
 	realClassIndex = (long32At(classObj + 4)) & (identityHashHalfWordMask());
-	if (classIndex != realClassIndex) {
+	if ((classIndex != realClassIndex)
+	 && (realClassIndex > 0x1F)) {
 		/* begin setClassIndexOf:to: */
 		assert(((realClassIndex >= 0) && (realClassIndex <= (classIndexMask()))));
 		longAtput(objOop, ((longAt(objOop)) & (~(classIndexMask()))) + realClassIndex);

Modified: branches/Cog/nsspurstack64src/vm/interp.c
===================================================================
--- branches/Cog/nsspurstack64src/vm/interp.c	2016-03-08 22:21:51 UTC (rev 3641)
+++ branches/Cog/nsspurstack64src/vm/interp.c	2016-03-09 09:00:31 UTC (rev 3642)
@@ -1,9 +1,9 @@
 /* Automatically generated by
-	CCodeGeneratorGlobalStructure VMMaker.oscog-eem.1709 uuid: 10ded6ee-4717-4e34-84d0-9c501aed252b
+	CCodeGeneratorGlobalStructure VMMaker.oscog-eem.1716 uuid: 9115c93b-f425-4118-96e7-7130adeff1f2
    from
-	StackInterpreter VMMaker.oscog-eem.1709 uuid: 10ded6ee-4717-4e34-84d0-9c501aed252b
+	StackInterpreter VMMaker.oscog-eem.1716 uuid: 9115c93b-f425-4118-96e7-7130adeff1f2
  */
-static char __buildInfo[] = "StackInterpreter VMMaker.oscog-eem.1709 uuid: 10ded6ee-4717-4e34-84d0-9c501aed252b " __DATE__ ;
+static char __buildInfo[] = "StackInterpreter VMMaker.oscog-eem.1716 uuid: 9115c93b-f425-4118-96e7-7130adeff1f2 " __DATE__ ;
 char *__interpBuildInfo = __buildInfo;
 
 
@@ -2182,7 +2182,7 @@
 	/* 575 */ (void (*)(void))0,
  0 };
 char expensiveAsserts = 0;
-const char *interpreterVersion = "Newspeak Virtual Machine StackInterpreterPrimitives_VMMaker.oscog-eem.1709";
+const char *interpreterVersion = "Newspeak Virtual Machine StackInterpreterPrimitives_VMMaker.oscog-eem.1716";
 volatile int sendTrace;
 sqInt suppressHeartbeatFlag;
 
@@ -28461,6 +28461,8 @@
 		}
 		sampleBuffer = oop;
 	l1:	/* end stackObjectValue: */;
+	}
+	if (!GIV(primFailCode)) {
 		/* begin assertClassOf:is: */
 		ok = (sampleBuffer & (tagMask())) == 0;
 		if (ok) {
@@ -32573,7 +32575,8 @@
 				if (classOrNil != GIV(nilObj)) {
 					index = (((long)i1) << (classTableMajorIndexShift())) + j;
 					if ((classOrNil == aClass)
-					 && (index != expectedIndex1)) {
+					 && ((index != expectedIndex1)
+					 && (index > 0x1F))) {
 						classAtIndexput(index, GIV(nilObj));
 						if (index < GIV(classTableIndex)) {
 							GIV(classTableIndex) = index;
@@ -39434,10 +39437,16 @@
 	assert(validClassTableRootPages());
 	GIV(classTableFirstPage) = longAt((GIV(hiddenRootsObj) + BaseHeaderSize) + (0LL << (shiftForWord())));
 	assert(((numSlotsOf(GIV(classTableFirstPage))) - 1) == (classTableMinorIndexMask()));
+	flag("remove at some stage");
+	if (((longAt(GIV(classTableFirstPage))) & (classIndexMask())) != 16) {
+		/* begin setClassIndexOf:to: */
+		assert(((16 >= 0) && (16 <= (classIndexMask()))));
+		longAtput(GIV(classTableFirstPage), ((longAt(GIV(classTableFirstPage))) & (~(classIndexMask()))) + 16);
+	}
 	GIV(numClassTablePages) = 1LL << (22 - (classTableMajorIndexShift()));
-	for (i = 2; i < GIV(numClassTablePages); i += 1) {
-		if ((longAt((GIV(hiddenRootsObj) + BaseHeaderSize) + (((long)i) << (shiftForWord())))) == GIV(nilObj)) {
-			GIV(numClassTablePages) = i;
+	for (i1 = 2; i1 < GIV(numClassTablePages); i1 += 1) {
+		if ((longAt((GIV(hiddenRootsObj) + BaseHeaderSize) + (((long)i1) << (shiftForWord())))) == GIV(nilObj)) {
+			GIV(numClassTablePages) = i1;
 			GIV(classTableIndex) = ((long)((((GIV(numClassTablePages) - 1) < 1) ? 1 : (GIV(numClassTablePages) - 1)))) << (classTableMajorIndexShift());
 			goto l1;
 		}
@@ -39455,10 +39464,10 @@
 	assert((formatOf(freeListObj)) == (wordIndexableFormat()));
 	GIV(freeLists) = firstIndexableField(freeListObj);
 	GIV(freeListsMask) = 0;
-	for (i1 = 0, iLimiT = (64 - 1); i1 <= iLimiT; i1 += 1) {
-		if ((GIV(freeLists)[i1]) != 0) {
-			GIV(freeListsMask) = GIV(freeListsMask) | (1LL << i1);
-			GIV(freeLists)[i1] = (swizzleObj(GIV(freeLists)[i1]));
+	for (i = 0, iLimiT = (64 - 1); i <= iLimiT; i += 1) {
+		if ((GIV(freeLists)[i]) != 0) {
+			GIV(freeListsMask) = GIV(freeListsMask) | (1LL << i);
+			GIV(freeLists)[i] = (swizzleObj(GIV(freeLists)[i]));
 		}
 	}
 	collapseSegmentsPostSwizzle();
@@ -41931,7 +41940,8 @@
 l1:	/* end classOrNilAtIndex: */;
 	assert(objCouldBeClassObj(classObj));
 	realClassIndex = (long32At(classObj + 4)) & (identityHashHalfWordMask());
-	if (classIndex != realClassIndex) {
+	if ((classIndex != realClassIndex)
+	 && (realClassIndex > 0x1F)) {
 		/* begin setClassIndexOf:to: */
 		assert(((realClassIndex >= 0) && (realClassIndex <= (classIndexMask()))));
 		longAtput(objOop, ((longAt(objOop)) & (~(classIndexMask()))) + realClassIndex);

Modified: branches/Cog/nsspurstacksrc/vm/gcc3x-interp.c
===================================================================
--- branches/Cog/nsspurstacksrc/vm/gcc3x-interp.c	2016-03-08 22:21:51 UTC (rev 3641)
+++ branches/Cog/nsspurstacksrc/vm/gcc3x-interp.c	2016-03-09 09:00:31 UTC (rev 3642)
@@ -2,11 +2,11 @@
 
 
 /* Automatically generated by
-	CCodeGeneratorGlobalStructure VMMaker.oscog-eem.1709 uuid: 10ded6ee-4717-4e34-84d0-9c501aed252b
+	CCodeGeneratorGlobalStructure VMMaker.oscog-eem.1716 uuid: 9115c93b-f425-4118-96e7-7130adeff1f2
    from
-	StackInterpreter VMMaker.oscog-eem.1709 uuid: 10ded6ee-4717-4e34-84d0-9c501aed252b
+	StackInterpreter VMMaker.oscog-eem.1716 uuid: 9115c93b-f425-4118-96e7-7130adeff1f2
  */
-static char __buildInfo[] = "StackInterpreter VMMaker.oscog-eem.1709 uuid: 10ded6ee-4717-4e34-84d0-9c501aed252b " __DATE__ ;
+static char __buildInfo[] = "StackInterpreter VMMaker.oscog-eem.1716 uuid: 9115c93b-f425-4118-96e7-7130adeff1f2 " __DATE__ ;
 char *__interpBuildInfo = __buildInfo;
 
 
@@ -1400,8 +1400,8 @@
 _iss sqInt numSegments;
 _iss char * stackMemory;
 _iss sqInt * freeLists;
+_iss sqInt classTableFirstPage;
 _iss sqInt rememberedSetSize;
-_iss sqInt classTableFirstPage;
 _iss char * stackLimit;
 _iss sqInt tempOop;
 _iss sqInt * rememberedSet;
@@ -2155,7 +2155,7 @@
 	/* 575 */ (void (*)(void))0,
  0 };
 char expensiveAsserts = 0;
-const char *interpreterVersion = "Newspeak Virtual Machine StackInterpreterPrimitives_VMMaker.oscog-eem.1709";
+const char *interpreterVersion = "Newspeak Virtual Machine StackInterpreterPrimitives_VMMaker.oscog-eem.1716";
 volatile int sendTrace;
 sqInt suppressHeartbeatFlag;
 
@@ -27456,6 +27456,8 @@
 		}
 		sampleBuffer = oop;
 	l1:	/* end stackObjectValue: */;
+	}
+	if (!GIV(primFailCode)) {
 		/* begin assertClassOf:is: */
 		ok = (sampleBuffer & (tagMask())) == 0;
 		if (ok) {
@@ -31510,7 +31512,8 @@
 				if (classOrNil != GIV(nilObj)) {
 					index = (i1 << (classTableMajorIndexShift())) + j;
 					if ((classOrNil == aClass)
-					 && (index != expectedIndex1)) {
+					 && ((index != expectedIndex1)
+					 && (index > 0x1F))) {
 						classAtIndexput(index, GIV(nilObj));
 						if (index < GIV(classTableIndex)) {
 							GIV(classTableIndex) = index;
@@ -38348,10 +38351,17 @@
 	assert(validClassTableRootPages());
 	GIV(classTableFirstPage) = longAt((GIV(hiddenRootsObj) + BaseHeaderSize) + (0L << (shiftForWord())));
 	assert(((numSlotsOf(GIV(classTableFirstPage))) - 1) == (classTableMinorIndexMask()));
+	flag("remove at some stage");
+	if (((longAt(GIV(classTableFirstPage))) & (classIndexMask())) != 16) {
+		/* begin setClassIndexOf:to: */
+		assert(((16 >= 0) && (16 <= (classIndexMask()))));
+		flag("endianness");
+		longAtput(GIV(classTableFirstPage), ((longAt(GIV(classTableFirstPage))) & ((unsigned int)~(classIndexMask()))) + 16);
+	}
 	GIV(numClassTablePages) = 1L << (22 - (classTableMajorIndexShift()));
-	for (i = 2; i < GIV(numClassTablePages); i += 1) {
-		if ((longAt((GIV(hiddenRootsObj) + BaseHeaderSize) + (i << (shiftForWord())))) == GIV(nilObj)) {
-			GIV(numClassTablePages) = i;
+	for (i1 = 2; i1 < GIV(numClassTablePages); i1 += 1) {
+		if ((longAt((GIV(hiddenRootsObj) + BaseHeaderSize) + (i1 << (shiftForWord())))) == GIV(nilObj)) {
+			GIV(numClassTablePages) = i1;
 			GIV(classTableIndex) = ((((GIV(numClassTablePages) - 1) < 1) ? 1 : (GIV(numClassTablePages) - 1))) << (classTableMajorIndexShift());
 			goto l1;
 		}
@@ -38369,10 +38379,10 @@
 	assert((formatOf(freeListObj)) == (wordIndexableFormat()));
 	GIV(freeLists) = firstIndexableField(freeListObj);
 	GIV(freeListsMask) = 0;
-	for (i1 = 0, iLimiT = (32 - 1); i1 <= iLimiT; i1 += 1) {
-		if ((GIV(freeLists)[i1]) != 0) {
-			GIV(freeListsMask) = GIV(freeListsMask) | (1L << i1);
-			GIV(freeLists)[i1] = (swizzleObj(GIV(freeLists)[i1]));
+	for (i = 0, iLimiT = (32 - 1); i <= iLimiT; i += 1) {
+		if ((GIV(freeLists)[i]) != 0) {
+			GIV(freeListsMask) = GIV(freeListsMask) | (1L << i);
+			GIV(freeLists)[i] = (swizzleObj(GIV(freeLists)[i]));
 		}
 	}
 	collapseSegmentsPostSwizzle();
@@ -40841,7 +40851,8 @@
 l1:	/* end classOrNilAtIndex: */;
 	assert(objCouldBeClassObj(classObj));
 	realClassIndex = (long32At(classObj + 4)) & (identityHashHalfWordMask());
-	if (classIndex != realClassIndex) {
+	if ((classIndex != realClassIndex)
+	 && (realClassIndex > 0x1F)) {
 		/* begin setClassIndexOf:to: */
 		assert(((realClassIndex >= 0) && (realClassIndex <= (classIndexMask()))));
 		flag("endianness");

Modified: branches/Cog/nsspurstacksrc/vm/interp.c
===================================================================
--- branches/Cog/nsspurstacksrc/vm/interp.c	2016-03-08 22:21:51 UTC (rev 3641)
+++ branches/Cog/nsspurstacksrc/vm/interp.c	2016-03-09 09:00:31 UTC (rev 3642)
@@ -1,9 +1,9 @@
 /* Automatically generated by
-	CCodeGeneratorGlobalStructure VMMaker.oscog-eem.1709 uuid: 10ded6ee-4717-4e34-84d0-9c501aed252b
+	CCodeGeneratorGlobalStructure VMMaker.oscog-eem.1716 uuid: 9115c93b-f425-4118-96e7-7130adeff1f2
    from
-	StackInterpreter VMMaker.oscog-eem.1709 uuid: 10ded6ee-4717-4e34-84d0-9c501aed252b
+	StackInterpreter VMMaker.oscog-eem.1716 uuid: 9115c93b-f425-4118-96e7-7130adeff1f2
  */
-static char __buildInfo[] = "StackInterpreter VMMaker.oscog-eem.1709 uuid: 10ded6ee-4717-4e34-84d0-9c501aed252b " __DATE__ ;
+static char __buildInfo[] = "StackInterpreter VMMaker.oscog-eem.1716 uuid: 9115c93b-f425-4118-96e7-7130adeff1f2 " __DATE__ ;
 char *__interpBuildInfo = __buildInfo;
 
 
@@ -1397,8 +1397,8 @@
 _iss sqInt numSegments;
 _iss char * stackMemory;
 _iss sqInt * freeLists;
+_iss sqInt classTableFirstPage;
 _iss sqInt rememberedSetSize;
-_iss sqInt classTableFirstPage;
 _iss char * stackLimit;
 _iss sqInt tempOop;
 _iss sqInt * rememberedSet;
@@ -2152,7 +2152,7 @@
 	/* 575 */ (void (*)(void))0,
  0 };
 char expensiveAsserts = 0;
-const char *interpreterVersion = "Newspeak Virtual Machine StackInterpreterPrimitives_VMMaker.oscog-eem.1709";
+const char *interpreterVersion = "Newspeak Virtual Machine StackInterpreterPrimitives_VMMaker.oscog-eem.1716";
 volatile int sendTrace;
 sqInt suppressHeartbeatFlag;
 
@@ -27447,6 +27447,8 @@
 		}
 		sampleBuffer = oop;
 	l1:	/* end stackObjectValue: */;
+	}
+	if (!GIV(primFailCode)) {
 		/* begin assertClassOf:is: */
 		ok = (sampleBuffer & (tagMask())) == 0;
 		if (ok) {
@@ -31501,7 +31503,8 @@
 				if (classOrNil != GIV(nilObj)) {
 					index = (i1 << (classTableMajorIndexShift())) + j;
 					if ((classOrNil == aClass)
-					 && (index != expectedIndex1)) {
+					 && ((index != expectedIndex1)
+					 && (index > 0x1F))) {
 						classAtIndexput(index, GIV(nilObj));
 						if (index < GIV(classTableIndex)) {
 							GIV(classTableIndex) = index;
@@ -38339,10 +38342,17 @@
 	assert(validClassTableRootPages());
 	GIV(classTableFirstPage) = longAt((GIV(hiddenRootsObj) + BaseHeaderSize) + (0L << (shiftForWord())));
 	assert(((numSlotsOf(GIV(classTableFirstPage))) - 1) == (classTableMinorIndexMask()));
+	flag("remove at some stage");
+	if (((longAt(GIV(classTableFirstPage))) & (classIndexMask())) != 16) {
+		/* begin setClassIndexOf:to: */
+		assert(((16 >= 0) && (16 <= (classIndexMask()))));
+		flag("endianness");
+		longAtput(GIV(classTableFirstPage), ((longAt(GIV(classTableFirstPage))) & ((unsigned int)~(classIndexMask()))) + 16);
+	}
 	GIV(numClassTablePages) = 1L << (22 - (classTableMajorIndexShift()));
-	for (i = 2; i < GIV(numClassTablePages); i += 1) {
-		if ((longAt((GIV(hiddenRootsObj) + BaseHeaderSize) + (i << (shiftForWord())))) == GIV(nilObj)) {
-			GIV(numClassTablePages) = i;
+	for (i1 = 2; i1 < GIV(numClassTablePages); i1 += 1) {
+		if ((longAt((GIV(hiddenRootsObj) + BaseHeaderSize) + (i1 << (shiftForWord())))) == GIV(nilObj)) {
+			GIV(numClassTablePages) = i1;
 			GIV(classTableIndex) = ((((GIV(numClassTablePages) - 1) < 1) ? 1 : (GIV(numClassTablePages) - 1))) << (classTableMajorIndexShift());
 			goto l1;
 		}
@@ -38360,10 +38370,10 @@
 	assert((formatOf(freeListObj)) == (wordIndexableFormat()));
 	GIV(freeLists) = firstIndexableField(freeListObj);
 	GIV(freeListsMask) = 0;
-	for (i1 = 0, iLimiT = (32 - 1); i1 <= iLimiT; i1 += 1) {
-		if ((GIV(freeLists)[i1]) != 0) {
-			GIV(freeListsMask) = GIV(freeListsMask) | (1L << i1);
-			GIV(freeLists)[i1] = (swizzleObj(GIV(freeLists)[i1]));
+	for (i = 0, iLimiT = (32 - 1); i <= iLimiT; i += 1) {
+		if ((GIV(freeLists)[i]) != 0) {
+			GIV(freeListsMask) = GIV(freeListsMask) | (1L << i);
+			GIV(freeLists)[i] = (swizzleObj(GIV(freeLists)[i]));
 		}
 	}
 	collapseSegmentsPostSwizzle();
@@ -40832,7 +40842,8 @@
 l1:	/* end classOrNilAtIndex: */;
 	assert(objCouldBeClassObj(classObj));
 	realClassIndex = (long32At(classObj + 4)) & (identityHashHalfWordMask());
-	if (classIndex != realClassIndex) {
+	if ((classIndex != realClassIndex)
+	 && (realClassIndex > 0x1F)) {
 		/* begin setClassIndexOf:to: */
 		assert(((realClassIndex >= 0) && (realClassIndex <= (classIndexMask()))));
 		flag("endianness");


Property changes on: branches/Cog/platforms/Cross/vm/sqSCCSVersion.h
___________________________________________________________________
Modified: checkindate
   - Fri Mar  4 17:02:37 PST 2016
   + Wed Mar  9 00:58:46 PST 2016

Modified: branches/Cog/spur64src/vm/cogit.h
===================================================================
--- branches/Cog/spur64src/vm/cogit.h	2016-03-08 22:21:51 UTC (rev 3641)
+++ branches/Cog/spur64src/vm/cogit.h	2016-03-09 09:00:31 UTC (rev 3642)
@@ -1,5 +1,5 @@
 /* Automatically generated by
-	CCodeGenerator VMMaker.oscog-eem.1709 uuid: 10ded6ee-4717-4e34-84d0-9c501aed252b
+	CCodeGenerator VMMaker.oscog-eem.1716 uuid: 9115c93b-f425-4118-96e7-7130adeff1f2
  */
 
 

Modified: branches/Cog/spur64src/vm/cointerp.c
===================================================================
--- branches/Cog/spur64src/vm/cointerp.c	2016-03-08 22:21:51 UTC (rev 3641)
+++ branches/Cog/spur64src/vm/cointerp.c	2016-03-09 09:00:31 UTC (rev 3642)
@@ -1,9 +1,9 @@
 /* Automatically generated by
-	CCodeGeneratorGlobalStructure VMMaker.oscog-eem.1709 uuid: 10ded6ee-4717-4e34-84d0-9c501aed252b
+	CCodeGeneratorGlobalStructure VMMaker.oscog-eem.1716 uuid: 9115c93b-f425-4118-96e7-7130adeff1f2
    from
-	CoInterpreter VMMaker.oscog-eem.1709 uuid: 10ded6ee-4717-4e34-84d0-9c501aed252b
+	CoInterpreter VMMaker.oscog-eem.1716 uuid: 9115c93b-f425-4118-96e7-7130adeff1f2
  */
-static char __buildInfo[] = "CoInterpreter VMMaker.oscog-eem.1709 uuid: 10ded6ee-4717-4e34-84d0-9c501aed252b " __DATE__ ;
+static char __buildInfo[] = "CoInterpreter VMMaker.oscog-eem.1716 uuid: 9115c93b-f425-4118-96e7-7130adeff1f2 " __DATE__ ;
 char *__interpBuildInfo = __buildInfo;
 
 
@@ -1604,9 +1604,9 @@
 _iss sqInt needGCFlag;
 _iss sqInt * freeLists;
 _iss sqInt traceLogIndex;
+_iss sqInt classTableFirstPage;
 _iss sqInt rememberedSetSize;
 _iss char * stackLimit;
-_iss sqInt classTableFirstPage;
 _iss usqInt scavengeThreshold;
 _iss sqInt * rememberedSet;
 _iss sqInt remapBufferCount;
@@ -2404,7 +2404,7 @@
 /*560*/	-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1, 0, 0, 0,-1,-1
 	};
 char expensiveAsserts = 0;
-const char *interpreterVersion = "Croquet Closure Cog[Spur] VM [CoInterpreterPrimitives VMMaker.oscog-eem.1709]";
+const char *interpreterVersion = "Croquet Closure Cog[Spur] VM [CoInterpreterPrimitives VMMaker.oscog-eem.1716]";
 sqInt minBackwardJumpCountForCompile = MinBackwardJumpCountForCompile /* 40 */;
 volatile int sendTrace;
 
@@ -36918,6 +36918,8 @@
 		}
 		sampleBuffer = oop;
 	l1:	/* end stackObjectValue: */;
+	}
+	if (!GIV(primFailCode)) {
 		/* begin assertClassOf:is: */
 		ok = (sampleBuffer & (tagMask())) == 0;
 		if (ok) {
@@ -41185,7 +41187,8 @@
 				if (classOrNil != GIV(nilObj)) {
 					index = (((long)i1) << (classTableMajorIndexShift())) + j;
 					if ((classOrNil == aClass)
-					 && (index != expectedIndex1)) {
+					 && ((index != expectedIndex1)
+					 && (index > 0x1F))) {
 						classAtIndexput(index, GIV(nilObj));
 						if (index < GIV(classTableIndex)) {
 							GIV(classTableIndex) = index;
@@ -47934,10 +47937,16 @@
 	assert(validClassTableRootPages());
 	GIV(classTableFirstPage) = longAt((GIV(hiddenRootsObj) + BaseHeaderSize) + (0LL << (shiftForWord())));
 	assert(((numSlotsOf(GIV(classTableFirstPage))) - 1) == (classTableMinorIndexMask()));
+	flag("remove at some stage");
+	if (((longAt(GIV(classTableFirstPage))) & (classIndexMask())) != 16) {
+		/* begin setClassIndexOf:to: */
+		assert(((16 >= 0) && (16 <= (classIndexMask()))));
+		longAtput(GIV(classTableFirstPage), ((longAt(GIV(classTableFirstPage))) & (~(classIndexMask()))) + 16);
+	}
 	GIV(numClassTablePages) = 1LL << (22 - (classTableMajorIndexShift()));
-	for (i = 2; i < GIV(numClassTablePages); i += 1) {
-		if ((longAt((GIV(hiddenRootsObj) + BaseHeaderSize) + (((long)i) << (shiftForWord())))) == GIV(nilObj)) {
-			GIV(numClassTablePages) = i;
+	for (i1 = 2; i1 < GIV(numClassTablePages); i1 += 1) {
+		if ((longAt((GIV(hiddenRootsObj) + BaseHeaderSize) + (((long)i1) << (shiftForWord())))) == GIV(nilObj)) {
+			GIV(numClassTablePages) = i1;
 			GIV(classTableIndex) = ((long)((((GIV(numClassTablePages) - 1) < 1) ? 1 : (GIV(numClassTablePages) - 1)))) << (classTableMajorIndexShift());
 			goto l1;
 		}
@@ -47955,10 +47964,10 @@
 	assert((formatOf(freeListObj)) == (wordIndexableFormat()));
 	GIV(freeLists) = firstIndexableField(freeListObj);
 	GIV(freeListsMask) = 0;
-	for (i1 = 0, iLimiT = (64 - 1); i1 <= iLimiT; i1 += 1) {
-		if ((GIV(freeLists)[i1]) != 0) {
-			GIV(freeListsMask) = GIV(freeListsMask) | (1LL << i1);
-			GIV(freeLists)[i1] = (swizzleObj(GIV(freeLists)[i1]));
+	for (i = 0, iLimiT = (64 - 1); i <= iLimiT; i += 1) {
+		if ((GIV(freeLists)[i]) != 0) {
+			GIV(freeListsMask) = GIV(freeListsMask) | (1LL << i);
+			GIV(freeLists)[i] = (swizzleObj(GIV(freeLists)[i]));
 		}
 	}
 	collapseSegmentsPostSwizzle();
@@ -50456,7 +50465,8 @@
 l1:	/* end classOrNilAtIndex: */;
 	assert(objCouldBeClassObj(classObj));
 	realClassIndex = (long32At(classObj + 4)) & (identityHashHalfWordMask());
-	if (classIndex != realClassIndex) {
+	if ((classIndex != realClassIndex)
+	 && (realClassIndex > 0x1F)) {
 		/* begin setClassIndexOf:to: */
 		assert(((realClassIndex >= 0) && (realClassIndex <= (classIndexMask()))));
 		longAtput(objOop, ((longAt(objOop)) & (~(classIndexMask()))) + realClassIndex);
@@ -56558,7 +56568,7 @@
     usqInt prevFree;
     usqInt prevFreeChunk;
     usqInt prevPrevFree;
-    usqInt prevPrevFreeChunk;
+    sqInt prevPrevFreeChunk;
     sqInt slotBytes;
     sqInt slotBytes1;
     usqInt there;
@@ -61903,7 +61913,7 @@
 bridgeFromto(SpurSegmentInfo *aSegment, SpurSegmentInfo *nextSegmentOrNil)
 {
     usqInt bridgeSpan;
-    sqInt clifton;
+    usqInt clifton;
     usqInt segEnd;
 
 	segEnd = ((aSegment->segSize)) + ((aSegment->segStart));
@@ -62147,7 +62157,7 @@
     sqInt limit;
     sqInt newEndOfMemory;
     sqInt next;
-    sqInt node;
+    usqInt node;
     usqInt numSlots;
     usqInt numSlots1;
     SpurSegmentInfo *seg;
@@ -62276,7 +62286,7 @@
 static sqInt NoDbgRegParms
 readHeapFromImageFiledataBytes(sqImageFile f, sqInt numBytes)
 {   DECL_MAYBE_SQ_GLOBAL_STRUCT
-    usqInt bridge;
+    sqInt bridge;
     usqInt bridgehead;
     usqLong bridgeSpan;
     sqInt bytesRead;

Modified: branches/Cog/spur64src/vm/cointerp.h
===================================================================
--- branches/Cog/spur64src/vm/cointerp.h	2016-03-08 22:21:51 UTC (rev 3641)
+++ branches/Cog/spur64src/vm/cointerp.h	2016-03-09 09:00:31 UTC (rev 3642)
@@ -1,5 +1,5 @@
 /* Automatically generated by
-	CCodeGeneratorGlobalStructure VMMaker.oscog-eem.1709 uuid: 10ded6ee-4717-4e34-84d0-9c501aed252b
+	CCodeGeneratorGlobalStructure VMMaker.oscog-eem.1716 uuid: 9115c93b-f425-4118-96e7-7130adeff1f2
  */
 
 

Modified: branches/Cog/spur64src/vm/gcc3x-cointerp.c
===================================================================
--- branches/Cog/spur64src/vm/gcc3x-cointerp.c	2016-03-08 22:21:51 UTC (rev 3641)
+++ branches/Cog/spur64src/vm/gcc3x-cointerp.c	2016-03-09 09:00:31 UTC (rev 3642)
@@ -2,11 +2,11 @@
 
 
 /* Automatically generated by
-	CCodeGeneratorGlobalStructure VMMaker.oscog-eem.1709 uuid: 10ded6ee-4717-4e34-84d0-9c501aed252b
+	CCodeGeneratorGlobalStructure VMMaker.oscog-eem.1716 uuid: 9115c93b-f425-4118-96e7-7130adeff1f2
    from
-	CoInterpreter VMMaker.oscog-eem.1709 uuid: 10ded6ee-4717-4e34-84d0-9c501aed252b
+	CoInterpreter VMMaker.oscog-eem.1716 uuid: 9115c93b-f425-4118-96e7-7130adeff1f2
  */
-static char __buildInfo[] = "CoInterpreter VMMaker.oscog-eem.1709 uuid: 10ded6ee-4717-4e34-84d0-9c501aed252b " __DATE__ ;
+static char __buildInfo[] = "CoInterpreter VMMaker.oscog-eem.1716 uuid: 9115c93b-f425-4118-96e7-7130adeff1f2 " __DATE__ ;
 char *__interpBuildInfo = __buildInfo;
 
 
@@ -1607,9 +1607,9 @@
 _iss sqInt needGCFlag;
 _iss sqInt * freeLists;
 _iss sqInt traceLogIndex;
+_iss sqInt classTableFirstPage;
 _iss sqInt rememberedSetSize;
 _iss char * stackLimit;
-_iss sqInt classTableFirstPage;
 _iss usqInt scavengeThreshold;
 _iss sqInt * rememberedSet;
 _iss sqInt remapBufferCount;
@@ -2407,7 +2407,7 @@
 /*560*/	-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1, 0, 0, 0,-1,-1
 	};
 char expensiveAsserts = 0;
-const char *interpreterVersion = "Croquet Closure Cog[Spur] VM [CoInterpreterPrimitives VMMaker.oscog-eem.1709]";
+const char *interpreterVersion = "Croquet Closure Cog[Spur] VM [CoInterpreterPrimitives VMMaker.oscog-eem.1716]";
 sqInt minBackwardJumpCountForCompile = MinBackwardJumpCountForCompile /* 40 */;
 volatile int sendTrace;
 
@@ -36927,6 +36927,8 @@
 		}
 		sampleBuffer = oop;
 	l1:	/* end stackObjectValue: */;
+	}
+	if (!GIV(primFailCode)) {
 		/* begin assertClassOf:is: */
 		ok = (sampleBuffer & (tagMask())) == 0;
 		if (ok) {
@@ -41194,7 +41196,8 @@
 				if (classOrNil != GIV(nilObj)) {
 					index = (((long)i1) << (classTableMajorIndexShift())) + j;
 					if ((classOrNil == aClass)
-					 && (index != expectedIndex1)) {
+					 && ((index != expectedIndex1)
+					 && (index > 0x1F))) {
 						classAtIndexput(index, GIV(nilObj));
 						if (index < GIV(classTableIndex)) {
 							GIV(classTableIndex) = index;
@@ -47943,10 +47946,16 @@
 	assert(validClassTableRootPages());
 	GIV(classTableFirstPage) = longAt((GIV(hiddenRootsObj) + BaseHeaderSize) + (0LL << (shiftForWord())));
 	assert(((numSlotsOf(GIV(classTableFirstPage))) - 1) == (classTableMinorIndexMask()));
+	flag("remove at some stage");
+	if (((longAt(GIV(classTableFirstPage))) & (classIndexMask())) != 16) {
+		/* begin setClassIndexOf:to: */
+		assert(((16 >= 0) && (16 <= (classIndexMask()))));
+		longAtput(GIV(classTableFirstPage), ((longAt(GIV(classTableFirstPage))) & (~(classIndexMask()))) + 16);
+	}
 	GIV(numClassTablePages) = 1LL << (22 - (classTableMajorIndexShift()));
-	for (i = 2; i < GIV(numClassTablePages); i += 1) {
-		if ((longAt((GIV(hiddenRootsObj) + BaseHeaderSize) + (((long)i) << (shiftForWord())))) == GIV(nilObj)) {
-			GIV(numClassTablePages) = i;
+	for (i1 = 2; i1 < GIV(numClassTablePages); i1 += 1) {
+		if ((longAt((GIV(hiddenRootsObj) + BaseHeaderSize) + (((long)i1) << (shiftForWord())))) == GIV(nilObj)) {
+			GIV(numClassTablePages) = i1;
 			GIV(classTableIndex) = ((long)((((GIV(numClassTablePages) - 1) < 1) ? 1 : (GIV(numClassTablePages) - 1)))) << (classTableMajorIndexShift());
 			goto l1;
 		}
@@ -47964,10 +47973,10 @@
 	assert((formatOf(freeListObj)) == (wordIndexableFormat()));
 	GIV(freeLists) = firstIndexableField(freeListObj);
 	GIV(freeListsMask) = 0;
-	for (i1 = 0, iLimiT = (64 - 1); i1 <= iLimiT; i1 += 1) {
-		if ((GIV(freeLists)[i1]) != 0) {
-			GIV(freeListsMask) = GIV(freeListsMask) | (1LL << i1);
-			GIV(freeLists)[i1] = (swizzleObj(GIV(freeLists)[i1]));
+	for (i = 0, iLimiT = (64 - 1); i <= iLimiT; i += 1) {
+		if ((GIV(freeLists)[i]) != 0) {
+			GIV(freeListsMask) = GIV(freeListsMask) | (1LL << i);
+			GIV(freeLists)[i] = (swizzleObj(GIV(freeLists)[i]));
 		}
 	}
 	collapseSegmentsPostSwizzle();
@@ -50465,7 +50474,8 @@
 l1:	/* end classOrNilAtIndex: */;
 	assert(objCouldBeClassObj(classObj));
 	realClassIndex = (long32At(classObj + 4)) & (identityHashHalfWordMask());
-	if (classIndex != realClassIndex) {
+	if ((classIndex != realClassIndex)
+	 && (realClassIndex > 0x1F)) {
 		/* begin setClassIndexOf:to: */
 		assert(((realClassIndex >= 0) && (realClassIndex <= (classIndexMask()))));
 		longAtput(objOop, ((longAt(objOop)) & (~(classIndexMask()))) + realClassIndex);
@@ -56567,7 +56577,7 @@
     usqInt prevFree;
     usqInt prevFreeChunk;
     usqInt prevPrevFree;
-    usqInt prevPrevFreeChunk;
+    sqInt prevPrevFreeChunk;
     sqInt slotBytes;
     sqInt slotBytes1;
     usqInt there;
@@ -61912,7 +61922,7 @@
 bridgeFromto(SpurSegmentInfo *aSegment, SpurSegmentInfo *nextSegmentOrNil)
 {
     usqInt bridgeSpan;
-    sqInt clifton;
+    usqInt clifton;
     usqInt segEnd;
 
 	segEnd = ((aSegment->segSize)) + ((aSegment->segStart));
@@ -62156,7 +62166,7 @@
     sqInt limit;
     sqInt newEndOfMemory;
     sqInt next;
-    sqInt node;
+    usqInt node;
     usqInt numSlots;
     usqInt numSlots1;
     SpurSegmentInfo *seg;
@@ -62285,7 +62295,7 @@
 static sqInt NoDbgRegParms
 readHeapFromImageFiledataBytes(sqImageFile f, sqInt numBytes)
 {   DECL_MAYBE_SQ_GLOBAL_STRUCT
-    usqInt bridge;
+    sqInt bridge;
     usqInt bridgehead;
     usqLong bridgeSpan;
     sqInt bytesRead;

Modified: branches/Cog/spursistasrc/vm/cogit.h
===================================================================
--- branches/Cog/spursistasrc/vm/cogit.h	2016-03-08 22:21:51 UTC (rev 3641)

@@ Diff output truncated at 50000 characters. @@


More information about the Vm-dev mailing list