[Vm-dev] [commit][3690] CogVM source as per VMMaker.oscog-nice.1853

commits at squeakvm.org commits at squeakvm.org
Sat Apr 30 17:58:22 UTC 2016


Revision: 3690
Author:   eliot
Date:     2016-04-30 10:58:20 -0700 (Sat, 30 Apr 2016)
Log Message:
-----------
CogVM source as per VMMaker.oscog-nice.1853

Fix missing comparison operation in genPrimitiveIdentical on V3. This should
fix Character = problem encounterd in Cuis.

Comment concretizePrefetchAw, and store machineCode in last statement so as to
avoid a -Wunused-value warning.

Correct slip in primitiveMethodXray, the flags were not set in each caseOf:
branch (thanks to -Wunused-value).

Remove assert in classTagForClass: because ensureBehaviorHash: already does it.

Modified Paths:
--------------
    branches/Cog/nsspur64src/vm/cogit.h
    branches/Cog/nsspur64src/vm/cogitX64.c
    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/cogitARMv5.c
    branches/Cog/nsspursrc/vm/cogitIA32.c
    branches/Cog/nsspursrc/vm/cogitMIPSEL.c
    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/cogitX64.c
    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/cogitARMv5.c
    branches/Cog/spursistasrc/vm/cogitIA32.c
    branches/Cog/spursistasrc/vm/cogitMIPSEL.c
    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/cogitARMv5.c
    branches/Cog/spursrc/vm/cogitIA32.c
    branches/Cog/spursrc/vm/cogitMIPSEL.c
    branches/Cog/spursrc/vm/cointerp.c
    branches/Cog/spursrc/vm/cointerp.h
    branches/Cog/spursrc/vm/gcc3x-cointerp.c
    branches/Cog/spurstack64src/vm/gcc3x-interp.c
    branches/Cog/spurstack64src/vm/interp.c
    branches/Cog/spurstacksrc/vm/gcc3x-interp.c
    branches/Cog/spurstacksrc/vm/interp.c
    branches/Cog/src/vm/cogit.h
    branches/Cog/src/vm/cogitARMv5.c
    branches/Cog/src/vm/cogitIA32.c
    branches/Cog/src/vm/cogitMIPSEL.c
    branches/Cog/src/vm/cointerp.c
    branches/Cog/src/vm/cointerp.h
    branches/Cog/src/vm/cointerpmt.c
    branches/Cog/src/vm/cointerpmt.h
    branches/Cog/src/vm/gcc3x-cointerp.c
    branches/Cog/src/vm/gcc3x-cointerpmt.c
    branches/Cog/stacksrc/vm/gcc3x-interp.c
    branches/Cog/stacksrc/vm/interp.c

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

Modified: branches/Cog/nsspur64src/vm/cogit.h
===================================================================
--- branches/Cog/nsspur64src/vm/cogit.h	2016-04-29 13:58:43 UTC (rev 3689)
+++ branches/Cog/nsspur64src/vm/cogit.h	2016-04-30 17:58:20 UTC (rev 3690)
@@ -1,5 +1,5 @@
 /* Automatically generated by
-	CCodeGenerator VMMaker.oscog-eem.1851 uuid: a2b37448-8ea6-480e-aa07-e99d6de1744a
+	CCodeGenerator VMMaker.oscog-nice.1853 uuid: 3ff63b2d-9dc9-4d6a-b3ff-fb6d37f1085e
  */
 
 

Modified: branches/Cog/nsspur64src/vm/cogitX64.c
===================================================================
--- branches/Cog/nsspur64src/vm/cogitX64.c	2016-04-29 13:58:43 UTC (rev 3689)
+++ branches/Cog/nsspur64src/vm/cogitX64.c	2016-04-30 17:58:20 UTC (rev 3690)
@@ -1,9 +1,9 @@
 /* Automatically generated by
-	CCodeGenerator VMMaker.oscog-eem.1851 uuid: a2b37448-8ea6-480e-aa07-e99d6de1744a
+	CCodeGenerator VMMaker.oscog-nice.1853 uuid: 3ff63b2d-9dc9-4d6a-b3ff-fb6d37f1085e
    from
-	StackToRegisterMappingCogit VMMaker.oscog-eem.1851 uuid: a2b37448-8ea6-480e-aa07-e99d6de1744a
+	StackToRegisterMappingCogit VMMaker.oscog-nice.1853 uuid: 3ff63b2d-9dc9-4d6a-b3ff-fb6d37f1085e
  */
-static char __buildInfo[] = "StackToRegisterMappingCogit VMMaker.oscog-eem.1851 uuid: a2b37448-8ea6-480e-aa07-e99d6de1744a " __DATE__ ;
+static char __buildInfo[] = "StackToRegisterMappingCogit VMMaker.oscog-nice.1853 uuid: 3ff63b2d-9dc9-4d6a-b3ff-fb6d37f1085e " __DATE__ ;
 char *__cogitBuildInfo = __buildInfo;
 
 
