[commit][2832] CogVM source as per VMMaker.oscog-eem.561

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

[commit][2832] CogVM source as per VMMaker.oscog-eem.561

commits-3
 
Revision: 2832
Author:   eliot
Date:     2013-12-12 14:53:13 -0800 (Thu, 12 Dec 2013)
Log Message:
-----------
CogVM source as per VMMaker.oscog-eem.561

Simplify StackInterpreter>>arrayValueOf: (isWordsOrBytes:
already filters-out immediates).

Remove RPATH spec from unix builds.

Spur:
Fix swizzling of Spur objStacks on start-up.  Spur now snapshots and resumes.
Beef up the objStack asserts and printing to identify my prior malfeasance.

Modified Paths:
--------------
    branches/Cog/nscogsrc/plugins/UnixOSProcessPlugin/UnixOSProcessPlugin.c
    branches/Cog/nscogsrc/vm/cogit.c
    branches/Cog/nscogsrc/vm/cogit.h
    branches/Cog/nscogsrc/vm/cogmethod.h
    branches/Cog/nscogsrc/vm/cointerp.c
    branches/Cog/nscogsrc/vm/cointerp.h
    branches/Cog/nscogsrc/vm/gcc3x-cointerp.c
    branches/Cog/nscogsrc/vm/interp.h
    branches/Cog/nscogsrc/vm/vmCallback.h
    branches/Cog/platforms/unix/config/make.prg.in
    branches/Cog/scripts/findUnofficialFiles
    branches/Cog/spursrc/vm/cointerp.c
    branches/Cog/spursrc/vm/cointerp.h
    branches/Cog/spursrc/vm/gcc3x-cointerp.c
    branches/Cog/spursrc/vm/interp.h
    branches/Cog/spursrc/vm/vmCallback.h
    branches/Cog/spurstacksrc/vm/gcc3x-interp.c
    branches/Cog/spurstacksrc/vm/interp.c
    branches/Cog/spurstacksrc/vm/interp.h
    branches/Cog/spurstacksrc/vm/vmCallback.h
    branches/Cog/src/plugins/UnixOSProcessPlugin/UnixOSProcessPlugin.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/src/vm/interp.h
    branches/Cog/src/vm/vmCallback.h
    branches/Cog/stacksrc/vm/gcc3x-interp.c
    branches/Cog/stacksrc/vm/interp.c
    branches/Cog/stacksrc/vm/interp.h
    branches/Cog/stacksrc/vm/vmCallback.h

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

Modified: branches/Cog/nscogsrc/plugins/UnixOSProcessPlugin/UnixOSProcessPlugin.c
===================================================================
--- branches/Cog/nscogsrc/plugins/UnixOSProcessPlugin/UnixOSProcessPlugin.c 2013-12-12 00:38:39 UTC (rev 2831)
+++ branches/Cog/nscogsrc/plugins/UnixOSProcessPlugin/UnixOSProcessPlugin.c 2013-12-12 22:53:13 UTC (rev 2832)
@@ -1,9 +1,9 @@
 /* Automatically generated by
- VMPluginCodeGenerator VMMaker.oscog-eem.517 uuid: 14ff7126-70ec-4cc4-9f55-70256e6a3d35
+ VMPluginCodeGenerator VMMaker.oscog-eem.561 uuid: 13467880-93b9-4137-9bbc-7ebfd22436ab
    from
- UnixOSProcessPlugin VMConstruction-Plugins-OSProcessPlugin.oscog-eem.44 uuid: 946fd79a-b249-4f25-8d13-11c6a087296f
+ UnixOSProcessPlugin VMConstruction-Plugins-OSProcessPlugin.oscog-eem.45 uuid: 7e7b595f-3783-417f-b514-4f5323e0a3c1
  */
-static char __buildInfo[] = "UnixOSProcessPlugin VMConstruction-Plugins-OSProcessPlugin.oscog-eem.44 uuid: 946fd79a-b249-4f25-8d13-11c6a087296f " __DATE__ ;
+static char __buildInfo[] = "UnixOSProcessPlugin VMConstruction-Plugins-OSProcessPlugin.oscog-eem.45 uuid: 7e7b595f-3783-417f-b514-4f5323e0a3c1 " __DATE__ ;
 /* D T Lewis - UnixOSProcessPlugin.c translated from class
    UnixOSProcessPlugin of OSProcessPlugin version 4.3.3 Cog */
 
@@ -318,9 +318,9 @@
 struct VirtualMachine* interpreterProxy;
 static const char *moduleName =
 #ifdef SQUEAK_BUILTIN_PLUGIN
- "UnixOSProcessPlugin VMConstruction-Plugins-OSProcessPlugin.oscog-eem.44 (i)"
+ "UnixOSProcessPlugin VMConstruction-Plugins-OSProcessPlugin.oscog-eem.45 (i)"
 #else
- "UnixOSProcessPlugin VMConstruction-Plugins-OSProcessPlugin.oscog-eem.44 (e)"
+ "UnixOSProcessPlugin VMConstruction-Plugins-OSProcessPlugin.oscog-eem.45 (e)"
 #endif
 ;
 static void *originalSigHandlers[NSIG];

Modified: branches/Cog/nscogsrc/vm/cogit.c
===================================================================
--- branches/Cog/nscogsrc/vm/cogit.c 2013-12-12 00:38:39 UTC (rev 2831)
+++ branches/Cog/nscogsrc/vm/cogit.c 2013-12-12 22:53:13 UTC (rev 2832)
@@ -1,9 +1,9 @@
 /* Automatically generated by
- CCodeGenerator * VMMaker.oscog-eem.554 uuid: a666e7e4-245e-4e8a-9536-3aefd4509f47
+ CCodeGenerator VMMaker.oscog-eem.561 uuid: 13467880-93b9-4137-9bbc-7ebfd22436ab
    from
- StackToRegisterMappingCogit * VMMaker.oscog-eem.554 uuid: a666e7e4-245e-4e8a-9536-3aefd4509f47
+ StackToRegisterMappingCogit VMMaker.oscog-eem.561 uuid: 13467880-93b9-4137-9bbc-7ebfd22436ab
  */
-static char __buildInfo[] = "StackToRegisterMappingCogit * VMMaker.oscog-eem.554 uuid: a666e7e4-245e-4e8a-9536-3aefd4509f47 " __DATE__ ;
+static char __buildInfo[] = "StackToRegisterMappingCogit VMMaker.oscog-eem.561 uuid: 13467880-93b9-4137-9bbc-7ebfd22436ab " __DATE__ ;
 char *__cogitBuildInfo = __buildInfo;
 
 

Modified: branches/Cog/nscogsrc/vm/cogit.h
===================================================================
--- branches/Cog/nscogsrc/vm/cogit.h 2013-12-12 00:38:39 UTC (rev 2831)
+++ branches/Cog/nscogsrc/vm/cogit.h 2013-12-12 22:53:13 UTC (rev 2832)
@@ -1,5 +1,5 @@
 /* Automatically generated by
- CCodeGenerator * VMMaker.oscog-eem.554 uuid: a666e7e4-245e-4e8a-9536-3aefd4509f47
+ CCodeGenerator VMMaker.oscog-eem.561 uuid: 13467880-93b9-4137-9bbc-7ebfd22436ab
  */
 
 

Modified: branches/Cog/nscogsrc/vm/cogmethod.h
===================================================================
--- branches/Cog/nscogsrc/vm/cogmethod.h 2013-12-12 00:38:39 UTC (rev 2831)
+++ branches/Cog/nscogsrc/vm/cogmethod.h 2013-12-12 22:53:13 UTC (rev 2832)
@@ -1,5 +1,5 @@
 /* Automatically generated by
- CCodeGenerator VMMaker.oscog-eem.554 uuid: a666e7e4-245e-4e8a-9536-3aefd4509f47
+ CCodeGenerator VMMaker.oscog-eem.561 uuid: 13467880-93b9-4137-9bbc-7ebfd22436ab
  */
 
 typedef struct {

Modified: branches/Cog/nscogsrc/vm/cointerp.c
===================================================================
--- branches/Cog/nscogsrc/vm/cointerp.c 2013-12-12 00:38:39 UTC (rev 2831)
+++ branches/Cog/nscogsrc/vm/cointerp.c 2013-12-12 22:53:13 UTC (rev 2832)
@@ -1,9 +1,9 @@
 /* Automatically generated by
- CCodeGeneratorGlobalStructure VMMaker.oscog-eem.558 uuid: ef7afd3b-c404-472c-a05a-9d9c6d905052
+ CCodeGeneratorGlobalStructure VMMaker.oscog-eem.561 uuid: 13467880-93b9-4137-9bbc-7ebfd22436ab
    from
- CoInterpreter VMMaker.oscog-eem.558 uuid: ef7afd3b-c404-472c-a05a-9d9c6d905052
+ CoInterpreter VMMaker.oscog-eem.561 uuid: 13467880-93b9-4137-9bbc-7ebfd22436ab
  */
-static char __buildInfo[] = "CoInterpreter VMMaker.oscog-eem.558 uuid: ef7afd3b-c404-472c-a05a-9d9c6d905052 " __DATE__ ;
+static char __buildInfo[] = "CoInterpreter VMMaker.oscog-eem.561 uuid: 13467880-93b9-4137-9bbc-7ebfd22436ab " __DATE__ ;
 char *__interpBuildInfo = __buildInfo;
 
 
@@ -1143,7 +1143,7 @@
 static void rewriteMethodCacheEntryForExternalPrimitiveToFunction(void (*localPrimAddress)(void));
 static sqInt roomToPushNArgs(sqInt n);
 static void runLeakCheckerForFullGC(sqInt fullGCFlag);
-static usqInt safeObjectAfter(sqInt oop);
+static sqInt safeObjectAfter(sqInt oop);
 static sqInt safePrintStringOf(sqInt oop);
 usqInt scavengeThresholdAddress(void);
 EXPORT(sqInt) sendInvokeCallbackContext(VMCallbackContext *vmCallbackContext);
@@ -2030,7 +2030,7 @@
  /* 575 */ (void (*)(void))0,
  0 };
 static void (*externalPrimitiveTable[MaxExternalPrimitiveTableSize + 1 /* 4097 */])(void);
