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

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
1 message Options
Reply | Threaded
Open this post in threaded view
|

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

commits-3
 
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. @@