@@ -5236,9 +5236,9 @@
 findMapLocationForMcpcinMethod(sqInt targetMcpc, CogMethod *cogMethod)
 {
     sqInt annotation;
-    usqInt map;
+    sqInt map;
     sqInt mapByte;
-    usqInt mcpc;
+    sqInt mcpc;
 
 	mcpc = (0
 		? (((usqInt)cogMethod)) + cbNoSwitchEntryOffset
@@ -5322,7 +5322,7 @@
     sqInt annotation;
     usqInt map;
     sqInt mapByte;
-    sqInt mcpc;
+    usqInt mcpc;
     sqInt result;
 
 	assert((((cogMethod->cmType)) != CMMethod)
@@ -5914,12 +5914,12 @@
 generateMapAtstart(sqInt addressOrNull, sqInt startAddress)
 {
     unsigned char annotation;
-    usqInt delta;
+    sqInt delta;
     sqInt i;
     AbstractInstruction *instruction;
     sqInt length;
-    usqInt location;
-    usqInt mapEntry;
+    sqInt location;
+    sqInt mapEntry;
     sqInt maxDelta;
     usqInt mcpc;
 
@@ -7159,7 +7159,7 @@
     sqInt annotation;
     usqInt map;
     sqInt mapByte;
-    sqInt mcpc;
+    usqInt mcpc;
     sqInt result;
 
 	mcpc = (0
@@ -7266,7 +7266,7 @@
     sqInt hasYoungObjPtr;
     usqInt map;
     sqInt mapByte;
-    sqInt mcpc;
+    usqInt mcpc;
     sqInt remappedMethod;
     sqInt result;
     sqInt val;
@@ -7384,7 +7384,7 @@
     CogMethod *cogMethod;
     usqInt map;
     sqInt mapByte;
-    sqInt mcpc;
+    usqInt mcpc;
     sqInt result;
 
 	codeModified = 0;
@@ -7464,7 +7464,7 @@
     sqInt hasYoungObjPtr;
     usqInt map;
     sqInt mapByte;
-    sqInt mcpc;
+    usqInt mcpc;
     usqInt pointer;
     sqInt result;
     sqInt val;
@@ -7586,8 +7586,8 @@
     usqInt map1;
     sqInt mapByte;
     sqInt mapByte1;
-    sqInt mcpc;
-    sqInt mcpc1;
+    usqInt mcpc;
+    usqInt mcpc1;
     sqInt result;
     sqInt result1;
     sqInt val;
@@ -7744,7 +7744,7 @@
     sqInt annotation;
     usqInt map;
     sqInt mapByte;
-    sqInt mcpc;
+    usqInt mcpc;
     sqInt result;
     sqInt val;
 
@@ -8072,7 +8072,7 @@
     CogMethod *cogMethod;
     usqInt map;
     sqInt mapByte;
-    sqInt mcpc;
+    usqInt mcpc;
     sqInt result;
 
 	assert((((aCogMethod->cmType)) == CMMethod)
@@ -8641,9 +8641,9 @@
 printPCMapPairsFor(CogMethod *cogMethod)
 {
     sqInt annotation;
-    usqInt map;
+    sqInt map;
     unsigned char mapByte;
-    usqInt mcpc;
+    sqInt mcpc;
     sqInt value;
 
 	mcpc = (0
@@ -8822,7 +8822,7 @@
     sqLong callDelta;
     usqInt map;
     sqInt mapByte;
-    sqInt mcpc;
+    usqInt mcpc;
     sqLong refDelta;
     sqInt result;
 
@@ -9396,7 +9396,7 @@
     CogMethod *cogMethod;
     usqInt map;
     sqInt mapByte;
-    sqInt mcpc;
+    usqInt mcpc;
     sqInt result;
 
 	if (!(methodZoneBase)) {
@@ -9839,7 +9839,7 @@
     sqInt freedPIC;
     usqInt map;
     sqInt mapByte;
-    sqInt mcpc;
+    usqInt mcpc;
     sqInt result;
 
 	if (!(methodZoneBase)) {
@@ -9916,7 +9916,7 @@
     CogMethod *cogMethod;
     usqInt map;
     sqInt mapByte;
-    sqInt mcpc;
+    usqInt mcpc;
     sqInt mustScanAndUnlink;
     sqInt result;
 
@@ -10015,7 +10015,7 @@
     CogMethod *cogMethod;
     usqInt map;
     sqInt mapByte;
-    sqInt mcpc;
+    usqInt mcpc;
     sqInt result;
 
 	if (!(methodZoneBase)) {
@@ -10084,7 +10084,7 @@
     sqInt freedPIC;
     usqInt map;
     sqInt mapByte;
-    sqInt mcpc;
+    usqInt mcpc;
     sqInt result;
     CogMethod *targetMethod;
 

Modified: branches/Cog/nsspur64src/vm/cointerp.c
===================================================================
--- branches/Cog/nsspur64src/vm/cointerp.c	2016-04-29 13:58:43 UTC (rev 3689)
+++ branches/Cog/nsspur64src/vm/cointerp.c	2016-04-30 17:58:20 UTC (rev 3690)
@@ -1,9 +1,9 @@
 /* Automatically generated by
-	CCodeGeneratorGlobalStructure VMMaker.oscog-eem.1851 uuid: a2b37448-8ea6-480e-aa07-e99d6de1744a
+	CCodeGeneratorGlobalStructure VMMaker.oscog-nice.1853 uuid: 3ff63b2d-9dc9-4d6a-b3ff-fb6d37f1085e
    from
-	CoInterpreter VMMaker.oscog-eem.1851 uuid: a2b37448-8ea6-480e-aa07-e99d6de1744a
+	CoInterpreter VMMaker.oscog-nice.1853 uuid: 3ff63b2d-9dc9-4d6a-b3ff-fb6d37f1085e
  */
-static char __buildInfo[] = "CoInterpreter VMMaker.oscog-eem.1851 uuid: a2b37448-8ea6-480e-aa07-e99d6de1744a " __DATE__ ;
+static char __buildInfo[] = "CoInterpreter VMMaker.oscog-nice.1853 uuid: 3ff63b2d-9dc9-4d6a-b3ff-fb6d37f1085e " __DATE__ ;
 char *__interpBuildInfo = __buildInfo;
 
 
@@ -1657,9 +1657,9 @@
 _iss sqInt profileProcess;
 _iss sqInt numClassTablePages;
 _iss sqInt profileSemaphore;
-_iss sqInt classTableIndex;
 _iss SpurNewSpaceSpace futureSpace;
 _iss sqInt profileMethod;
+_iss sqInt classTableIndex;
 _iss sqInt longRunningPrimitiveCheckSemaphore;
 _iss sqInt numRememberedEphemerons;
 _iss sqInt jmpDepth;
@@ -2436,7 +2436,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.1851";
+const char *interpreterVersion = "Newspeak Virtual Machine CoInterpreterPrimitives_VMMaker.oscog-nice.1853";
 sqInt minBackwardJumpCountForCompile = MinBackwardJumpCountForCompile /* 40 */;
 volatile int sendTrace;
 
@@ -6782,8 +6782,6 @@
 					objOop = fixFollowedFieldofObjectwithInitialValue(SuperclassIndex, classPointer, objOop);
 				}
 				superclass = objOop;
-				/* begin classTagForClass: */
-				assert(addressCouldBeClassObj(superclass));
 				/* begin ensureBehaviorHash: */
 				assert(addressCouldBeClassObj(superclass));
 				GIV(lkupClassTag) = (((hash = (long32At(superclass + 4)) & (identityHashHalfWordMask()))) != 0
@@ -7905,7 +7903,7 @@
 						/* begin fetchNextBytecode */
 						currentBytecode = (byteAtPointer(++localIP)) + GIV(bytecodeSetSelector);
 
-						goto l464;
+						goto l463;
 					}
 					if (bytecode == 172) {
 
@@ -7914,7 +7912,7 @@
 						/* begin fetchNextBytecode */
 						currentBytecode = (byteAtPointer(++localIP)) + GIV(bytecodeSetSelector);
 
-						goto l464;
+						goto l463;
 					}
 					if (bytecode > 167) {
 
@@ -7924,7 +7922,7 @@
 						localIP = (localIP + offset) + 1;
 						currentBytecode = (byteAtPointer(localIP)) + GIV(bytecodeSetSelector);
 
-						goto l464;
+						goto l463;
 					}
 				}
 				currentBytecode = bytecode + GIV(bytecodeSetSelector);
@@ -7932,7 +7930,7 @@
 				/* begin internalPush: */
 				longAtPointerput((localSP -= BytesPerOop), GIV(trueObj));
 			}
-		l464:	/* end case */;
+		l463:	/* end case */;
 			break;
 		case 179:
 			/* bytecodePrimGreaterThan */
@@ -8082,7 +8080,7 @@
 					localIP = (localIP + (bytecode - 151)) + 1;
 					currentBytecode = (byteAtPointer(localIP)) + GIV(bytecodeSetSelector);
 
-					goto l465;
+					goto l464;
 				}
 				if (bytecode == 172) {
 
@@ -8092,14 +8090,14 @@
 					localIP = (localIP + offset) + 1;
 					currentBytecode = (byteAtPointer(localIP)) + GIV(bytecodeSetSelector);
 
-					goto l465;
+					goto l464;
 				}
 				currentBytecode = bytecode + GIV(bytecodeSetSelector);
 
 				/* begin internalPush: */
 				longAtPointerput((localSP -= BytesPerOop), GIV(falseObj));
 			}
-		l465:	/* end case */;
+		l464:	/* end case */;
 			break;
 		case 180:
 			/* bytecodePrimLessOrEqual */
@@ -10255,7 +10253,7 @@
 						/* begin fetchNextBytecode */
 						currentBytecode = (byteAtPointer(++localIP)) + GIV(bytecodeSetSelector);
 
-						goto l466;
+						goto l465;
 					}
 					if (bytecode == 244) {
 
@@ -10264,7 +10262,7 @@
 						/* begin fetchNextBytecode */
 						currentBytecode = (byteAtPointer(++localIP)) + GIV(bytecodeSetSelector);
 
-						goto l466;
+						goto l465;
 					}
 					if (bytecode == 243) {
 
@@ -10274,7 +10272,7 @@
 						localIP = (localIP + offset) + 1;
 						currentBytecode = (byteAtPointer(localIP)) + GIV(bytecodeSetSelector);
 
-						goto l466;
+						goto l465;
 					}
 				}
 				currentBytecode = bytecode + GIV(bytecodeSetSelector);
@@ -10282,7 +10280,7 @@
 				/* begin internalPush: */
 				longAtPointerput((localSP -= BytesPerOop), GIV(trueObj));
 			}
-		l466:	/* end case */;
+		l465:	/* end case */;
 			break;
 		case 339: /*83*/
 			/* bytecodePrimGreaterThanV4 */
@@ -10432,7 +10430,7 @@
 					localIP = (localIP + (bytecode - 207)) + 1;
 					currentBytecode = (byteAtPointer(localIP)) + GIV(bytecodeSetSelector);
 
-					goto l467;
+					goto l466;
 				}
 				if (bytecode == 244) {
 
@@ -10442,14 +10440,14 @@
 					localIP = (localIP + offset) + 1;
 					currentBytecode = (byteAtPointer(localIP)) + GIV(bytecodeSetSelector);
 
-					goto l467;
+					goto l466;
 				}
 				currentBytecode = bytecode + GIV(bytecodeSetSelector);
 
 				/* begin internalPush: */
 				longAtPointerput((localSP -= BytesPerOop), GIV(falseObj));
 			}
-		l467:	/* end case */;
+		l466:	/* end case */;
 			break;
 		case 340: /*84*/
 			/* bytecodePrimLessOrEqualV4 */
@@ -13007,12 +13005,12 @@
 					classTablePage = longAt((GIV(hiddenRootsObj) + BaseHeaderSize) + (((long)fieldIndex) << (shiftForWord())));
 					if (classTablePage == GIV(nilObj)) {
 						GIV(lkupClass) = null;
-						goto l468;
+						goto l467;
 					}
 					/* begin fetchPointer:ofObject: */
 					fieldIndex1 = GIV(lkupClassTag) & ((1LL << (classTableMajorIndexShift())) - 1);
 					GIV(lkupClass) = longAt((classTablePage + BaseHeaderSize) + (((long)fieldIndex1) << (shiftForWord())));
-				l468:	/* end classAtIndex: */;
+				l467:	/* end classAtIndex: */;
 					/* begin lookupImplicitReceiverSend */
 					GIV(messageSelector) = (((GIV(messageSelector) & (tagMask())) == 0)
 					 && (((longAt(GIV(messageSelector))) & (classIndexMask())) == (isForwardedObjectClassIndexPun()))
@@ -13077,12 +13075,12 @@
 									}
 									GIV(newMethod) = objOop2;
 									found = 1;
-									goto l473;
+									goto l472;
 								}
 								index += 1;
 							}
 							found = 0;