-const char *interpreterVersion = "Newspeak Virtual Machine CoInterpreter_VMMaker.oscog-eem.558";
+const char *interpreterVersion = "Newspeak Virtual Machine CoInterpreter_VMMaker.oscog-eem.561";
 sqInt minBackwardJumpCountForCompile = MinBackwardJumpCountForCompile /* 10 */;
 volatile int sendTrace;
 
@@ -5666,7 +5666,6 @@
  /* begin internalPush: */
  longAtPointerput((localSP -= BytesPerOop), longAt((rcvr + BaseHeaderSize) + (byte3 << ShiftForWord)));
  }
- null;
  goto l4;
  }
  if (opType == 3) {
@@ -5676,7 +5675,6 @@
  assert(GIV(method) == (iframeMethod(localFP)));
  object = longAt((GIV(method) + BaseHeaderSize) + ((byte3 + LiteralStart) << ShiftForWord));
  longAtPointerput((localSP -= BytesPerOop), object);
- null;
  goto l4;
  }
  if (opType == 4) {
@@ -5690,7 +5688,6 @@
  object2 = longAt((oop + BaseHeaderSize) + (ValueIndex << ShiftForWord));
  longAtPointerput((localSP -= BytesPerOop), object2);
 
- null;
  goto l4;
  }
  top = longAtPointer(localSP);
@@ -13716,8 +13713,7 @@
 arrayValueOf(sqInt arrayOop)
 {   DECL_MAYBE_SQ_GLOBAL_STRUCT
  if (((arrayOop & 1) == 0)
- && (((arrayOop & 1) == 0)
- && (isWordsOrBytesNonImm(arrayOop)))) {
+ && (isWordsOrBytesNonImm(arrayOop))) {
  return ((void *) (pointerForOop(arrayOop + BaseHeaderSize)));
  }
  /* begin primitiveFail */
@@ -20877,8 +20873,7 @@
  arrayOop = longAt((objectPointer + BaseHeaderSize) + (fieldIndex << ShiftForWord));
  /* begin arrayValueOf: */
  if (((arrayOop & 1) == 0)
- && (((arrayOop & 1) == 0)
- && (isWordsOrBytesNonImm(arrayOop)))) {
+ && (isWordsOrBytesNonImm(arrayOop))) {
  return ((void *) (pointerForOop(arrayOop + BaseHeaderSize)));
  }
  /* begin primitiveFail */
@@ -23729,15 +23724,17 @@
     sqInt header1;
     sqInt header2;
     sqInt header3;
+    sqInt header4;
     usqInt lastWord;
     sqInt newFreeChunk;
     sqInt newOop;
-    usqInt next;
+    sqInt next;
     sqInt oop;
     sqInt realHeader;
     sqInt sz;
     sqInt sz1;
     sqInt sz2;
+    sqInt sz3;
     sqInt target;
     usqInt w;
 
@@ -23748,7 +23745,21 @@
  /* begin objectAfterWhileForwarding: */
  header2 = longAt(oop);
  if ((header2 & MarkBit) == 0) {
- next = ((sqInt) (objectAfter(oop)));
+ /* begin objectAfter: */
+ if (!(asserta(oopisLessThan(oop, GIV(freeStart))))) {
+ error("no objects after the end of memory");
+ }
+ if (((longAt(oop)) & TypeMask) == HeaderTypeFree) {
+ sz2 = (longAt(oop)) & AllButTypeMask;
+ }
+ else {
+ /* begin sizeBitsOf: */
+ header3 = longAt(oop);
+ sz2 = ((header3 & TypeMask) == HeaderTypeSizeAndClass
+ ? (longAt(oop - (BytesPerWord * 2))) & LongSizeMask
+ : header3 & SizeMask);
+ }
+ next = (oop + sz2) + (headerTypeBytes[(longAt(oop + sz2)) & TypeMask]);
  goto l1;
  }
  fwdBlock1 = (header2 & AllButMarkBitAndTypeMask) << 1;
@@ -23763,7 +23774,7 @@
  else {
  sz1 = realHeader & SizeMask;
  }
- next = ((sqInt) ((oop + sz1) + (headerTypeBytes[(longAt(oop + sz1)) & TypeMask])));
+ next = (oop + sz1) + (headerTypeBytes[(longAt(oop + sz1)) & TypeMask]);
  l1: /* end objectAfterWhileForwarding: */;
  if (!(((longAt(oop)) & TypeMask) == HeaderTypeFree)) {
 
@@ -23817,18 +23828,18 @@
  }
  /* begin safeObjectAfter: */
  if (((longAt(newFreeChunk)) & TypeMask) == HeaderTypeFree) {
- sz2 = (longAt(newFreeChunk)) & AllButTypeMask;
+ sz3 = (longAt(newFreeChunk)) & AllButTypeMask;
  }
  else {
  /* begin sizeBitsOf: */
- header3 = longAt(newFreeChunk);
- sz2 = ((header3 & TypeMask) == HeaderTypeSizeAndClass
+ header4 = longAt(newFreeChunk);
+ sz3 = ((header4 & TypeMask) == HeaderTypeSizeAndClass
  ? (longAt(newFreeChunk - (BytesPerWord * 2))) & LongSizeMask
- : header3 & SizeMask);
+ : header4 & SizeMask);
  }
- next = ((newFreeChunk + sz2) >= GIV(freeStart)
+ next = ((newFreeChunk + sz3) >= GIV(freeStart)
  ? GIV(freeStart)
- : (newFreeChunk + sz2) + (headerTypeBytes[(longAt(newFreeChunk + sz2)) & TypeMask]));
+ : (newFreeChunk + sz3) + (headerTypeBytes[(longAt(newFreeChunk + sz3)) & TypeMask]));
  assert((next == GIV(freeStart))
  || (next == (oopFromChunk(GIV(compEnd)))));
  if (next == GIV(freeStart)) {
@@ -50038,7 +50049,7 @@
  given object or free chunk in memory. Return freeStart when
  enumeration is complete. This is for assertion checking only. */
 
-static usqInt
+static sqInt
 safeObjectAfter(sqInt oop)
 {   DECL_MAYBE_SQ_GLOBAL_STRUCT
     sqInt header;

Modified: branches/Cog/nscogsrc/vm/cointerp.h
===================================================================
--- branches/Cog/nscogsrc/vm/cointerp.h 2013-12-12 00:38:39 UTC (rev 2831)
+++ branches/Cog/nscogsrc/vm/cointerp.h 2013-12-12 22:53:13 UTC (rev 2832)
@@ -1,5 +1,5 @@
 /* Automatically generated by
- CCodeGeneratorGlobalStructure VMMaker.oscog-eem.558 uuid: ef7afd3b-c404-472c-a05a-9d9c6d905052
+ CCodeGeneratorGlobalStructure VMMaker.oscog-eem.561 uuid: 13467880-93b9-4137-9bbc-7ebfd22436ab
  */
 
 

Modified: branches/Cog/nscogsrc/vm/gcc3x-cointerp.c
===================================================================
--- branches/Cog/nscogsrc/vm/gcc3x-cointerp.c 2013-12-12 00:38:39 UTC (rev 2831)
+++ branches/Cog/nscogsrc/vm/gcc3x-cointerp.c 2013-12-12 22:53:13 UTC (rev 2832)
@@ -2,11 +2,11 @@
 
 
 /* Automatically generated by
- CCodeGeneratorGlobalStructure VMMaker.oscog-eem.558 uuid: ef7afd3b-c404-472c-a05a-9d9c6d905052
+ CCodeGeneratorGlobalStructure VMMaker.oscog-eem.561 uuid: 13467880-93b9-4137-9bbc-7ebfd22436ab
    from
- CoInterpreter VMMaker.oscog-eem.558 uuid: ef7afd3b-c404-472c-a05a-9d9c6d905052
+ CoInterpreter VMMaker.oscog-eem.561 uuid: 13467880-93b9-4137-9bbc-7ebfd22436ab
  */
-static char __buildInfo[] = "CoInterpreter VMMaker.oscog-eem.558 uuid: ef7afd3b-c404-472c-a05a-9d9c6d905052 " __DATE__ ;
+static char __buildInfo[] = "CoInterpreter VMMaker.oscog-eem.561 uuid: 13467880-93b9-4137-9bbc-7ebfd22436ab " __DATE__ ;
 char *__interpBuildInfo = __buildInfo;
 
 
@@ -1146,7 +1146,7 @@
 static void rewriteMethodCacheEntryForExternalPrimitiveToFunction(void (*localPrimAddress)(void));
 static sqInt roomToPushNArgs(sqInt n);
 static void runLeakCheckerForFullGC(sqInt fullGCFlag);
-static usqInt safeObjectAfter(sqInt oop);
+static sqInt safeObjectAfter(sqInt oop);
 static sqInt safePrintStringOf(sqInt oop);
 usqInt scavengeThresholdAddress(void);
 EXPORT(sqInt) sendInvokeCallbackContext(VMCallbackContext *vmCallbackContext);
@@ -2033,7 +2033,7 @@
  /* 575 */ (void (*)(void))0,
  0 };
 static void (*externalPrimitiveTable[MaxExternalPrimitiveTableSize + 1 /* 4097 */])(void);
-const char *interpreterVersion = "Newspeak Virtual Machine CoInterpreter_VMMaker.oscog-eem.558";
+const char *interpreterVersion = "Newspeak Virtual Machine CoInterpreter_VMMaker.oscog-eem.561";
 sqInt minBackwardJumpCountForCompile = MinBackwardJumpCountForCompile /* 10 */;
 volatile int sendTrace;
 
@@ -5675,7 +5675,6 @@
  /* begin internalPush: */
  longAtPointerput((localSP -= BytesPerOop), longAt((rcvr + BaseHeaderSize) + (byte3 << ShiftForWord)));
  }
- null;
  goto l4;
  }
  if (opType == 3) {
@@ -5685,7 +5684,6 @@
  assert(GIV(method) == (iframeMethod(localFP)));
  object = longAt((GIV(method) + BaseHeaderSize) + ((byte3 + LiteralStart) << ShiftForWord));
  longAtPointerput((localSP -= BytesPerOop), object);
- null;
  goto l4;
  }
  if (opType == 4) {
@@ -5699,7 +5697,6 @@
  object2 = longAt((oop + BaseHeaderSize) + (ValueIndex << ShiftForWord));
  longAtPointerput((localSP -= BytesPerOop), object2);
 
- null;
  goto l4;
  }
  top = longAtPointer(localSP);
@@ -13725,8 +13722,7 @@
 arrayValueOf(sqInt arrayOop)
 {   DECL_MAYBE_SQ_GLOBAL_STRUCT
  if (((arrayOop & 1) == 0)
- && (((arrayOop & 1) == 0)
- && (isWordsOrBytesNonImm(arrayOop)))) {
+ && (isWordsOrBytesNonImm(arrayOop))) {
  return ((void *) (pointerForOop(arrayOop + BaseHeaderSize)));
  }
  /* begin primitiveFail */
@@ -20886,8 +20882,7 @@
  arrayOop = longAt((objectPointer + BaseHeaderSize) + (fieldIndex << ShiftForWord));
  /* begin arrayValueOf: */
  if (((arrayOop & 1) == 0)
- && (((arrayOop & 1) == 0)
- && (isWordsOrBytesNonImm(arrayOop)))) {
+ && (isWordsOrBytesNonImm(arrayOop))) {
  return ((void *) (pointerForOop(arrayOop + BaseHeaderSize)));
  }
  /* begin primitiveFail */
@@ -23738,15 +23733,17 @@
     sqInt header1;
     sqInt header2;
     sqInt header3;
+    sqInt header4;
     usqInt lastWord;
     sqInt newFreeChunk;
     sqInt newOop;
-    usqInt next;
+    sqInt next;
     sqInt oop;
     sqInt realHeader;
     sqInt sz;
     sqInt sz1;
     sqInt sz2;
+    sqInt sz3;
     sqInt target;
     usqInt w;
 
@@ -23757,7 +23754,21 @@
  /* begin objectAfterWhileForwarding: */
  header2 = longAt(oop);
  if ((header2 & MarkBit) == 0) {
- next = ((sqInt) (objectAfter(oop)));
+ /* begin objectAfter: */
+ if (!(asserta(oopisLessThan(oop, GIV(freeStart))))) {
+ error("no objects after the end of memory");
+ }
+ if (((longAt(oop)) & TypeMask) == HeaderTypeFree) {
+ sz2 = (longAt(oop)) & AllButTypeMask;
+ }
+ else {
+ /* begin sizeBitsOf: */
+ header3 = longAt(oop);
+ sz2 = ((header3 & TypeMask) == HeaderTypeSizeAndClass
+ ? (longAt(oop - (BytesPerWord * 2))) & LongSizeMask
+ : header3 & SizeMask);
+ }
+ next = (oop + sz2) + (headerTypeBytes[(longAt(oop + sz2)) & TypeMask]);
  goto l1;
  }
  fwdBlock1 = (header2 & AllButMarkBitAndTypeMask) << 1;
@@ -23772,7 +23783,7 @@
  else {
  sz1 = realHeader & SizeMask;
  }
- next = ((sqInt) ((oop + sz1) + (headerTypeBytes[(longAt(oop + sz1)) & TypeMask])));
+ next = (oop + sz1) + (headerTypeBytes[(longAt(oop + sz1)) & TypeMask]);
  l1: /* end objectAfterWhileForwarding: */;
  if (!(((longAt(oop)) & TypeMask) == HeaderTypeFree)) {
 
@@ -23826,18 +23837,18 @@
  }
  /* begin safeObjectAfter: */
  if (((longAt(newFreeChunk)) & TypeMask) == HeaderTypeFree) {
- sz2 = (longAt(newFreeChunk)) & AllButTypeMask;
+ sz3 = (longAt(newFreeChunk)) & AllButTypeMask;
  }
  else {
  /* begin sizeBitsOf: */
- header3 = longAt(newFreeChunk);
- sz2 = ((header3 & TypeMask) == HeaderTypeSizeAndClass
+ header4 = longAt(newFreeChunk);
+ sz3 = ((header4 & TypeMask) == HeaderTypeSizeAndClass
  ? (longAt(newFreeChunk - (BytesPerWord * 2))) & LongSizeMask
- : header3 & SizeMask);
+ : header4 & SizeMask);
  }
- next = ((newFreeChunk + sz2) >= GIV(freeStart)
+ next = ((newFreeChunk + sz3) >= GIV(freeStart)
  ? GIV(freeStart)
- : (newFreeChunk + sz2) + (headerTypeBytes[(longAt(newFreeChunk + sz2)) & TypeMask]));
+ : (newFreeChunk + sz3) + (headerTypeBytes[(longAt(newFreeChunk + sz3)) & TypeMask]));
  assert((next == GIV(freeStart))
  || (next == (oopFromChunk(GIV(compEnd)))));
  if (next == GIV(freeStart)) {
@@ -50047,7 +50058,7 @@
  given object or free chunk in memory. Return freeStart when
  enumeration is complete. This is for assertion checking only. */
 
-static usqInt
+static sqInt
 safeObjectAfter(sqInt oop)
 {   DECL_MAYBE_SQ_GLOBAL_STRUCT
     sqInt header;

Modified: branches/Cog/nscogsrc/vm/interp.h
===================================================================
--- branches/Cog/nscogsrc/vm/interp.h 2013-12-12 00:38:39 UTC (rev 2831)
+++ branches/Cog/nscogsrc/vm/interp.h 2013-12-12 22:53:13 UTC (rev 2832)
@@ -1,5 +1,5 @@
 /* Automatically generated by
- CCodeGeneratorGlobalStructure VMMaker.oscog-eem.558 uuid: ef7afd3b-c404-472c-a05a-9d9c6d905052
+ CCodeGeneratorGlobalStructure VMMaker.oscog-eem.561 uuid: 13467880-93b9-4137-9bbc-7ebfd22436ab
  */
 
 #define VM_PROXY_MAJOR 1

Modified: branches/Cog/nscogsrc/vm/vmCallback.h
===================================================================
--- branches/Cog/nscogsrc/vm/vmCallback.h 2013-12-12 00:38:39 UTC (rev 2831)
+++ branches/Cog/nscogsrc/vm/vmCallback.h 2013-12-12 22:53:13 UTC (rev 2832)
@@ -1,5 +1,5 @@
 /* Automatically generated by
- CCodeGeneratorGlobalStructure VMMaker.oscog-eem.558 uuid: ef7afd3b-c404-472c-a05a-9d9c6d905052
+ CCodeGeneratorGlobalStructure VMMaker.oscog-eem.561 uuid: 13467880-93b9-4137-9bbc-7ebfd22436ab
  */
 
 #define VM_CALLBACK_INC 1


Property changes on: branches/Cog/platforms/Cross/vm/sqSCCSVersion.h
___________________________________________________________________
Modified: checkindate
   - Wed Dec 11 16:36:32 PST 2013
   + Thu Dec 12 14:52:39 PST 2013

Modified: branches/Cog/platforms/unix/config/make.prg.in
===================================================================
--- branches/Cog/platforms/unix/config/make.prg.in 2013-12-12 00:38:39 UTC (rev 2831)
+++ branches/Cog/platforms/unix/config/make.prg.in 2013-12-12 22:53:13 UTC (rev 2832)
@@ -2,7 +2,7 @@
 #
 # Author: [hidden email]
 #
-# Last edited: Thu Jan 21 14:59:38 PST 2010 by eliot (support for .cpp)
+# Last edited: Thu Dec 12 10:36:03 PST 2013 by eliot (eliminate -R from LINK)
 
 o = .o
 a = .a
@@ -16,5 +16,5 @@
   $(LDFLAGS) $(XLDFLAGS) -export-dynamic -c -o
 LINK = $(LIBTOOL) --mode=link \
   $(CC) $(CFLAGS) $(XCFLAGS) \
-  $(LDFLAGS) $(XLDFLAGS) -export-dynamic -R$(libdir) -o
+  $(LDFLAGS) $(XLDFLAGS) -export-dynamic -o
 RANLIB = :

Modified: branches/Cog/scripts/findUnofficialFiles
===================================================================
--- branches/Cog/scripts/findUnofficialFiles 2013-12-12 00:38:39 UTC (rev 2831)
+++ branches/Cog/scripts/findUnofficialFiles 2013-12-12 22:53:13 UTC (rev 2832)
@@ -1,4 +1,4 @@
 #!/bin/sh
 # List any files with an un-checked-in package version comment "* VMMaker-..."
-find "${@-src}" -name .svn -prune -o \( -type f -a -name '*.[ch]' \) \
- -exec fgrep -l '* VMMaker' {} \;
+find ${@-src nscogsrc stacksrc spursrc spurstacksrc} -name .svn -prune -o \( -type f -a -name '*.[ch]' \) \
+ -exec egrep -l '\* VMMaker|\* VMConstruction' {} \;

Modified: branches/Cog/spursrc/vm/cointerp.c
===================================================================
--- branches/Cog/spursrc/vm/cointerp.c 2013-12-12 00:38:39 UTC (rev 2831)
+++ branches/Cog/spursrc/vm/cointerp.c 2013-12-12 22:53:13 UTC (rev 2832)
@@ -1,9 +1,9 @@
 /* Automatically generated by
- CCodeGeneratorGlobalStructure VMMaker.oscog-eem.560 uuid: db9cf7fa-a7d7-4b48-9e9d-32c8d43e330f
+ CCodeGeneratorGlobalStructure VMMaker.oscog-eem.561 uuid: 13467880-93b9-4137-9bbc-7ebfd22436ab
    from
- CoInterpreter VMMaker.oscog-eem.560 uuid: db9cf7fa-a7d7-4b48-9e9d-32c8d43e330f
+ CoInterpreter VMMaker.oscog-eem.561 uuid: 13467880-93b9-4137-9bbc-7ebfd22436ab
  */
-static char __buildInfo[] = "CoInterpreter VMMaker.oscog-eem.560 uuid: db9cf7fa-a7d7-4b48-9e9d-32c8d43e330f " __DATE__ ;
+static char __buildInfo[] = "CoInterpreter VMMaker.oscog-eem.561 uuid: 13467880-93b9-4137-9bbc-7ebfd22436ab " __DATE__ ;
 char *__interpBuildInfo = __buildInfo;
 
 
@@ -1431,6 +1431,7 @@
 _iss sqInt numClassTablePages;
 _iss sqInt longRunningPrimitiveCheckSemaphore;
 _iss sqInt tempOop;
+_iss char * objStackInvalidBecause;
 _iss SpurNewSpaceSpace eden;
 _iss sqInt profileProcess;
 _iss sqInt profileSemaphore;
@@ -1438,7 +1439,7 @@
 _iss sqInt ephemeronList;
 _iss sqInt needGCFlag;
 _iss sqInt extraRootCount;
-_iss char * objStackInvalidBecause;
+_iss sqInt invalidObjStackPage;
 _iss sqInt previousRememberedSetSize;
 _iss unsigned char * classTableBitmap;
 _iss sqInt longRunningPrimitiveCheckMethod;
@@ -1446,7 +1447,6 @@
 _iss sqInt lastMethodCacheProbeWrite;
 _iss sqInt lkupClass;
 _iss sqInt profileMethod;
-_iss sqInt invalidObjStackPage;
 _iss usqLong nextWakeupUsecs;
 _iss sqInt preemptionYields;
 _iss sqInt cogCompiledCodeCompactionCalledFor;
@@ -2162,7 +2162,7 @@
  0 };
 static void (*externalPrimitiveTable[MaxExternalPrimitiveTableSize + 1 /* 4097 */])(void);
 usqInt heapBase;
-const char *interpreterVersion = "Croquet Closure Cog VM [CoInterpreter VMMaker.oscog-eem.560]";
+const char *interpreterVersion = "Croquet Closure Cog VM [CoInterpreter VMMaker.oscog-eem.561]";
 sqInt minBackwardJumpCountForCompile = MinBackwardJumpCountForCompile /* 10 */;
 volatile int sendTrace;
 
@@ -11584,9 +11584,8 @@
 void *
 arrayValueOf(sqInt arrayOop)
 {   DECL_MAYBE_SQ_GLOBAL_STRUCT
- if (((arrayOop & 1) == 0)
- && (((arrayOop & 3) == 0)
- && (((((usqInt) (longAt(arrayOop))) >> 24) & 0x1F) > 5))) {
+ if (((arrayOop & 3) == 0)
+ && (((((usqInt) (longAt(arrayOop))) >> 24) & 0x1F) > 5)) {
  return ((void *) (pointerForOop(arrayOop + BaseHeaderSize)));
  }
  /* begin primitiveFail */
@@ -20880,9 +20879,8 @@
 
  arrayOop = longAt((objectPointer + (BaseHeaderSize)) + (fieldIndex << 2));
  /* begin arrayValueOf: */
- if (((arrayOop & 1) == 0)
- && (((arrayOop & 3) == 0)
- && (((((usqInt) (longAt(arrayOop))) >> 24) & 0x1F) > 5))) {
+ if (((arrayOop & 3) == 0)
+ && (((((usqInt) (longAt(arrayOop))) >> 24) & 0x1F) > 5)) {
  return ((void *) (pointerForOop(arrayOop + BaseHeaderSize)));
  }
  /* begin primitiveFail */
@@ -26608,6 +26606,7 @@
     sqInt freeOrNextPage;
     sqInt index;
     char *ns;
+    sqInt page;
 
  if (!(isValidObjStackPagemyIndex(objStackPage, myx))) {
  return 0;
@@ -26619,6 +26618,11 @@
  GIV(invalidObjStackPage) = objStackPage;
  return 0;
  }
+ if (freeOrNextPage == (longAt((objStackPage + (BaseHeaderSize)) + (ObjStackNextx << 2)))) {
+ GIV(objStackInvalidBecause) = "free page = next page";
+ GIV(invalidObjStackPage) = freeOrNextPage;
+ return 0;
+ }
  if (!(isValidObjStackPagemyIndex(freeOrNextPage, myx))) {
  ns = malloc(((strlen(GIV(objStackInvalidBecause))) + (strlen(", on next page"))) + 2);
  strcpy(ns, GIV(objStackInvalidBecause));
@@ -26626,7 +26630,14 @@
 
  return 0;
  }
- freeOrNextPage = longAt((freeOrNextPage + (BaseHeaderSize)) + (ObjStackFreex << 2));
+ page = longAt((freeOrNextPage + (BaseHeaderSize)) + (ObjStackFreex << 2));
+ if ((page == freeOrNextPage)
+ || (page == objStackPage)) {
+ GIV(objStackInvalidBecause) = "circularity in free page list";
+ GIV(invalidObjStackPage) = page;
+ return 0;
+ }
+ freeOrNextPage = page;
  }
  if (isFirstPage) {
  if (!(((myx >= (1 << (22 - 10))) && (myx <= (((1 << (22 - 10)) + 8) - 1))))) {
@@ -26647,8 +26658,15 @@
  return 0;
  }
  freeOrNextPage = longAt((objStackPage + (BaseHeaderSize)) + (ObjStackNextx << 2));
- return (freeOrNextPage == 0)
- || (isValidObjStackPagemyIndexfirstPage(freeOrNextPage, myx, 0));
+ if (freeOrNextPage == 0) {
+ return 1;
+ }
+ if (freeOrNextPage == objStackPage) {
+ GIV(objStackInvalidBecause) = "circularity in objStack page list";
+ GIV(invalidObjStackPage) = objStackPage;
+ return 0;
+ }
+ return isValidObjStackPagemyIndexfirstPage(freeOrNextPage, myx, 0);
 }
 
 
@@ -50305,6 +50323,7 @@
     sqInt isFirstPage;
     sqInt isFreePage;
     sqInt isNextPage;
+    sqInt page;
 
  isFirstPage = pageType == ObjStackMyx;
  isNextPage = pageType == ObjStackNextx;
@@ -50330,10 +50349,20 @@
  /* begin cr */
  printf("\n");
  }
- freeOrNextPage = longAt((objStackPage + (BaseHeaderSize)) + (ObjStackFreex << 2));
- while (freeOrNextPage != 0) {
- printObjStackPagemyIndexpageType(freeOrNextPage, myx, ObjStackFreex);
- freeOrNextPage = longAt((freeOrNextPage + (BaseHeaderSize)) + (ObjStackFreex << 2));
+ if (isFirstPage) {
+ freeOrNextPage = longAt((objStackPage + (BaseHeaderSize)) + (ObjStackFreex << 2));
+ while (freeOrNextPage != 0) {
+ printObjStackPagemyIndexpageType(freeOrNextPage, myx, ObjStackFreex);
+ page = longAt((freeOrNextPage + (BaseHeaderSize)) + (ObjStackFreex << 2));
+ if ((page == freeOrNextPage)
+ || (page == objStackPage)) {
+ print("circularity in free page list!!");
+ /* begin cr */
+ printf("\n");
+ page = 0;
+ }
+ freeOrNextPage = page;
+ }
  }
  freeOrNextPage = longAt((objStackPage + (BaseHeaderSize)) + (ObjStackNextx << 2));
  if (freeOrNextPage != 0) {
@@ -56804,6 +56833,7 @@
     sqInt field;
     sqInt firstPage;
     sqInt index;
+    sqInt page;
     sqInt stackOrNil;
 
  firstPage = (stackOrNil = longAt((GIV(hiddenRootsObj) + (BaseHeaderSize)) + (objStackRootIndex << 2)));
@@ -56825,20 +56855,34 @@
  /* begin storePointer:ofObjStack:withValue: */
  assert((formatOf(stackOrNil)) == (wordIndexableFormat()));
  null;
- longAtput((stackOrNil + (BaseHeaderSize)) + (ObjStackNextx << 2), field);
+ longAtput((stackOrNil + (BaseHeaderSize)) + (index << 2), field);
  }
  } while(((index -= 1)) > ObjStackMyx);
  } while(((stackOrNil = field)) != 0);
- while (1) {
- stackOrNil = longAt((firstPage + (BaseHeaderSize)) + (ObjStackFreex << 2));
- if (!(stackOrNil != 0)) break;
- field = swizzleObj(stackOrNil);
- /* begin storePointer:ofObjStack:withValue: */
- assert((formatOf(firstPage)) == (wordIndexableFormat()));
- null;
- longAtput((firstPage + (BaseHeaderSize)) + (ObjStackFreex << 2), field);
- firstPage = field;
+ if (((stackOrNil = longAt((firstPage + (BaseHeaderSize)) + (ObjStackFreex << 2)))) != 0) {
+ while (1) {
+ page = longAt((stackOrNil + (BaseHeaderSize)) + (ObjStackFreex << 2));
+ if (!(page != 0)) break;
+ field = swizzleObj(page);
+ /* begin storePointer:ofObjStack:withValue: */
+ assert((formatOf(stackOrNil)) == (wordIndexableFormat()));
+ null;
+ longAtput((stackOrNil + (BaseHeaderSize)) + (ObjStackFreex << 2), field);
+ stackOrNil = field;
+ }
  }
+ if (((stackOrNil = longAt((firstPage + (BaseHeaderSize)) + (ObjStackNextx << 2)))) != 0) {
+ while (1) {
+ page = longAt((stackOrNil + (BaseHeaderSize)) + (ObjStackNextx << 2));
+ if (!(page != 0)) break;
+ field = swizzleObj(page);
+ /* begin storePointer:ofObjStack:withValue: */
+ assert((formatOf(stackOrNil)) == (wordIndexableFormat()));
+ null;
+ longAtput((stackOrNil + (BaseHeaderSize)) + (ObjStackNextx << 2), field);
+ stackOrNil = field;
+ }
+ }
  assert(isValidObjStackAt(objStackRootIndex));
  return longAt((GIV(hiddenRootsObj) + (BaseHeaderSize)) + (objStackRootIndex << 2));
 }

Modified: branches/Cog/spursrc/vm/cointerp.h
===================================================================
--- branches/Cog/spursrc/vm/cointerp.h 2013-12-12 00:38:39 UTC (rev 2831)
+++ branches/Cog/spursrc/vm/cointerp.h 2013-12-12 22:53:13 UTC (rev 2832)
@@ -1,5 +1,5 @@
 /* Automatically generated by
- CCodeGeneratorGlobalStructure VMMaker.oscog-eem.560 uuid: db9cf7fa-a7d7-4b48-9e9d-32c8d43e330f
+ CCodeGeneratorGlobalStructure VMMaker.oscog-eem.561 uuid: 13467880-93b9-4137-9bbc-7ebfd22436ab
  */
 
 

Modified: branches/Cog/spursrc/vm/gcc3x-cointerp.c
===================================================================
--- branches/Cog/spursrc/vm/gcc3x-cointerp.c 2013-12-12 00:38:39 UTC (rev 2831)
+++ branches/Cog/spursrc/vm/gcc3x-cointerp.c 2013-12-12 22:53:13 UTC (rev 2832)
@@ -2,11 +2,11 @@
 
 
 /* Automatically generated by
- CCodeGeneratorGlobalStructure VMMaker.oscog-eem.560 uuid: db9cf7fa-a7d7-4b48-9e9d-32c8d43e330f
+ CCodeGeneratorGlobalStructure VMMaker.oscog-eem.561 uuid: 13467880-93b9-4137-9bbc-7ebfd22436ab
    from
- CoInterpreter VMMaker.oscog-eem.560 uuid: db9cf7fa-a7d7-4b48-9e9d-32c8d43e330f
+ CoInterpreter VMMaker.oscog-eem.561 uuid: 13467880-93b9-4137-9bbc-7ebfd22436ab
  */
-static char __buildInfo[] = "CoInterpreter VMMaker.oscog-eem.560 uuid: db9cf7fa-a7d7-4b48-9e9d-32c8d43e330f " __DATE__ ;
+static char __buildInfo[] = "CoInterpreter VMMaker.oscog-eem.561 uuid: 13467880-93b9-4137-9bbc-7ebfd22436ab " __DATE__ ;
 char *__interpBuildInfo = __buildInfo;
 
 
@@ -1434,6 +1434,7 @@
 _iss sqInt numClassTablePages;
 _iss sqInt longRunningPrimitiveCheckSemaphore;
 _iss sqInt tempOop;
+_iss char * objStackInvalidBecause;
 _iss SpurNewSpaceSpace eden;
 _iss sqInt profileProcess;
 _iss sqInt profileSemaphore;
@@ -1441,7 +1442,7 @@
 _iss sqInt ephemeronList;
 _iss sqInt needGCFlag;
 _iss sqInt extraRootCount;
-_iss char * objStackInvalidBecause;
+_iss sqInt invalidObjStackPage;
 _iss sqInt previousRememberedSetSize;
 _iss unsigned char * classTableBitmap;
 _iss sqInt longRunningPrimitiveCheckMethod;
@@ -1449,7 +1450,6 @@
 _iss sqInt lastMethodCacheProbeWrite;
 _iss sqInt lkupClass;
 _iss sqInt profileMethod;
-_iss sqInt invalidObjStackPage;
 _iss usqLong nextWakeupUsecs;
 _iss sqInt preemptionYields;
 _iss sqInt cogCompiledCodeCompactionCalledFor;
@@ -2165,7 +2165,7 @@
  0 };
 static void (*externalPrimitiveTable[MaxExternalPrimitiveTableSize + 1 /* 4097 */])(void);
 usqInt heapBase;
-const char *interpreterVersion = "Croquet Closure Cog VM [CoInterpreter VMMaker.oscog-eem.560]";
+const char *interpreterVersion = "Croquet Closure Cog VM [CoInterpreter VMMaker.oscog-eem.561]";
 sqInt minBackwardJumpCountForCompile = MinBackwardJumpCountForCompile /* 10 */;
 volatile int sendTrace;
 
@@ -11593,9 +11593,8 @@
 void *
 arrayValueOf(sqInt arrayOop)
 {   DECL_MAYBE_SQ_GLOBAL_STRUCT
- if (((arrayOop & 1) == 0)
- && (((arrayOop & 3) == 0)
- && (((((usqInt) (longAt(arrayOop))) >> 24) & 0x1F) > 5))) {
+ if (((arrayOop & 3) == 0)
+ && (((((usqInt) (longAt(arrayOop))) >> 24) & 0x1F) > 5)) {
  return ((void *) (pointerForOop(arrayOop + BaseHeaderSize)));
  }
  /* begin primitiveFail */
@@ -20889,9 +20888,8 @@
 
  arrayOop = longAt((objectPointer + (BaseHeaderSize)) + (fieldIndex << 2));
  /* begin arrayValueOf: */
- if (((arrayOop & 1) == 0)
- && (((arrayOop & 3) == 0)
- && (((((usqInt) (longAt(arrayOop))) >> 24) & 0x1F) > 5))) {
+ if (((arrayOop & 3) == 0)
+ && (((((usqInt) (longAt(arrayOop))) >> 24) & 0x1F) > 5)) {
  return ((void *) (pointerForOop(arrayOop + BaseHeaderSize)));
  }
  /* begin primitiveFail */
@@ -26617,6 +26615,7 @@
     sqInt freeOrNextPage;
     sqInt index;
     char *ns;
+    sqInt page;
 
  if (!(isValidObjStackPagemyIndex(objStackPage, myx))) {
  return 0;
@@ -26628,6 +26627,11 @@
  GIV(invalidObjStackPage) = objStackPage;
  return 0;
  }
+ if (freeOrNextPage == (longAt((objStackPage + (BaseHeaderSize)) + (ObjStackNextx << 2)))) {
+ GIV(objStackInvalidBecause) = "free page = next page";
+ GIV(invalidObjStackPage) = freeOrNextPage;
+ return 0;
+ }
  if (!(isValidObjStackPagemyIndex(freeOrNextPage, myx))) {
  ns = malloc(((strlen(GIV(objStackInvalidBecause))) + (strlen(", on next page"))) + 2);
  strcpy(ns, GIV(objStackInvalidBecause));
@@ -26635,7 +26639,14 @@
 
  return 0;
  }
- freeOrNextPage = longAt((freeOrNextPage + (BaseHeaderSize)) + (ObjStackFreex << 2));
+ page = longAt((freeOrNextPage + (BaseHeaderSize)) + (ObjStackFreex << 2));
+ if ((page == freeOrNextPage)
+ || (page == objStackPage)) {
+ GIV(objStackInvalidBecause) = "circularity in free page list";
+ GIV(invalidObjStackPage) = page;
+ return 0;
+ }
+ freeOrNextPage = page;
  }
  if (isFirstPage) {
  if (!(((myx >= (1 << (22 - 10))) && (myx <= (((1 << (22 - 10)) + 8) - 1))))) {
@@ -26656,8 +26667,15 @@
  return 0;
  }
  freeOrNextPage = longAt((objStackPage + (BaseHeaderSize)) + (ObjStackNextx << 2));
- return (freeOrNextPage == 0)
- || (isValidObjStackPagemyIndexfirstPage(freeOrNextPage, myx, 0));
+ if (freeOrNextPage == 0) {
+ return 1;
+ }
+ if (freeOrNextPage == objStackPage) {
+ GIV(objStackInvalidBecause) = "circularity in objStack page list";
+ GIV(invalidObjStackPage) = objStackPage;
+ return 0;
+ }
+ return isValidObjStackPagemyIndexfirstPage(freeOrNextPage, myx, 0);
 }
 
 
@@ -50314,6 +50332,7 @@
     sqInt isFirstPage;
     sqInt isFreePage;
     sqInt isNextPage;
+    sqInt page;
 
  isFirstPage = pageType == ObjStackMyx;
  isNextPage = pageType == ObjStackNextx;
@@ -50339,10 +50358,20 @@
  /* begin cr */
  printf("\n");
  }
- freeOrNextPage = longAt((objStackPage + (BaseHeaderSize)) + (ObjStackFreex << 2));
- while (freeOrNextPage != 0) {
- printObjStackPagemyIndexpageType(freeOrNextPage, myx, ObjStackFreex);
- freeOrNextPage = longAt((freeOrNextPage + (BaseHeaderSize)) + (ObjStackFreex << 2));
+ if (isFirstPage) {
+ freeOrNextPage = longAt((objStackPage + (BaseHeaderSize)) + (ObjStackFreex << 2));
+ while (freeOrNextPage != 0) {
+ printObjStackPagemyIndexpageType(freeOrNextPage, myx, ObjStackFreex);
+ page = longAt((freeOrNextPage + (BaseHeaderSize)) + (ObjStackFreex << 2));
+ if ((page == freeOrNextPage)
+ || (page == objStackPage)) {
+ print("circularity in free page list!!");
+ /* begin cr */
+ printf("\n");
+ page = 0;
+ }
+ freeOrNextPage = page;
+ }
  }
  freeOrNextPage = longAt((objStackPage + (BaseHeaderSize)) + (ObjStackNextx << 2));
  if (freeOrNextPage != 0) {
@@ -56813,6 +56842,7 @@
     sqInt field;
     sqInt firstPage;
     sqInt index;
+    sqInt page;
     sqInt stackOrNil;
 
  firstPage = (stackOrNil = longAt((GIV(hiddenRootsObj) + (BaseHeaderSize)) + (objStackRootIndex << 2)));
@@ -56834,20 +56864,34 @@
  /* begin storePointer:ofObjStack:withValue: */
  assert((formatOf(stackOrNil)) == (wordIndexableFormat()));
  null;
- longAtput((stackOrNil + (BaseHeaderSize)) + (ObjStackNextx << 2), field);
+ longAtput((stackOrNil + (BaseHeaderSize)) + (index << 2), field);
  }
  } while(((index -= 1)) > ObjStackMyx);
  } while(((stackOrNil = field)) != 0);
- while (1) {
- stackOrNil = longAt((firstPage + (BaseHeaderSize)) + (ObjStackFreex << 2));
- if (!(stackOrNil != 0)) break;
- field = swizzleObj(stackOrNil);
- /* begin storePointer:ofObjStack:withValue: */
- assert((formatOf(firstPage)) == (wordIndexableFormat()));
- null;
- longAtput((firstPage + (BaseHeaderSize)) + (ObjStackFreex << 2), field);
- firstPage = field;
+ if (((stackOrNil = longAt((firstPage + (BaseHeaderSize)) + (ObjStackFreex << 2)))) != 0) {
+ while (1) {
+ page = longAt((stackOrNil + (BaseHeaderSize)) + (ObjStackFreex << 2));
+ if (!(page != 0)) break;
+ field = swizzleObj(page);
+ /* begin storePointer:ofObjStack:withValue: */
+ assert((formatOf(stackOrNil)) == (wordIndexableFormat()));
+ null;
+ longAtput((stackOrNil + (BaseHeaderSize)) + (ObjStackFreex << 2), field);
+ stackOrNil = field;
+ }
  }
+ if (((stackOrNil = longAt((firstPage + (BaseHeaderSize)) + (ObjStackNextx << 2)))) != 0) {
+ while (1) {
+ page = longAt((stackOrNil + (BaseHeaderSize)) + (ObjStackNextx << 2));
+ if (!(page != 0)) break;
+ field = swizzleObj(page);
+ /* begin storePointer:ofObjStack:withValue: */
+ assert((formatOf(stackOrNil)) == (wordIndexableFormat()));
+ null;
+ longAtput((stackOrNil + (BaseHeaderSize)) + (ObjStackNextx << 2), field);
+ stackOrNil = field;
+ }
+ }
  assert(isValidObjStackAt(objStackRootIndex));
  return longAt((GIV(hiddenRootsObj) + (BaseHeaderSize)) + (objStackRootIndex << 2));
 }

Modified: branches/Cog/spursrc/vm/interp.h
===================================================================
--- branches/Cog/spursrc/vm/interp.h 2013-12-12 00:38:39 UTC (rev 2831)
+++ branches/Cog/spursrc/vm/interp.h 2013-12-12 22:53:13 UTC (rev 2832)
@@ -1,5 +1,5 @@
 /* Automatically generated by
- CCodeGeneratorGlobalStructure VMMaker.oscog-eem.560 uuid: db9cf7fa-a7d7-4b48-9e9d-32c8d43e330f
+ CCodeGeneratorGlobalStructure VMMaker.oscog-eem.561 uuid: 13467880-93b9-4137-9bbc-7ebfd22436ab
  */
 
 #define VM_PROXY_MAJOR 1

Modified: branches/Cog/spursrc/vm/vmCallback.h
===================================================================
--- branches/Cog/spursrc/vm/vmCallback.h 2013-12-12 00:38:39 UTC (rev 2831)
+++ branches/Cog/spursrc/vm/vmCallback.h 2013-12-12 22:53:13 UTC (rev 2832)
@@ -1,5 +1,5 @@
 /* Automatically generated by
- CCodeGeneratorGlobalStructure VMMaker.oscog-eem.560 uuid: db9cf7fa-a7d7-4b48-9e9d-32c8d43e330f
+ CCodeGeneratorGlobalStructure VMMaker.oscog-eem.561 uuid: 13467880-93b9-4137-9bbc-7ebfd22436ab
  */
 
 #define VM_CALLBACK_INC 1

Modified: branches/Cog/spurstacksrc/vm/gcc3x-interp.c
===================================================================
--- branches/Cog/spurstacksrc/vm/gcc3x-interp.c 2013-12-12 00:38:39 UTC (rev 2831)
+++ branches/Cog/spurstacksrc/vm/gcc3x-interp.c 2013-12-12 22:53:13 UTC (rev 2832)
@@ -2,11 +2,11 @@
 
 
 /* Automatically generated by
- CCodeGeneratorGlobalStructure VMMaker.oscog-eem.560 uuid: db9cf7fa-a7d7-4b48-9e9d-32c8d43e330f
+ CCodeGeneratorGlobalStructure VMMaker.oscog-eem.561 uuid: 13467880-93b9-4137-9bbc-7ebfd22436ab
    from
- StackInterpreter VMMaker.oscog-eem.560 uuid: db9cf7fa-a7d7-4b48-9e9d-32c8d43e330f
+ StackInterpreter VMMaker.oscog-eem.561 uuid: 13467880-93b9-4137-9bbc-7ebfd22436ab
  */
-static char __buildInfo[] = "StackInterpreter VMMaker.oscog-eem.560 uuid: db9cf7fa-a7d7-4b48-9e9d-32c8d43e330f " __DATE__ ;
+static char __buildInfo[] = "StackInterpreter VMMaker.oscog-eem.561 uuid: 13467880-93b9-4137-9bbc-7ebfd22436ab " __DATE__ ;
 char *__interpBuildInfo = __buildInfo;
 
 
@@ -1243,6 +1243,7 @@
 _iss sqInt numStackPages;
 _iss sqInt tempOop;
 _iss sqLong nextProfileTick;
+_iss char * objStackInvalidBecause;
 _iss SpurNewSpaceSpace eden;
 _iss sqInt profileProcess;
 _iss sqInt tenureThreshold;
@@ -1250,7 +1251,7 @@
 _iss sqInt needGCFlag;
 _iss sqInt numPages;
 _iss sqInt extraRootCount;
-_iss char * objStackInvalidBecause;
+_iss sqInt invalidObjStackPage;
 _iss sqInt previousRememberedSetSize;
 _iss unsigned char * classTableBitmap;
 _iss sqInt longRunningPrimitiveCheckMethod;
@@ -1259,7 +1260,6 @@
 _iss sqInt lastMethodCacheProbeWrite;
 _iss sqInt profileMethod;
 _iss sqInt growHeadroom;
-_iss sqInt invalidObjStackPage;
 _iss usqLong nextWakeupUsecs;
 _iss sqInt preemptionYields;
 _iss sqInt profileSemaphore;
@@ -1955,7 +1955,7 @@
  0 };
 char * breakSelector;
 sqInt breakSelectorLength = -1;