-							goto l473;
+							goto l472;
 						}
 
 						/* It is assumed that there are some nils in this dictionary, and search will
@@ -13106,7 +13104,7 @@
 							nextSelector = longAt((dictionary + BaseHeaderSize) + (((long)index) << (shiftForWord())));
 							if (nextSelector == GIV(nilObj)) {
 								found = 0;
-								goto l473;
+								goto l472;
 							}
 							if (((nextSelector & (tagMask())) == 0)
 							 && (((longAt(nextSelector)) & (classIndexMask())) == (isForwardedObjectClassIndexPun()))) {
@@ -13128,24 +13126,24 @@
 								}
 								GIV(newMethod) = objOop4;
 								found = 1;
-								goto l473;
+								goto l472;
 							}
 							index += 1;
 							if (index == length) {
 								if (wrapAround) {
 									found = 0;
-									goto l473;
+									goto l472;
 								}
 								wrapAround = 1;
 								index = SelectorStart;
 							}
 						}
 						found = 0;
-					l473:	/* end lookupMethodInDictionary: */;
+					l472:	/* end lookupMethodInDictionary: */;
 						if (found) {
 							GIV(localAbsentReceiver) = candidateReceiver;
 							actualLookupRule = lookupLexicalfromrule(GIV(messageSelector), candidateMixin, LookupRuleImplicit);
-							goto l478;
+							goto l477;
 						}
 						/* begin followObjField:ofObject: */
 						objOop1 = longAt((candidateMixin + BaseHeaderSize) + (((long)EnclosingMixinIndex) << (shiftForWord())));
@@ -13166,7 +13164,7 @@
 						? longAt((GIV(classTableFirstPage) + BaseHeaderSize) + (((long)tagBits1) << (shiftForWord())))
 						: fetchClassOfNonImm(methodReceiver));
 					actualLookupRule = lookupProtectedstartingAtrule(GIV(messageSelector), GIV(lkupClass), LookupRuleImplicit);
-				l478:	/* end lookupImplicitReceiverSend */;
+				l477:	/* end lookupImplicitReceiverSend */;
 					/* begin internalizeIPandSP */
 					assert(GIV(instructionPointer) != (ceReturnToInterpreterPC()));
 					localIP = pointerForOop(GIV(instructionPointer));
@@ -13194,26 +13192,26 @@
 						if (localPrimIndex >= 264) {
 							/* begin internalStackTopPut: */
 							longAtPointerput(localSP, longAt(((longAtPointer(localSP)) + BaseHeaderSize) + (((long)(localPrimIndex - 264)) << (shiftForWord()))));
-							goto l469;
+							goto l468;
 						}
 						if (localPrimIndex == 256) {
-							goto l469;
+							goto l468;
 						}
 						if (localPrimIndex == 257) {
 							longAtPointerput(localSP, GIV(trueObj));
-							goto l469;
+							goto l468;
 						}
 						if (localPrimIndex == 258) {
 							longAtPointerput(localSP, GIV(falseObj));
-							goto l469;
+							goto l468;
 						}
 						if (localPrimIndex == 259) {
 							longAtPointerput(localSP, GIV(nilObj));
-							goto l469;
+							goto l468;
 						}
 						longAtPointerput(localSP, (((localPrimIndex - 261) << 3) | 1));
-					l469:	/* end internalQuickPrimitiveResponse */;
-						goto l470;
+					l468:	/* end internalQuickPrimitiveResponse */;
+						goto l469;
 					}
 					/* begin externalizeIPandSP */
 					assert((((usqInt)localIP)) != (ceReturnToInterpreterPC()));
@@ -13275,7 +13273,7 @@
 					if (succeeded) {
 						returntoExecutive(popStack(), 1);
 						browserPluginReturnIfNeeded();
-						goto l470;
+						goto l469;
 					}
 				}
 				if (methodHasCogMethod(GIV(newMethod))) {
@@ -13350,11 +13348,11 @@
 									table = longAt((GIV(specialObjectsOop) + BaseHeaderSize) + (((long)PrimErrTableIndex) << (shiftForWord())));
 									if (GIV(primFailCode) <= (numSlotsOf(table))) {
 										errorCode = longAt((table + BaseHeaderSize) + (((long)(GIV(primFailCode) - 1)) << (shiftForWord())));
-										goto l481;
+										goto l480;
 									}
 								}
 								errorCode = ((GIV(primFailCode) << 3) | 1);
-							l481:	/* end getErrorObjectFromPrimFailCode */;
+							l480:	/* end getErrorObjectFromPrimFailCode */;
 								longAtPointerput(localSP, errorCode);
 							}
 							GIV(primFailCode) = 0;
@@ -13378,7 +13376,7 @@
 						localFP = pointerForOop(GIV(framePointer));
 					}
 				}
-			l470:	/* end internalExecuteNewMethod */;
+			l469:	/* end internalExecuteNewMethod */;
 				/* begin fetchNextBytecode */
 				currentBytecode = (byteAtPointer(++localIP)) + GIV(bytecodeSetSelector);
 
@@ -13458,7 +13456,7 @@
 					GIV(newMethod) = GIV(nsMethodCache)[probe1 + NSMethodCacheTargetMethod];
 					primitiveFunctionPointer = ((void (*)()) (GIV(nsMethodCache)[probe1 + NSMethodCachePrimFunction]));
 					GIV(localAbsentReceiverOrZero) = GIV(nsMethodCache)[probe1 + NSMethodCacheActualReceiver];
-					goto l491;
+					goto l490;
 				}
 
 				/* second probe */
@@ -13470,7 +13468,7 @@
 					GIV(newMethod) = GIV(nsMethodCache)[probe1 + NSMethodCacheTargetMethod];
 					primitiveFunctionPointer = ((void (*)()) (GIV(nsMethodCache)[probe1 + NSMethodCachePrimFunction]));
 					GIV(localAbsentReceiverOrZero) = GIV(nsMethodCache)[probe1 + NSMethodCacheActualReceiver];
-					goto l491;
+					goto l490;
 				}
 				probe1 = (((usqInt) hash1) >> 2) & NSMethodCacheMask;
 				if (((((GIV(nsMethodCache)[probe1 + NSMethodCacheSelector]) == GIV(messageSelector))
@@ -13480,7 +13478,7 @@
 					GIV(newMethod) = GIV(nsMethodCache)[probe1 + NSMethodCacheTargetMethod];
 					primitiveFunctionPointer = ((void (*)()) (GIV(nsMethodCache)[probe1 + NSMethodCachePrimFunction]));
 					GIV(localAbsentReceiverOrZero) = GIV(nsMethodCache)[probe1 + NSMethodCacheActualReceiver];
-					goto l491;
+					goto l490;
 				}
 				/* end inlineLookupInNSMethodCacheSel:classTag:method:lookupRule:; fall through */
 				/* begin externalizeIPandSP */
@@ -13507,12 +13505,12 @@
 				classTablePage = longAt((GIV(hiddenRootsObj) + BaseHeaderSize) + (((long)fieldIndex) << (shiftForWord())));
 				if (classTablePage == GIV(nilObj)) {
 					GIV(lkupClass) = null;
-					goto l485;
+					goto l484;
 				}
 				/* begin fetchPointer:ofObject: */
 				fieldIndex1 = GIV(lkupClassTag) & ((1LL << (classTableMajorIndexShift())) - 1);
 				GIV(lkupClass) = longAt((classTablePage + BaseHeaderSize) + (((long)fieldIndex1) << (shiftForWord())));
-			l485:	/* end classAtIndex: */;
+			l484:	/* end classAtIndex: */;
 				/* begin lookupDynamicSuperSend */
 				GIV(localAbsentReceiver) = longAt(localFP + FoxIFReceiver);
 				GIV(localAbsentReceiverOrZero) = 0;
@@ -13534,7 +13532,7 @@
 				localSP = pointerForOop(GIV(stackPointer));
 				localFP = pointerForOop(GIV(framePointer));
 				addNewMethodToNSCache(actualLookupRule);
-			l491:	;
+			l490:	;
 
 				/* begin shuffleArgumentsAndStoreAbsentReceiver: */
 
@@ -13556,26 +13554,26 @@
 						if (localPrimIndex >= 264) {
 							/* begin internalStackTopPut: */
 							longAtPointerput(localSP, longAt(((longAtPointer(localSP)) + BaseHeaderSize) + (((long)(localPrimIndex - 264)) << (shiftForWord()))));
-							goto l486;
+							goto l485;
 						}
 						if (localPrimIndex == 256) {
-							goto l486;
+							goto l485;
 						}
 						if (localPrimIndex == 257) {
 							longAtPointerput(localSP, GIV(trueObj));
-							goto l486;
+							goto l485;
 						}
 						if (localPrimIndex == 258) {
 							longAtPointerput(localSP, GIV(falseObj));
-							goto l486;
+							goto l485;
 						}
 						if (localPrimIndex == 259) {
 							longAtPointerput(localSP, GIV(nilObj));
-							goto l486;
+							goto l485;
 						}
 						longAtPointerput(localSP, (((localPrimIndex - 261) << 3) | 1));
-					l486:	/* end internalQuickPrimitiveResponse */;
-						goto l487;
+					l485:	/* end internalQuickPrimitiveResponse */;
+						goto l486;
 					}
 					/* begin externalizeIPandSP */
 					assert((((usqInt)localIP)) != (ceReturnToInterpreterPC()));
@@ -13637,7 +13635,7 @@
 					if (succeeded) {
 						returntoExecutive(popStack(), 1);
 						browserPluginReturnIfNeeded();
-						goto l487;
+						goto l486;
 					}
 				}
 				if (methodHasCogMethod(GIV(newMethod))) {
@@ -13712,11 +13710,11 @@
 									table = longAt((GIV(specialObjectsOop) + BaseHeaderSize) + (((long)PrimErrTableIndex) << (shiftForWord())));
 									if (GIV(primFailCode) <= (numSlotsOf(table))) {
 										errorCode = longAt((table + BaseHeaderSize) + (((long)(GIV(primFailCode) - 1)) << (shiftForWord())));
-										goto l493;
+										goto l492;
 									}
 								}
 								errorCode = ((GIV(primFailCode) << 3) | 1);