-const char *interpreterVersion = "Croquet Closure Stack VM [StackInterpreter VMMaker.oscog-eem.560]";
+const char *interpreterVersion = "Croquet Closure Stack VM [StackInterpreter VMMaker.oscog-eem.561]";
 volatile int sendTrace;
 sqInt suppressHeartbeatFlag;
 
@@ -12058,9 +12058,8 @@
 void *
 arrayValueOf(sqInt arrayOop)
 {   DECL_MAYBE_SQ_GLOBAL_STRUCT
- if (((arrayOop & 1) == 0)
- && (((arrayOop & 3) == 0)
- && (((((usqInt) (longAt(arrayOop))) >> 24) & 0x1F) > 5))) {
+ if (((arrayOop & 3) == 0)
+ && (((((usqInt) (longAt(arrayOop))) >> 24) & 0x1F) > 5)) {
  return ((void *) (pointerForOop(arrayOop + BaseHeaderSize)));
  }
  /* begin primitiveFail */
@@ -18782,9 +18781,8 @@
 
  arrayOop = longAt((objectPointer + (BaseHeaderSize)) + (fieldIndex << 2));
  /* begin arrayValueOf: */
- if (((arrayOop & 1) == 0)
- && (((arrayOop & 3) == 0)
- && (((((usqInt) (longAt(arrayOop))) >> 24) & 0x1F) > 5))) {
+ if (((arrayOop & 3) == 0)
+ && (((((usqInt) (longAt(arrayOop))) >> 24) & 0x1F) > 5)) {
  return ((void *) (pointerForOop(arrayOop + BaseHeaderSize)));
  }
  /* begin primitiveFail */
@@ -23939,6 +23937,7 @@
     sqInt freeOrNextPage;
     sqInt index;
     char *ns;
+    sqInt page;
 
  if (!(isValidObjStackPagemyIndex(objStackPage, myx))) {
  return 0;
@@ -23950,6 +23949,11 @@
  GIV(invalidObjStackPage) = objStackPage;
  return 0;
  }
+ if (freeOrNextPage == (longAt((objStackPage + (BaseHeaderSize)) + (ObjStackNextx << 2)))) {
+ GIV(objStackInvalidBecause) = "free page = next page";
+ GIV(invalidObjStackPage) = freeOrNextPage;
+ return 0;
+ }
  if (!(isValidObjStackPagemyIndex(freeOrNextPage, myx))) {
  ns = malloc(((strlen(GIV(objStackInvalidBecause))) + (strlen(", on next page"))) + 2);
  strcpy(ns, GIV(objStackInvalidBecause));
@@ -23957,7 +23961,14 @@
 
  return 0;
  }
- freeOrNextPage = longAt((freeOrNextPage + (BaseHeaderSize)) + (ObjStackFreex << 2));
+ page = longAt((freeOrNextPage + (BaseHeaderSize)) + (ObjStackFreex << 2));
+ if ((page == freeOrNextPage)
+ || (page == objStackPage)) {
+ GIV(objStackInvalidBecause) = "circularity in free page list";
+ GIV(invalidObjStackPage) = page;
+ return 0;
+ }
+ freeOrNextPage = page;
  }
  if (isFirstPage) {
  if (!(((myx >= (1 << (22 - 10))) && (myx <= (((1 << (22 - 10)) + 8) - 1))))) {
@@ -23978,8 +23989,15 @@
  return 0;
  }
  freeOrNextPage = longAt((objStackPage + (BaseHeaderSize)) + (ObjStackNextx << 2));
- return (freeOrNextPage == 0)
- || (isValidObjStackPagemyIndexfirstPage(freeOrNextPage, myx, 0));
+ if (freeOrNextPage == 0) {
+ return 1;
+ }
+ if (freeOrNextPage == objStackPage) {
+ GIV(objStackInvalidBecause) = "circularity in objStack page list";
+ GIV(invalidObjStackPage) = objStackPage;
+ return 0;
+ }
+ return isValidObjStackPagemyIndexfirstPage(freeOrNextPage, myx, 0);
 }
 
 
@@ -46360,6 +46378,7 @@
     sqInt isFirstPage;
     sqInt isFreePage;
     sqInt isNextPage;
+    sqInt page;
 
  isFirstPage = pageType == ObjStackMyx;
  isNextPage = pageType == ObjStackNextx;
@@ -46385,10 +46404,20 @@
  /* begin cr */
  printf("\n");
  }
- freeOrNextPage = longAt((objStackPage + (BaseHeaderSize)) + (ObjStackFreex << 2));
- while (freeOrNextPage != 0) {
- printObjStackPagemyIndexpageType(freeOrNextPage, myx, ObjStackFreex);
- freeOrNextPage = longAt((freeOrNextPage + (BaseHeaderSize)) + (ObjStackFreex << 2));
+ if (isFirstPage) {
+ freeOrNextPage = longAt((objStackPage + (BaseHeaderSize)) + (ObjStackFreex << 2));
+ while (freeOrNextPage != 0) {
+ printObjStackPagemyIndexpageType(freeOrNextPage, myx, ObjStackFreex);
+ page = longAt((freeOrNextPage + (BaseHeaderSize)) + (ObjStackFreex << 2));
+ if ((page == freeOrNextPage)
+ || (page == objStackPage)) {
+ print("circularity in free page list!!");
+ /* begin cr */
+ printf("\n");
+ page = 0;
+ }
+ freeOrNextPage = page;
+ }
  }
  freeOrNextPage = longAt((objStackPage + (BaseHeaderSize)) + (ObjStackNextx << 2));
  if (freeOrNextPage != 0) {
@@ -52350,6 +52379,7 @@
     sqInt field;
     sqInt firstPage;
     sqInt index;
+    sqInt page;
     sqInt stackOrNil;
 
  firstPage = (stackOrNil = longAt((GIV(hiddenRootsObj) + (BaseHeaderSize)) + (objStackRootIndex << 2)));
@@ -52371,20 +52401,34 @@
  /* begin storePointer:ofObjStack:withValue: */
  assert((formatOf(stackOrNil)) == (wordIndexableFormat()));
  null;
- longAtput((stackOrNil + (BaseHeaderSize)) + (ObjStackNextx << 2), field);
+ longAtput((stackOrNil + (BaseHeaderSize)) + (index << 2), field);
  }
  } while(((index -= 1)) > ObjStackMyx);
  } while(((stackOrNil = field)) != 0);
- while (1) {
- stackOrNil = longAt((firstPage + (BaseHeaderSize)) + (ObjStackFreex << 2));
- if (!(stackOrNil != 0)) break;
- field = swizzleObj(stackOrNil);
- /* begin storePointer:ofObjStack:withValue: */
- assert((formatOf(firstPage)) == (wordIndexableFormat()));
- null;
- longAtput((firstPage + (BaseHeaderSize)) + (ObjStackFreex << 2), field);
- firstPage = field;
+ if (((stackOrNil = longAt((firstPage + (BaseHeaderSize)) + (ObjStackFreex << 2)))) != 0) {
+ while (1) {
+ page = longAt((stackOrNil + (BaseHeaderSize)) + (ObjStackFreex << 2));
+ if (!(page != 0)) break;
+ field = swizzleObj(page);
+ /* begin storePointer:ofObjStack:withValue: */
+ assert((formatOf(stackOrNil)) == (wordIndexableFormat()));
+ null;
+ longAtput((stackOrNil + (BaseHeaderSize)) + (ObjStackFreex << 2), field);
+ stackOrNil = field;
+ }
  }
+ if (((stackOrNil = longAt((firstPage + (BaseHeaderSize)) + (ObjStackNextx << 2)))) != 0) {
+ while (1) {
+ page = longAt((stackOrNil + (BaseHeaderSize)) + (ObjStackNextx << 2));
+ if (!(page != 0)) break;
+ field = swizzleObj(page);
+ /* begin storePointer:ofObjStack:withValue: */
+ assert((formatOf(stackOrNil)) == (wordIndexableFormat()));
+ null;
+ longAtput((stackOrNil + (BaseHeaderSize)) + (ObjStackNextx << 2), field);
+ stackOrNil = field;
+ }
+ }
  assert(isValidObjStackAt(objStackRootIndex));
  return longAt((GIV(hiddenRootsObj) + (BaseHeaderSize)) + (objStackRootIndex << 2));
 }