-							l493:	/* end getErrorObjectFromPrimFailCode */;
+							l492:	/* end getErrorObjectFromPrimFailCode */;
 								longAtPointerput(localSP, errorCode);
 							}
 							GIV(primFailCode) = 0;
@@ -13740,7 +13738,7 @@
 						localFP = pointerForOop(GIV(framePointer));
 					}
 				}
-			l487:	/* end internalExecuteNewMethod */;
+			l486:	/* end internalExecuteNewMethod */;
 				/* begin fetchNextBytecode */
 				currentBytecode = (byteAtPointer(++localIP)) + GIV(bytecodeSetSelector);
 
@@ -15212,7 +15210,7 @@
 	}
 
 	/* drop low-order zeros from addresses (if classObj not classTag) */
-	hash = GIV(messageSelector) ^ (classTagForClass(classObj));
+	hash = GIV(messageSelector) ^ (ensureBehaviorHash(classObj));
 	if (((GIV(newMethod) & (tagMask())) == 0)
 	 && (((((usqInt) (longAt(GIV(newMethod)))) >> (formatShift())) & (formatMask())) >= (firstCompiledMethodFormat()))) {
 		/* begin primitiveIndexOfMethod:header: */
@@ -15250,7 +15248,7 @@
 
 			/* Found an empty entry -- use it */
 			GIV(methodCache)[probe + MethodCacheSelector] = GIV(messageSelector);
-			GIV(methodCache)[probe + MethodCacheClass] = (classTagForClass(classObj));
+			GIV(methodCache)[probe + MethodCacheClass] = (ensureBehaviorHash(classObj));
 			GIV(methodCache)[probe + MethodCacheMethod] = GIV(newMethod);
 			GIV(methodCache)[probe + MethodCachePrimFunction] = (((long) primitiveFunctionPointer));
 
@@ -15263,7 +15261,7 @@
 	/* first probe */
 	probe = hash & MethodCacheMask;
 	GIV(methodCache)[probe + MethodCacheSelector] = GIV(messageSelector);
-	GIV(methodCache)[probe + MethodCacheClass] = (classTagForClass(classObj));
+	GIV(methodCache)[probe + MethodCacheClass] = (ensureBehaviorHash(classObj));
 	GIV(methodCache)[probe + MethodCacheMethod] = GIV(newMethod);
 	GIV(methodCache)[probe + MethodCachePrimFunction] = (((long) primitiveFunctionPointer));
 
@@ -17507,7 +17505,6 @@
 			objOop = fixFollowedFieldofObjectwithInitialValue(SuperclassIndex, classPointer, objOop);
 		}
 		classObj1 = objOop;