Modified: branches/Cog/spurstacksrc/vm/interp.c
===================================================================
--- branches/Cog/spurstacksrc/vm/interp.c 2013-12-12 00:38:39 UTC (rev 2831)
+++ branches/Cog/spurstacksrc/vm/interp.c 2013-12-12 22:53:13 UTC (rev 2832)
@@ -1,9 +1,9 @@
 /* Automatically generated by
- CCodeGeneratorGlobalStructure VMMaker.oscog-eem.560 uuid: db9cf7fa-a7d7-4b48-9e9d-32c8d43e330f
+ CCodeGeneratorGlobalStructure VMMaker.oscog-eem.561 uuid: 13467880-93b9-4137-9bbc-7ebfd22436ab
    from
- StackInterpreter VMMaker.oscog-eem.560 uuid: db9cf7fa-a7d7-4b48-9e9d-32c8d43e330f
+ StackInterpreter VMMaker.oscog-eem.561 uuid: 13467880-93b9-4137-9bbc-7ebfd22436ab
  */
-static char __buildInfo[] = "StackInterpreter VMMaker.oscog-eem.560 uuid: db9cf7fa-a7d7-4b48-9e9d-32c8d43e330f " __DATE__ ;
+static char __buildInfo[] = "StackInterpreter VMMaker.oscog-eem.561 uuid: 13467880-93b9-4137-9bbc-7ebfd22436ab " __DATE__ ;
 char *__interpBuildInfo = __buildInfo;
 
 
@@ -1240,6 +1240,7 @@
 _iss sqInt numStackPages;
 _iss sqInt tempOop;
 _iss sqLong nextProfileTick;
+_iss char * objStackInvalidBecause;
 _iss SpurNewSpaceSpace eden;
 _iss sqInt profileProcess;
 _iss sqInt tenureThreshold;
@@ -1247,7 +1248,7 @@
 _iss sqInt needGCFlag;
 _iss sqInt numPages;
 _iss sqInt extraRootCount;
-_iss char * objStackInvalidBecause;
+_iss sqInt invalidObjStackPage;
 _iss sqInt previousRememberedSetSize;
 _iss unsigned char * classTableBitmap;
 _iss sqInt longRunningPrimitiveCheckMethod;
@@ -1256,7 +1257,6 @@
 _iss sqInt lastMethodCacheProbeWrite;
 _iss sqInt profileMethod;
 _iss sqInt growHeadroom;
-_iss sqInt invalidObjStackPage;
 _iss usqLong nextWakeupUsecs;
 _iss sqInt preemptionYields;
 _iss sqInt profileSemaphore;
@@ -1952,7 +1952,7 @@
  0 };
 char * breakSelector;
 sqInt breakSelectorLength = -1;
-const char *interpreterVersion = "Croquet Closure Stack VM [StackInterpreter VMMaker.oscog-eem.560]";
+const char *interpreterVersion = "Croquet Closure Stack VM [StackInterpreter VMMaker.oscog-eem.561]";
 volatile int sendTrace;
 sqInt suppressHeartbeatFlag;
 