-		assert(addressCouldBeClassObj(classObj1));
 		/* begin ensureBehaviorHash: */
 		assert(addressCouldBeClassObj(classObj1));
 		classTag = (((hash = (long32At(classObj1 + 4)) & (identityHashHalfWordMask()))) != 0
@@ -17757,7 +17754,7 @@
 static sqInt
 checkForAndFollowForwardedPrimitiveState(void)
 {   DECL_MAYBE_SQ_GLOBAL_STRUCT
-    sqInt accessorDepth;
+    signed char accessorDepth;
     sqInt firstBytecode;
     sqInt found;
     sqInt found1;
@@ -19354,7 +19351,7 @@
 	GIV(instructionPointer) = top;
 	createActualMessageTo(classForMessage);
 	GIV(messageSelector) = longAt((GIV(specialObjectsOop) + BaseHeaderSize) + (((long)selectorIndex) << (shiftForWord())));
-	if (lookupInMethodCacheSelclassTag(GIV(messageSelector), classTagForClass(GIV(lkupClass)))) {
+	if (lookupInMethodCacheSelclassTag(GIV(messageSelector), ensureBehaviorHash(GIV(lkupClass)))) {
 
 		/* check for coggability because method is in the cache */
 		/* begin ifAppropriateCompileToNativeCode:selector: */
@@ -27090,7 +27087,7 @@
 	Bit 4 = method too big to be jitted (more than 64k of code, or needs more
 	than 1.5Mb of stack space to compile)
 	Bit 5 = method contains unknown/unjittable bytecode
-	Bit 7 = method should not be jitted because it contains a primitive not to
+	Bit 6 = method should not be jitted because it contains a primitive not to
 	be called from machine code (unused) */
 
 	/* CoInterpreterPrimitives>>#primitiveMethodXray */
@@ -27121,10 +27118,10 @@
 				flags = 1 + 16;
 				break;
 			case EncounteredUnknownBytecode:
-				1 + 32;
+				flags = 1 + 32;
 				break;
 			case ShouldNotJIT:
-				1 + 64;
+				flags = 1 + 64;
 				break;
 			default:
 				assert(!(((((((sqInt)cogMethod)) >= MaxNegativeErrorCode) && ((((sqInt)cogMethod)) <= NotFullyInitialized)))));
@@ -37416,7 +37413,7 @@
 	if (!(((argumentArray & (tagMask())) == 0)
 		 && (((((usqInt) (longAt(argumentArray))) >> (formatShift())) & (formatMask())) == 2))) {
 		GIV(primFailCode) = PrimErrBadArgument;
-		goto l8;
+		goto l7;
 	}
 	/* begin numSlotsOf: */
 	flag("endianness");
@@ -37427,7 +37424,7 @@
 		: numSlots);
 	if (arraySize > (LargeContextSlots - CtxtTempFrameStart)) {
 		GIV(primFailCode) = PrimErrBadNumArgs;
-		goto l8;
+		goto l7;
 	}
 
 	/* Push newMethod to save it in case of failure,
@@ -37461,10 +37458,8 @@
 		? (((tagBits1 = rcvr & (tagMask()))) != 0
 				? tagBits1
 				: (longAt(rcvr)) & (classIndexMask()))
-		: (/* begin classTagForClass: */
+		: (/* begin ensureBehaviorHash: */
 			assert(addressCouldBeClassObj(lookupClass)),
-			/* begin ensureBehaviorHash: */
-			assert(addressCouldBeClassObj(lookupClass)),
 			(((hash = (long32At(lookupClass + 4)) & (identityHashHalfWordMask()))) != 0
 					? hash
 					: (objCouldBeClassObj(lookupClass)
@@ -37492,7 +37487,7 @@
 		GIV(stackPointer) += BytesPerWord;
 		GIV(newMethod) = top;
 		GIV(primFailCode) = PrimErrBadNumArgs;
-		goto l8;
+		goto l7;
 	}
 
 	/* +2 = receiver + saved newMethod */
@@ -37505,7 +37500,7 @@
 	executeNewMethod();
 	/* begin initPrimCall */
 	GIV(primFailCode) = 0;
-l8:	/* end primitiveObject:perform:withArguments:lookedUpIn: */;
+l7:	/* end primitiveObject:perform:withArguments:lookedUpIn: */;
 }
 
 	/* InterpreterPrimitives>>#primitivePerformWithArgs */
@@ -37536,7 +37531,7 @@
 	if (!(((argumentArray & (tagMask())) == 0)
 		 && (((((usqInt) (longAt(argumentArray))) >> (formatShift())) & (formatMask())) == 2))) {
 		GIV(primFailCode) = PrimErrBadArgument;
-		goto l7;
+		goto l6;
 	}
 	/* begin numSlotsOf: */
 	flag("endianness");
@@ -37547,7 +37542,7 @@
 		: numSlots);
 	if (arraySize > (LargeContextSlots - CtxtTempFrameStart)) {
 		GIV(primFailCode) = PrimErrBadNumArgs;
-		goto l7;
+		goto l6;
 	}
 
 	/* Push newMethod to save it in case of failure,
@@ -37598,7 +37593,7 @@
 		GIV(stackPointer) += BytesPerWord;
 		GIV(newMethod) = top;
 		GIV(primFailCode) = PrimErrBadNumArgs;
-		goto l7;
+		goto l6;
 	}
 
 	/* +2 = receiver + saved newMethod */
@@ -37611,7 +37606,7 @@
 	executeNewMethod();
 	/* begin initPrimCall */
 	GIV(primFailCode) = 0;
-l7:	/* end primitiveObject:perform:withArguments:lookedUpIn: */;
+l6:	/* end primitiveObject:perform:withArguments:lookedUpIn: */;
 }
 
 
@@ -43000,7 +42995,7 @@
     sqInt fmt;
     usqInt instBytes;
     sqInt instFormat;
-    sqInt newFormat;
+    usqInt newFormat;
     sqInt normalizedInstFormat;
     usqInt numBytes;
     usqInt numSlots;
@@ -49038,7 +49033,6 @@
     sqInt err;
     sqInt hash;
 
-	assert(addressCouldBeClassObj(classObj));
 	/* begin ensureBehaviorHash: */
 	assert(addressCouldBeClassObj(classObj));
 	return (((hash = (long32At(classObj + 4)) & (identityHashHalfWordMask()))) != 0
@@ -50546,6 +50540,7 @@
 enterIntoClassTable(sqInt aBehavior)
 {   DECL_MAYBE_SQ_GLOBAL_STRUCT
     sqInt classIndex;
+    sqInt hash;
     sqInt i;
     sqInt iLimiT;
     sqInt initialMajorIndex;
@@ -50618,9 +50613,10 @@
 				}
 				longAtput((page + BaseHeaderSize) + (((long)i) << (shiftForWord())), aBehavior);
 				/* begin setHashBitsOf:to: */
+				hash = GIV(classTableIndex);
 				flag("endianness");
-				assert(((GIV(classTableIndex) >= 0) && (GIV(classTableIndex) <= (identityHashHalfWordMask()))));
-				long32Atput(aBehavior + 4, ((((long32At(aBehavior + 4)) | (identityHashHalfWordMask())) - (identityHashHalfWordMask()))) + GIV(classTableIndex));
+				assert(((hash >= 0) && (hash <= (identityHashHalfWordMask()))));
+				long32Atput(aBehavior + 4, ((((long32At(aBehavior + 4)) | (identityHashHalfWordMask())) - (identityHashHalfWordMask()))) + hash);
 				assert((classAtIndex(rawHashBitsOf(aBehavior))) == aBehavior);
 				return 0;
 			}
@@ -61370,7 +61366,7 @@
     usqInt prevFree;
     usqInt prevFreeChunk;
     usqInt prevPrevFree;
-    usqInt prevPrevFreeChunk;
+    sqInt prevPrevFreeChunk;
     sqInt slotBytes;
     sqInt slotBytes1;
     usqInt there;

Modified: branches/Cog/nsspur64src/vm/cointerp.h
===================================================================
--- branches/Cog/nsspur64src/vm/cointerp.h	2016-04-29 13:58:43 UTC (rev 3689)
+++ branches/Cog/nsspur64src/vm/cointerp.h	2016-04-30 17:58:20 UTC (rev 3690)
@@ -1,5 +1,5 @@
 /* Automatically generated by
-	CCodeGeneratorGlobalStructure VMMaker.oscog-eem.1851 uuid: a2b37448-8ea6-480e-aa07-e99d6de1744a
+	CCodeGeneratorGlobalStructure VMMaker.oscog-nice.1853 uuid: 3ff63b2d-9dc9-4d6a-b3ff-fb6d37f1085e
  */
 
 

Modified: branches/Cog/nsspur64src/vm/gcc3x-cointerp.c
===================================================================
--- branches/Cog/nsspur64src/vm/gcc3x-cointerp.c	2016-04-29 13:58:43 UTC (rev 3689)
+++ branches/Cog/nsspur64src/vm/gcc3x-cointerp.c	2016-04-30 17:58:20 UTC (rev 3690)
@@ -2,11 +2,11 @@
 
 
 /* Automatically generated by
-	CCodeGeneratorGlobalStructure VMMaker.oscog-eem.1851 uuid: a2b37448-8ea6-480e-aa07-e99d6de1744a
+	CCodeGeneratorGlobalStructure VMMaker.oscog-nice.1853 uuid: 3ff63b2d-9dc9-4d6a-b3ff-fb6d37f1085e
    from
-	CoInterpreter VMMaker.oscog-eem.1851 uuid: a2b37448-8ea6-480e-aa07-e99d6de1744a
+	CoInterpreter VMMaker.oscog-nice.1853 uuid: 3ff63b2d-9dc9-4d6a-b3ff-fb6d37f1085e
  */
-static char __buildInfo[] = "CoInterpreter VMMaker.oscog-eem.1851 uuid: a2b37448-8ea6-480e-aa07-e99d6de1744a " __DATE__ ;
+static char __buildInfo[] = "CoInterpreter VMMaker.oscog-nice.1853 uuid: 3ff63b2d-9dc9-4d6a-b3ff-fb6d37f1085e " __DATE__ ;
 char *__interpBuildInfo = __buildInfo;
 
 
@@ -1660,9 +1660,9 @@
 _iss sqInt profileProcess;
 _iss sqInt numClassTablePages;
 _iss sqInt profileSemaphore;
-_iss sqInt classTableIndex;
 _iss SpurNewSpaceSpace futureSpace;
 _iss sqInt profileMethod;
+_iss sqInt classTableIndex;
 _iss sqInt longRunningPrimitiveCheckSemaphore;
 _iss sqInt numRememberedEphemerons;
 _iss sqInt jmpDepth;
@@ -2439,7 +2439,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.1851";
+const char *interpreterVersion = "Newspeak Virtual Machine CoInterpreterPrimitives_VMMaker.oscog-nice.1853";
 sqInt minBackwardJumpCountForCompile = MinBackwardJumpCountForCompile /* 40 */;
 volatile int sendTrace;
 
@@ -6791,8 +6791,6 @@
 					objOop = fixFollowedFieldofObjectwithInitialValue(SuperclassIndex, classPointer, objOop);
 				}
 				superclass = objOop;
-				/* begin classTagForClass: */
-				assert(addressCouldBeClassObj(superclass));
 				/* begin ensureBehaviorHash: */
 				assert(addressCouldBeClassObj(superclass));
 				GIV(lkupClassTag) = (((hash = (long32At(superclass + 4)) & (identityHashHalfWordMask()))) != 0
@@ -7914,7 +7912,7 @@
 						/* begin fetchNextBytecode */
 						currentBytecode = (byteAtPointer(++localIP)) + GIV(bytecodeSetSelector);
 
-						goto l464;
+						goto l463;
 					}
 					if (bytecode == 172) {
 
@@ -7923,7 +7921,7 @@
 						/* begin fetchNextBytecode */
 						currentBytecode = (byteAtPointer(++localIP)) + GIV(bytecodeSetSelector);
 
-						goto l464;
+						goto l463;
 					}
 					if (bytecode > 167) {
 
@@ -7933,7 +7931,7 @@
 						localIP = (localIP + offset) + 1;
 						currentBytecode = (byteAtPointer(localIP)) + GIV(bytecodeSetSelector);
 
-						goto l464;
+						goto l463;
 					}
 				}
 				currentBytecode = bytecode + GIV(bytecodeSetSelector);
@@ -7941,7 +7939,7 @@
 				/* begin internalPush: */
 				longAtPointerput((localSP -= BytesPerOop), GIV(trueObj));
 			}
-		l464:	/* end case */;
+		l463:	/* end case */;
 			BREAK;
 		CASE(179)
 			/* bytecodePrimGreaterThan */
@@ -8091,7 +8089,7 @@
 					localIP = (localIP + (bytecode - 151)) + 1;
 					currentBytecode = (byteAtPointer(localIP)) + GIV(bytecodeSetSelector);
 
-					goto l465;
+					goto l464;
 				}
 				if (bytecode == 172) {
 
@@ -8101,14 +8099,14 @@
 					localIP = (localIP + offset) + 1;
 					currentBytecode = (byteAtPointer(localIP)) + GIV(bytecodeSetSelector);
 
-					goto l465;
+					goto l464;
 				}
 				currentBytecode = bytecode + GIV(bytecodeSetSelector);
 
 				/* begin internalPush: */
 				longAtPointerput((localSP -= BytesPerOop), GIV(falseObj));
 			}
-		l465:	/* end case */;
+		l464:	/* end case */;
 			BREAK;
 		CASE(180)
 			/* bytecodePrimLessOrEqual */
@@ -10264,7 +10262,7 @@
 						/* begin fetchNextBytecode */
 						currentBytecode = (byteAtPointer(++localIP)) + GIV(bytecodeSetSelector);
 
-						goto l466;
+						goto l465;
 					}
 					if (bytecode == 244) {
 
@@ -10273,7 +10271,7 @@
 						/* begin fetchNextBytecode */
 						currentBytecode = (byteAtPointer(++localIP)) + GIV(bytecodeSetSelector);
 
-						goto l466;
+						goto l465;
 					}
 					if (bytecode == 243) {
 
@@ -10283,7 +10281,7 @@
 						localIP = (localIP + offset) + 1;
 						currentBytecode = (byteAtPointer(localIP)) + GIV(bytecodeSetSelector);
 
-						goto l466;
+						goto l465;
 					}
 				}
 				currentBytecode = bytecode + GIV(bytecodeSetSelector);
@@ -10291,7 +10289,7 @@
 				/* begin internalPush: */
 				longAtPointerput((localSP -= BytesPerOop), GIV(trueObj));
 			}
-		l466:	/* end case */;
+		l465:	/* end case */;
 			BREAK;
 		CASE(339) /*83*/
 			/* bytecodePrimGreaterThanV4 */
@@ -10441,7 +10439,7 @@
 					localIP = (localIP + (bytecode - 207)) + 1;
 					currentBytecode = (byteAtPointer(localIP)) + GIV(bytecodeSetSelector);
 
-					goto l467;
+					goto l466;
 				}
 				if (bytecode == 244) {
 
@@ -10451,14 +10449,14 @@
 					localIP = (localIP + offset) + 1;
 					currentBytecode = (byteAtPointer(localIP)) + GIV(bytecodeSetSelector);
 
-					goto l467;
+					goto l466;
 				}
 				currentBytecode = bytecode + GIV(bytecodeSetSelector);
 
 				/* begin internalPush: */
 				longAtPointerput((localSP -= BytesPerOop), GIV(falseObj));
 			}
-		l467:	/* end case */;
+		l466:	/* end case */;
 			BREAK;
 		CASE(340) /*84*/
 			/* bytecodePrimLessOrEqualV4 */
@@ -13016,12 +13014,12 @@
 					classTablePage = longAt((GIV(hiddenRootsObj) + BaseHeaderSize) + (((long)fieldIndex) << (shiftForWord())));
 					if (classTablePage == GIV(nilObj)) {
 						GIV(lkupClass) = null;
-						goto l468;
+						goto l467;
 					}
 					/* begin fetchPointer:ofObject: */
 					fieldIndex1 = GIV(lkupClassTag) & ((1LL << (classTableMajorIndexShift())) - 1);
 					GIV(lkupClass) = longAt((classTablePage + BaseHeaderSize) + (((long)fieldIndex1) << (shiftForWord())));
-				l468:	/* end classAtIndex: */;
+				l467:	/* end classAtIndex: */;
 					/* begin lookupImplicitReceiverSend */
 					GIV(messageSelector) = (((GIV(messageSelector) & (tagMask())) == 0)
 					 && (((longAt(GIV(messageSelector))) & (classIndexMask())) == (isForwardedObjectClassIndexPun()))
@@ -13086,12 +13084,12 @@
 									}
 									GIV(newMethod) = objOop2;
 									found = 1;
-									goto l473;
+									goto l472;
 								}
 								index += 1;
 							}
 							found = 0;
-							goto l473;
+							goto l472;
 						}
 
 						/* It is assumed that there are some nils in this dictionary, and search will
@@ -13115,7 +13113,7 @@
 							nextSelector = longAt((dictionary + BaseHeaderSize) + (((long)index) << (shiftForWord())));
 							if (nextSelector == GIV(nilObj)) {
 								found = 0;
-								goto l473;
+								goto l472;
 							}
 							if (((nextSelector & (tagMask())) == 0)
 							 && (((longAt(nextSelector)) & (classIndexMask())) == (isForwardedObjectClassIndexPun()))) {
@@ -13137,24 +13135,24 @@
 								}
 								GIV(newMethod) = objOop4;
 								found = 1;
-								goto l473;
+								goto l472;
 							}
 							index += 1;
 							if (index == length) {
 								if (wrapAround) {
 									found = 0;
-									goto l473;
+									goto l472;
 								}
 								wrapAround = 1;
 								index = SelectorStart;
 							}
 						}
 						found = 0;
-					l473:	/* end lookupMethodInDictionary: */;
+					l472:	/* end lookupMethodInDictionary: */;
 						if (found) {
 							GIV(localAbsentReceiver) = candidateReceiver;
 							actualLookupRule = lookupLexicalfromrule(GIV(messageSelector), candidateMixin, LookupRuleImplicit);
-							goto l478;
+							goto l477;
 						}
 						/* begin followObjField:ofObject: */
 						objOop1 = longAt((candidateMixin + BaseHeaderSize) + (((long)EnclosingMixinIndex) << (shiftForWord())));
@@ -13175,7 +13173,7 @@
 						? longAt((GIV(classTableFirstPage) + BaseHeaderSize) + (((long)tagBits1) << (shiftForWord())))
 						: fetchClassOfNonImm(methodReceiver));
 					actualLookupRule = lookupProtectedstartingAtrule(GIV(messageSelector), GIV(lkupClass), LookupRuleImplicit);
-				l478:	/* end lookupImplicitReceiverSend */;
+				l477:	/* end lookupImplicitReceiverSend */;
 					/* begin internalizeIPandSP */
 					assert(GIV(instructionPointer) != (ceReturnToInterpreterPC()));
 					localIP = pointerForOop(GIV(instructionPointer));
@@ -13203,26 +13201,26 @@
 						if (localPrimIndex >= 264) {
 							/* begin internalStackTopPut: */
 							longAtPointerput(localSP, longAt(((longAtPointer(localSP)) + BaseHeaderSize) + (((long)(localPrimIndex - 264)) << (shiftForWord()))));
-							goto l469;
+							goto l468;
 						}
 						if (localPrimIndex == 256) {
-							goto l469;
+							goto l468;
 						}
 						if (localPrimIndex == 257) {
 							longAtPointerput(localSP, GIV(trueObj));
-							goto l469;
+							goto l468;
 						}
 						if (localPrimIndex == 258) {
 							longAtPointerput(localSP, GIV(falseObj));
-							goto l469;
+							goto l468;
 						}
 						if (localPrimIndex == 259) {
 							longAtPointerput(localSP, GIV(nilObj));
-							goto l469;
+							goto l468;
 						}
 						longAtPointerput(localSP, (((localPrimIndex - 261) << 3) | 1));
-					l469:	/* end internalQuickPrimitiveResponse */;
-						goto l470;
+					l468:	/* end internalQuickPrimitiveResponse */;
+						goto l469;
 					}
 					/* begin externalizeIPandSP */
 					assert((((usqInt)localIP)) != (ceReturnToInterpreterPC()));
@@ -13284,7 +13282,7 @@
 					if (succeeded) {
 						returntoExecutive(popStack(), 1);
 						browserPluginReturnIfNeeded();
-						goto l470;
+						goto l469;
 					}
 				}
 				if (methodHasCogMethod(GIV(newMethod))) {
@@ -13359,11 +13357,11 @@
 									table = longAt((GIV(specialObjectsOop) + BaseHeaderSize) + (((long)PrimErrTableIndex) << (shiftForWord())));
 									if (GIV(primFailCode) <= (numSlotsOf(table))) {
 										errorCode = longAt((table + BaseHeaderSize) + (((long)(GIV(primFailCode) - 1)) << (shiftForWord())));
-										goto l481;
+										goto l480;
 									}
 								}
 								errorCode = ((GIV(primFailCode) << 3) | 1);
-							l481:	/* end getErrorObjectFromPrimFailCode */;
+							l480:	/* end getErrorObjectFromPrimFailCode */;
 								longAtPointerput(localSP, errorCode);
 							}
 							GIV(primFailCode) = 0;
@@ -13387,7 +13385,7 @@
 						localFP = pointerForOop(GIV(framePointer));
 					}
 				}
-			l470:	/* end internalExecuteNewMethod */;
+			l469:	/* end internalExecuteNewMethod */;
 				/* begin fetchNextBytecode */
 				currentBytecode = (byteAtPointer(++localIP)) + GIV(bytecodeSetSelector);
 