@@ -12049,9 +12049,8 @@
 void *
 arrayValueOf(sqInt arrayOop)
 {   DECL_MAYBE_SQ_GLOBAL_STRUCT
- if (((arrayOop & 1) == 0)
- && (((arrayOop & 3) == 0)
- && (((((usqInt) (longAt(arrayOop))) >> 24) & 0x1F) > 5))) {
+ if (((arrayOop & 3) == 0)
+ && (((((usqInt) (longAt(arrayOop))) >> 24) & 0x1F) > 5)) {
  return ((void *) (pointerForOop(arrayOop + BaseHeaderSize)));
  }
  /* begin primitiveFail */
@@ -18773,9 +18772,8 @@
 
  arrayOop = longAt((objectPointer + (BaseHeaderSize)) + (fieldIndex << 2));
  /* begin arrayValueOf: */
- if (((arrayOop & 1) == 0)
- && (((arrayOop & 3) == 0)
- && (((((usqInt) (longAt(arrayOop))) >> 24) & 0x1F) > 5))) {
+ if (((arrayOop & 3) == 0)
+ && (((((usqInt) (longAt(arrayOop))) >> 24) & 0x1F) > 5)) {
  return ((void *) (pointerForOop(arrayOop + BaseHeaderSize)));
  }
  /* begin primitiveFail */
@@ -23930,6 +23928,7 @@
     sqInt freeOrNextPage;
     sqInt index;
     char *ns;
+    sqInt page;
 
  if (!(isValidObjStackPagemyIndex(objStackPage, myx))) {
  return 0;
@@ -23941,6 +23940,11 @@
  GIV(invalidObjStackPage) = objStackPage;
  return 0;
  }
+ if (freeOrNextPage == (longAt((objStackPage + (BaseHeaderSize)) + (ObjStackNextx << 2)))) {
+ GIV(objStackInvalidBecause) = "free page = next page";
+ GIV(invalidObjStackPage) = freeOrNextPage;
+ return 0;
+ }
  if (!(isValidObjStackPagemyIndex(freeOrNextPage, myx))) {
  ns = malloc(((strlen(GIV(objStackInvalidBecause))) + (strlen(", on next page"))) + 2);
  strcpy(ns, GIV(objStackInvalidBecause));
@@ -23948,7 +23952,14 @@
 
  return 0;
  }
- freeOrNextPage = longAt((freeOrNextPage + (BaseHeaderSize)) + (ObjStackFreex << 2));
+ page = longAt((freeOrNextPage + (BaseHeaderSize)) + (ObjStackFreex << 2));
+ if ((page == freeOrNextPage)
+ || (page == objStackPage)) {
+ GIV(objStackInvalidBecause) = "circularity in free page list";
+ GIV(invalidObjStackPage) = page;
+ return 0;
+ }
+ freeOrNextPage = page;
  }
  if (isFirstPage) {
  if (!(((myx >= (1 << (22 - 10))) && (myx <= (((1 << (22 - 10)) + 8) - 1))))) {
@@ -23969,8 +23980,15 @@
  return 0;
  }
  freeOrNextPage = longAt((objStackPage + (BaseHeaderSize)) + (ObjStackNextx << 2));
- return (freeOrNextPage == 0)
- || (isValidObjStackPagemyIndexfirstPage(freeOrNextPage, myx, 0));
+ if (freeOrNextPage == 0) {
+ return 1;
+ }
+ if (freeOrNextPage == objStackPage) {
+ GIV(objStackInvalidBecause) = "circularity in objStack page list";
+ GIV(invalidObjStackPage) = objStackPage;
+ return 0;
+ }
+ return isValidObjStackPagemyIndexfirstPage(freeOrNextPage, myx, 0);
 }
 
 
@@ -46351,6 +46369,7 @@
     sqInt isFirstPage;
     sqInt isFreePage;
     sqInt isNextPage;
+    sqInt page;
 
  isFirstPage = pageType == ObjStackMyx;
  isNextPage = pageType == ObjStackNextx;
@@ -46376,10 +46395,20 @@
  /* begin cr */
  printf("\n");
  }
- freeOrNextPage = longAt((objStackPage + (BaseHeaderSize)) + (ObjStackFreex << 2));
- while (freeOrNextPage != 0) {
- printObjStackPagemyIndexpageType(freeOrNextPage, myx, ObjStackFreex);
- freeOrNextPage = longAt((freeOrNextPage + (BaseHeaderSize)) + (ObjStackFreex << 2));
+ if (isFirstPage) {
+ freeOrNextPage = longAt((objStackPage + (BaseHeaderSize)) + (ObjStackFreex << 2));
+ while (freeOrNextPage != 0) {
+ printObjStackPagemyIndexpageType(freeOrNextPage, myx, ObjStackFreex);
+ page = longAt((freeOrNextPage + (BaseHeaderSize)) + (ObjStackFreex << 2));
+ if ((page == freeOrNextPage)
+ || (page == objStackPage)) {
+ print("circularity in free page list!!");
+ /* begin cr */
+ printf("\n");
+ page = 0;
+ }
+ freeOrNextPage = page;
+ }
  }
  freeOrNextPage = longAt((objStackPage + (BaseHeaderSize)) + (ObjStackNextx << 2));
  if (freeOrNextPage != 0) {
@@ -52341,6 +52370,7 @@
     sqInt field;
     sqInt firstPage;
     sqInt index;
+    sqInt page;
     sqInt stackOrNil;
 
  firstPage = (stackOrNil = longAt((GIV(hiddenRootsObj) + (BaseHeaderSize)) + (objStackRootIndex << 2)));
@@ -52362,20 +52392,34 @@
  /* begin storePointer:ofObjStack:withValue: */
  assert((formatOf(stackOrNil)) == (wordIndexableFormat()));
  null;
- longAtput((stackOrNil + (BaseHeaderSize)) + (ObjStackNextx << 2), field);
+ longAtput((stackOrNil + (BaseHeaderSize)) + (index << 2), field);
  }
  } while(((index -= 1)) > ObjStackMyx);
  } while(((stackOrNil = field)) != 0);
- while (1) {
- stackOrNil = longAt((firstPage + (BaseHeaderSize)) + (ObjStackFreex << 2));

@@ Diff output truncated at 50000 characters. @@