@@ -13467,7 +13465,7 @@
 					GIV(newMethod) = GIV(nsMethodCache)[probe1 + NSMethodCacheTargetMethod];
 					primitiveFunctionPointer = ((void (*)()) (GIV(nsMethodCache)[probe1 + NSMethodCachePrimFunction]));
 					GIV(localAbsentReceiverOrZero) = GIV(nsMethodCache)[probe1 + NSMethodCacheActualReceiver];
-					goto l491;
+					goto l490;
 				}
 
 				/* second probe */
@@ -13479,7 +13477,7 @@
 					GIV(newMethod) = GIV(nsMethodCache)[probe1 + NSMethodCacheTargetMethod];
 					primitiveFunctionPointer = ((void (*)()) (GIV(nsMethodCache)[probe1 + NSMethodCachePrimFunction]));
 					GIV(localAbsentReceiverOrZero) = GIV(nsMethodCache)[probe1 + NSMethodCacheActualReceiver];
-					goto l491;
+					goto l490;
 				}
 				probe1 = (((usqInt) hash1) >> 2) & NSMethodCacheMask;
 				if (((((GIV(nsMethodCache)[probe1 + NSMethodCacheSelector]) == GIV(messageSelector))
@@ -13489,7 +13487,7 @@
 					GIV(newMethod) = GIV(nsMethodCache)[probe1 + NSMethodCacheTargetMethod];
 					primitiveFunctionPointer = ((void (*)()) (GIV(nsMethodCache)[probe1 + NSMethodCachePrimFunction]));
 					GIV(localAbsentReceiverOrZero) = GIV(nsMethodCache)[probe1 + NSMethodCacheActualReceiver];
-					goto l491;
+					goto l490;
 				}
 				/* end inlineLookupInNSMethodCacheSel:classTag:method:lookupRule:; fall through */
 				/* begin externalizeIPandSP */
@@ -13516,12 +13514,12 @@
 				classTablePage = longAt((GIV(hiddenRootsObj) + BaseHeaderSize) + (((long)fieldIndex) << (shiftForWord())));
 				if (classTablePage == GIV(nilObj)) {
 					GIV(lkupClass) = null;
-					goto l485;
+					goto l484;
 				}
 				/* begin fetchPointer:ofObject: */
 				fieldIndex1 = GIV(lkupClassTag) & ((1LL << (classTableMajorIndexShift())) - 1);
 				GIV(lkupClass) = longAt((classTablePage + BaseHeaderSize) + (((long)fieldIndex1) << (shiftForWord())));
-			l485:	/* end classAtIndex: */;
+			l484:	/* end classAtIndex: */;
 				/* begin lookupDynamicSuperSend */
 				GIV(localAbsentReceiver) = longAt(localFP + FoxIFReceiver);
 				GIV(localAbsentReceiverOrZero) = 0;
@@ -13543,7 +13541,7 @@
 				localSP = pointerForOop(GIV(stackPointer));
 				localFP = pointerForOop(GIV(framePointer));
 				addNewMethodToNSCache(actualLookupRule);
-			l491:	;
+			l490:	;
 
 				/* begin shuffleArgumentsAndStoreAbsentReceiver: */
 
@@ -13565,26 +13563,26 @@
 						if (localPrimIndex >= 264) {
 							/* begin internalStackTopPut: */
 							longAtPointerput(localSP, longAt(((longAtPointer(localSP)) + BaseHeaderSize) + (((long)(localPrimIndex - 264)) << (shiftForWord()))));
-							goto l486;
+							goto l485;
 						}
 						if (localPrimIndex == 256) {
-							goto l486;
+							goto l485;
 						}
 						if (localPrimIndex == 257) {
 							longAtPointerput(localSP, GIV(trueObj));
-							goto l486;
+							goto l485;
 						}
 						if (localPrimIndex == 258) {
 							longAtPointerput(localSP, GIV(falseObj));
-							goto l486;
+							goto l485;
 						}
 						if (localPrimIndex == 259) {
 							longAtPointerput(localSP, GIV(nilObj));
-							goto l486;
+							goto l485;
 						}
 						longAtPointerput(localSP, (((localPrimIndex - 261) << 3) | 1));
-					l486:	/* end internalQuickPrimitiveResponse */;
-						goto l487;
+					l485:	/* end internalQuickPrimitiveResponse */;
+						goto l486;
 					}
 					/* begin externalizeIPandSP */
 					assert((((usqInt)localIP)) != (ceReturnToInterpreterPC()));
@@ -13646,7 +13644,7 @@
 					if (succeeded) {
 						returntoExecutive(popStack(), 1);
 						browserPluginReturnIfNeeded();
-						goto l487;
+						goto l486;
 					}
 				}
 				if (methodHasCogMethod(GIV(newMethod))) {
@@ -13721,11 +13719,11 @@
 									table = longAt((GIV(specialObjectsOop) + BaseHeaderSize) + (((long)PrimErrTableIndex) << (shiftForWord())));
 									if (GIV(primFailCode) <= (numSlotsOf(table))) {
 										errorCode = longAt((table + BaseHeaderSize) + (((long)(GIV(primFailCode) - 1)) << (shiftForWord())));
-										goto l493;
+										goto l492;
 									}
 								}
 								errorCode = ((GIV(primFailCode) << 3) | 1);
-							l493:	/* end getErrorObjectFromPrimFailCode */;
+							l492:	/* end getErrorObjectFromPrimFailCode */;
 								longAtPointerput(localSP, errorCode);
 							}
 							GIV(primFailCode) = 0;
@@ -13749,7 +13747,7 @@
 						localFP = pointerForOop(GIV(framePointer));
 					}
 				}
-			l487:	/* end internalExecuteNewMethod */;
+			l486:	/* end internalExecuteNewMethod */;
 				/* begin fetchNextBytecode */
 				currentBytecode = (byteAtPointer(++localIP)) + GIV(bytecodeSetSelector);
 
@@ -15221,7 +15219,7 @@
 	}
 
 	/* drop low-order zeros from addresses (if classObj not classTag) */
-	hash = GIV(messageSelector) ^ (classTagForClass(classObj));
+	hash = GIV(messageSelector) ^ (ensureBehaviorHash(classObj));
 	if (((GIV(newMethod) & (tagMask())) == 0)
 	 && (((((usqInt) (longAt(GIV(newMethod)))) >> (formatShift())) & (formatMask())) >= (firstCompiledMethodFormat()))) {
 		/* begin primitiveIndexOfMethod:header: */
@@ -15259,7 +15257,7 @@
 
 			/* Found an empty entry -- use it */
 			GIV(methodCache)[probe + MethodCacheSelector] = GIV(messageSelector);
-			GIV(methodCache)[probe + MethodCacheClass] = (classTagForClass(classObj));
+			GIV(methodCache)[probe + MethodCacheClass] = (ensureBehaviorHash(classObj));
 			GIV(methodCache)[probe + MethodCacheMethod] = GIV(newMethod);
 			GIV(methodCache)[probe + MethodCachePrimFunction] = (((long) primitiveFunctionPointer));
 
@@ -15272,7 +15270,7 @@
 	/* first probe */
 	probe = hash & MethodCacheMask;
 	GIV(methodCache)[probe + MethodCacheSelector] = GIV(messageSelector);
-	GIV(methodCache)[probe + MethodCacheClass] = (classTagForClass(classObj));
+	GIV(methodCache)[probe + MethodCacheClass] = (ensureBehaviorHash(classObj));
 	GIV(methodCache)[probe + MethodCacheMethod] = GIV(newMethod);
 	GIV(methodCache)[probe + MethodCachePrimFunction] = (((long) primitiveFunctionPointer));
 
@@ -17516,7 +17514,6 @@
 			objOop = fixFollowedFieldofObjectwithInitialValue(SuperclassIndex, classPointer, objOop);
 		}
 		classObj1 = objOop;
-		assert(addressCouldBeClassObj(classObj1));
 		/* begin ensureBehaviorHash: */
 		assert(addressCouldBeClassObj(classObj1));
 		classTag = (((hash = (long32At(classObj1 + 4)) & (identityHashHalfWordMask()))) != 0
@@ -17766,7 +17763,7 @@
 static sqInt
 checkForAndFollowForwardedPrimitiveState(void)
 {   DECL_MAYBE_SQ_GLOBAL_STRUCT
-    sqInt accessorDepth;
+    signed char accessorDepth;
     sqInt firstBytecode;
     sqInt found;
     sqInt found1;
@@ -19363,7 +19360,7 @@
 	GIV(instructionPointer) = top;
 	createActualMessageTo(classForMessage);
 	GIV(messageSelector) = longAt((GIV(specialObjectsOop) + BaseHeaderSize) + (((long)selectorIndex) << (shiftForWord())));
-	if (lookupInMethodCacheSelclassTag(GIV(messageSelector), classTagForClass(GIV(lkupClass)))) {
+	if (lookupInMethodCacheSelclassTag(GIV(messageSelector), ensureBehaviorHash(GIV(lkupClass)))) {
 
 		/* check for coggability because method is in the cache */
 		/* begin ifAppropriateCompileToNativeCode:selector: */
@@ -27099,7 +27096,7 @@
 	Bit 4 = method too big to be jitted (more than 64k of code, or needs more
 	than 1.5Mb of stack space to compile)
 	Bit 5 = method contains unknown/unjittable bytecode
-	Bit 7 = method should not be jitted because it contains a primitive not to
+	Bit 6 = method should not be jitted because it contains a primitive not to
 	be called from machine code (unused) */
 
 	/* CoInterpreterPrimitives>>#primitiveMethodXray */
@@ -27130,10 +27127,10 @@
 				flags = 1 + 16;
 				break;
 			case EncounteredUnknownBytecode:
-				1 + 32;
+				flags = 1 + 32;
 				break;
 			case ShouldNotJIT:
-				1 + 64;
+				flags = 1 + 64;
 				break;
 			default:
 				assert(!(((((((sqInt)cogMethod)) >= MaxNegativeErrorCode) && ((((sqInt)cogMethod)) <= NotFullyInitialized)))));
@@ -37425,7 +37422,7 @@
 	if (!(((argumentArray & (tagMask())) == 0)
 		 && (((((usqInt) (longAt(argumentArray))) >> (formatShift())) & (formatMask())) == 2))) {
 		GIV(primFailCode) = PrimErrBadArgument;
-		goto l8;
+		goto l7;
 	}
 	/* begin numSlotsOf: */
 	flag("endianness");
@@ -37436,7 +37433,7 @@
 		: numSlots);
 	if (arraySize > (LargeContextSlots - CtxtTempFrameStart)) {
 		GIV(primFailCode) = PrimErrBadNumArgs;
-		goto l8;
+		goto l7;
 	}
 
 	/* Push newMethod to save it in case of failure,
@@ -37470,10 +37467,8 @@
 		? (((tagBits1 = rcvr & (tagMask()))) != 0
 				? tagBits1
 				: (longAt(rcvr)) & (classIndexMask()))
-		: (/* begin classTagForClass: */
+		: (/* begin ensureBehaviorHash: */
 			assert(addressCouldBeClassObj(lookupClass)),
-			/* begin ensureBehaviorHash: */
-			assert(addressCouldBeClassObj(lookupClass)),
 			(((hash = (long32At(lookupClass + 4)) & (identityHashHalfWordMask()))) != 0
 					? hash
 					: (objCouldBeClassObj(lookupClass)
@@ -37501,7 +37496,7 @@
 		GIV(stackPointer) += BytesPerWord;
 		GIV(newMethod) = top;
 		GIV(primFailCode) = PrimErrBadNumArgs;
-		goto l8;
+		goto l7;
 	}
 
 	/* +2 = receiver + saved newMethod */
@@ -37514,7 +37509,7 @@
 	executeNewMethod();
 	/* begin initPrimCall */
 	GIV(primFailCode) = 0;
-l8:	/* end primitiveObject:perform:withArguments:lookedUpIn: */;
+l7:	/* end primitiveObject:perform:withArguments:lookedUpIn: */;
 }
 
 	/* InterpreterPrimitives>>#primitivePerformWithArgs */
@@ -37545,7 +37540,7 @@
 	if (!(((argumentArray & (tagMask())) == 0)
 		 && (((((usqInt) (longAt(argumentArray))) >> (formatShift())) & (formatMask())) == 2))) {
 		GIV(primFailCode) = PrimErrBadArgument;
-		goto l7;
+		goto l6;
 	}
 	/* begin numSlotsOf: */
 	flag("endianness");
@@ -37556,7 +37551,7 @@
 		: numSlots);
 	if (arraySize > (LargeContextSlots - CtxtTempFrameStart)) {
 		GIV(primFailCode) = PrimErrBadNumArgs;
-		goto l7;
+		goto l6;
 	}
 
 	/* Push newMethod to save it in case of failure,
@@ -37607,7 +37602,7 @@
 		GIV(stackPointer) += BytesPerWord;
 		GIV(newMethod) = top;
 		GIV(primFailCode) = PrimErrBadNumArgs;
-		goto l7;
+		goto l6;
 	}
 
 	/* +2 = receiver + saved newMethod */
@@ -37620,7 +37615,7 @@
 	executeNewMethod();
 	/* begin initPrimCall */
 	GIV(primFailCode) = 0;
-l7:	/* end primitiveObject:perform:withArguments:lookedUpIn: */;
+l6:	/* end primitiveObject:perform:withArguments:lookedUpIn: */;
 }
 
 
@@ -43009,7 +43004,7 @@
     sqInt fmt;
     usqInt instBytes;
     sqInt instFormat;
-    sqInt newFormat;
+    usqInt newFormat;
     sqInt normalizedInstFormat;
     usqInt numBytes;
     usqInt numSlots;
@@ -49047,7 +49042,6 @@
     sqInt err;
     sqInt hash;
 
-	assert(addressCouldBeClassObj(classObj));
 	/* begin ensureBehaviorHash: */
 	assert(addressCouldBeClassObj(classObj));
 	return (((hash = (long32At(classObj + 4)) & (identityHashHalfWordMask()))) != 0
@@ -50555,6 +50549,7 @@
 enterIntoClassTable(sqInt aBehavior)
 {   DECL_MAYBE_SQ_GLOBAL_STRUCT
     sqInt classIndex;
+    sqInt hash;
     sqInt i;
     sqInt iLimiT;
     sqInt initialMajorIndex;
@@ -50627,9 +50622,10 @@
 				}
 				longAtput((page + BaseHeaderSize) + (((long)i) << (shiftForWord())), aBehavior);
 				/* begin setHashBitsOf:to: */
+				hash = GIV(classTableIndex);
 				flag("endianness");
-				assert(((GIV(classTableIndex) >= 0) && (GIV(classTableIndex) <= (identityHashHalfWordMask()))));
-				long32Atput(aBehavior + 4, ((((long32At(aBehavior + 4)) | (identityHashHalfWordMask())) - (identityHashHalfWordMask()))) + GIV(classTableIndex));
+				assert(((hash >= 0) && (hash <= (identityHashHalfWordMask()))));
+				long32Atput(aBehavior + 4, ((((long32At(aBehavior + 4)) | (identityHashHalfWordMask())) - (identityHashHalfWordMask()))) + hash);
 				assert((classAtIndex(rawHashBitsOf(aBehavior))) == aBehavior);
 				return 0;
 			}
@@ -61379,7 +61375,7 @@
     usqInt prevFree;
     usqInt prevFreeChunk;
     usqInt prevPrevFree;
-    usqInt prevPrevFreeChunk;
+    sqInt prevPrevFreeChunk;
     sqInt slotBytes;
     sqInt slotBytes1;
     usqInt there;

Modified: branches/Cog/nsspursrc/vm/cogit.h
===================================================================
--- branches/Cog/nsspursrc/vm/cogit.h	2016-04-29 13:58:43 UTC (rev 3689)
+++ branches/Cog/nsspursrc/vm/cogit.h	2016-04-30 17:58:20 UTC (rev 3690)
@@ -1,5 +1,5 @@
 /* Automatically generated by
-	CCodeGenerator VMMaker.oscog-eem.1851 uuid: a2b37448-8ea6-480e-aa07-e99d6de1744a
+	CCodeGenerator VMMaker.oscog-nice.1853 uuid: 3ff63b2d-9dc9-4d6a-b3ff-fb6d37f1085e
  */
 
 

Modified: branches/Cog/nsspursrc/vm/cogitARMv5.c
===================================================================
--- branches/Cog/nsspursrc/vm/cogitARMv5.c	2016-04-29 13:58:43 UTC (rev 3689)
+++ branches/Cog/nsspursrc/vm/cogitARMv5.c	2016-04-30 17:58:20 UTC (rev 3690)
@@ -1,9 +1,9 @@
 /* Automatically generated by
-	CCodeGenerator VMMaker.oscog-eem.1851 uuid: a2b37448-8ea6-480e-aa07-e99d6de1744a
+	CCodeGenerator VMMaker.oscog-nice.1853 uuid: 3ff63b2d-9dc9-4d6a-b3ff-fb6d37f1085e
    from
-	StackToRegisterMappingCogit VMMaker.oscog-eem.1851 uuid: a2b37448-8ea6-480e-aa07-e99d6de1744a
+	StackToRegisterMappingCogit VMMaker.oscog-nice.1853 uuid: 3ff63b2d-9dc9-4d6a-b3ff-fb6d37f1085e
  */

@@ Diff output truncated at 50000 characters. @@


More information about the Vm-dev mailing list